位置参数:通过位置来体现实参和形参的对应关系
关键字参数:形式“形参=实参”
位置参数和关键字参数可以混用,位置参数在前,关键字参数在后
不定长参数:调用函数时可以接收任意数量的参数,实参传递时会封装成元组(位置参数)或字典(关键字参数)的形式。
拆分参数列表:如果函数所需参数已经存储在列表、元组或字典中,则可以直接从列表、元组或字典中拆分出来函数所需的参数;列表、元组拆分出来的作为位置参数,字典拆分出的作为关键字参数
对于在多个程序中可以复用的共功能,可以将其放在单独的脚本文件中,方便多个程序引用、共享;我们需要按照代码功能不同,将代码分类放入不同的脚本文件,这些脚本文件称为模块(Module)
全局变量__name__和系统模块
每个模块中都有一个全局变量__name__
__name__的作用是获取当前模块的名称,如果当前模块是单独执行的,则__name__的值就是__main__;如果作为模块导入,则__name__的值就是模块的名称
可以直接导入系统提供的模块,使用其中的功能
例:通过sys模块获取运行python脚本时传入的参数
猴子补丁主要用在不修改现有功能的前提下提供新功能的支持
例:使用部分三方模块,某些方法无法满足需求,此时可在不修改这些方法的情况下,利用猴子补丁编写自己的新方法进行代替,实现需求。
变量的作用域指变量的作用范围,即变量定义后,哪些地方可用;
局部变量:一个函数中定义的变量(包括形参),作用域从定义局部变量的位置到函数结束。
全局变量:所有函数外定义的变量,其在所有函数中可用;
在函数中使用global关键字,可以声明该函数中使用的是全局变量;
python中,一个函数体中可以包含另一个函数体,通过nonlocal关键字,可以使内层的函数直接使用外层函数定义的变量;
递归函数:在一个函数内部通过调用自己完成问题求解
问题规模较大时,递归调用会涉及多层函数调用,一方面会由于栈操作影响程序运行速度,另一方面python中有栈的限制,太多层的函数调用会引起栈溢出问题。
高阶函数:把函数作为参数的一种函数
函数不仅可以赋给形参,也可赋给普通变量,赋值后可用变量名代替函数名完成函数调用
lambda函数:匿名函数,一种不使用def定义函数的形式。
闭包:函数嵌套时,内层函数使用外层函数定义的局部变量,并且外层函数的返回值是内层函数的引用,就构成了闭包;
定义在外层函数中但由内层函数使用的变量称为自由变量
所谓闭包,就是将自由变量和内层函数代码打包在一起
装饰器:利用装饰器可以在不修改已有函数的情况下向已有函数注入代码,使其具备新的功能;
一个装饰器可以为多个函数注入代码,一个函数也可以引入多个装饰器的代码;
利用装饰器可以将日志处理、执行时间计算等较为通用的代码注入到不同的函数中,从而是得代码更加简洁。
当函数名带有小括号时,表示调用该函数
如果函数名不带小括号,表示一个指向函数块的对象,此时表示函数的引用
<来源网络汇总>