1 分类
形参 单纯变量 实参 负有实际值的变量 传参 传递变量的过程2 注意
1 如果函数只有形参没有实参,那么在调用函数时必须初始化值 2 1 按照变量顺序赋值 2 按照变量名复制 3 先按照变量顺序,再根据变量名复制 eg def a(aa,bb) a(aa='12',bb='12') 3 动态参数 动态参数的出现是在于实参初始化值的数量是不固定的,不能限制数量 1 都可以为空 2 可以和形参和实参共存*args(元组) **kwargs(字典)
def a(*food) a('1','2','23') //返回元组 def a(**food) a(1='23',2='232') //返回字典 a(**kwargs)4 对于列表的传参,可以进行传参,然后return对象,这个对象和原列表是一个东西
5 默认值如果是可变类型,每次使用的都是同一个
6 注意事项
1 形式 形参->动态参数->实参——>关键字参数 这种方式调用,一定要保证这种顺序,否则会出问题 四 变量名称空间 全局变量 1 声明在函数外,会持续到整个程序执行结束 2 全局变量作用于全局 3 查看函数globals() 局部变量 1 声明在函数内,会在函数执行完结束进行清除 2 全局变量作用于局部变量也只是暂时改变 3查看函数locals() 内置变量1 局部变量如果想要调用全局变量 必须在函数进行global再次声明,否则函数是无法寻找定位的 (局部变量调用全局变量)
2 如果在声明情况下调用全局变量,对全局变量的更改也是全局的这点要牢记
3 函数内嵌套也是寻找定位的函数局部变量,没有任何问题,不用再次声明为局部变量(函数内嵌调用前一层局部变量)
4 函数内嵌套如果想实现变量运算,必须采用nolocal进行声明,而且即便修改也不会影响上一层嵌套函数的值,各自拥有各自的
eg
a= 5def func():
global a:
a=a+1
def func1()
nolocal a
a=a+1
print a
func1()
print a
func()
五 打散特性
1 目的 将列表 元组打散传入实参 2 把 列表 字符串 元组 打散 3 调用 函数形式 a(*实参) 把字典打散 调用函数形式 a(**实参)六 注释 function.__doc__ 文档函数 输出 注释 注释 单行注释 多行注释 函数注释