函数的参数
位置参数
>>> def myfunc(s,vt,o): ------------------位置固定的参数
return"".join((o,vt,s))
>>> myfunc("我","打了","小甲鱼")
'小甲鱼打了我'
>>> myfunc("小甲鱼","打了","我")
'我打了小甲鱼'
>>> myfunc(o="我",vt="打了",s="小甲鱼") ------关键字参数
'我打了小甲鱼'
>>> def myfunc(s,vt,o="小甲鱼"): ----------默认参数 (要放在后面)
return"".join((o,vt,s))
>>> myfunc("香蕉","吃")
'小甲鱼吃香蕉'
>>> def myfunc(s,vt="吃了",o="小甲鱼"):
return"".join((o,vt,s))
>>> myfunc("苹果")
'小甲鱼吃了苹果'
>>> args=(1,2,3,4)
>>> def myfunc(a,b,c,d):
print(a,b,c,d)
>>> myfunc(*args) -----------解包参数 两个星号解包关键字参数
1 2 3 4
作用域 指一个变量被访问的范围
局部作用域
>>> def myfunc():
x= 520
print(x)
>>> myfunc() x是在函数myfunc中定义的 所以它的作用域仅限于该函数
520
全局作用域 如果是在任何函数的外部去定义一个变量 那么它的作用域就是全局的
>>> x=880
>>> def myfunc():
print(x)
>>> myfunc()
880
global 语句 可以修改局部变量
>>> def funA():
x=520
def funB():
x=880
print("in funB ,x=",x)
funB()
print("in funA,x=",x)
>>> funA()
in funB ,x= 880
in funA,x= 520 -------- 嵌套函数
>>> def funA():
x=520
def funB():
nonlocal x ------- 在内部修改外部函数作用域的值
x=880
print("in funB ,x=",x)
funB()
print("in funA,x=",x)
>>> funA()
in funB ,x= 880
in funA,x= 880
LEGB 规则
闭包
>>> def power(exp):
def exp_of(base):
return base ** exp
return exp_of
>>> square= power(2)
>>> cube= power(3)
>>> square(2)
4
>>> square(5)
25
>>> cube(2)
8
>>> cube(3)
27