函数特征:
1、可重复利用,减少重复代码
2、可扩展性
3、保持一致性,易维护
函数语法:def functionname(x):
"函数的注释" # 每个函数建议第一行都要写注释,方便阅读
x += 1
return x # 正常函数都应该返回值,如果不写return,函数返回None
函数的参数分为实参和形参。
实参和形参区别:
1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
如下图所示
参数注意:
1、参数必须一一对应,缺一不可。
2、传入参数时,不可以重复传入多个相同参数,否者函数报错。
3、位置参数必须在关键字参数左边,关键字参数只能在位置参数右边。
4、*args参数,最后传入的是元组。如果函数同时存在*args和*kwargs参数时,*args参数值,必须放在位置函数和*kwargs参数值的中间。
5、*kwargs参数,最后传入的是字典
位置参数和关键字参数区别:
1、位置参数赋值必须按照函数参数位置赋值。def index(x, y, z):
return x, y, z
print(index(1, 2, 3))
(1, 2, 3)
2、关键字参数可以不用按照函数参数位置赋值def index(x, y, z):
return x, y, z
print(index(z=3, x=1, y=2))
(1, 2, 3)
return语句注意:
1、函数执行到return语句,马上结束运行
2、如果函数没有return语句,函数返回None值
3、如果返回的值是多个值,函数返回数据类型是元组
全局变量globals()和局部变量nonlocal()注意:
1、使用全局变量和局部变量时,必须遵循以下格式:globals() 变量名
nonlocal(0 变量名
2、全局变量可以在函数任意一层使用。
3、局部变量使用至少要在函数第二层中,且函数第一层有该变量值。如下图所示:x = 1
def a():
x = 2
print(x)
def b():
nonlocal x
x = 3
print(x)
print(b())
print(a())