1.实参、默认参数和函数内参数赋值
def fun(var=1314):
print(var)
a=fun(520)
print(a)
520
None #Python所有的函数都有返回值,如果没有return语句指定返回值,Ta会返回一个None对象
def fun(var=1314):
var=6666
print(var)
return var
a=fun(520)
print(a)
6666
6666
2.嵌套函数和闭包
#第一种方法
def funOut():
def funIn():
print('宾果!你成功访问到我啦!')
return funIn()
funOut()
宾果!你成功访问到我啦!
#第二种方法
def funOut():
def funIn():
print('宾果!你成功访问到我啦!')
return funIn
funOut()()
宾果!你成功访问到我啦!
go = funOut()
go()
宾果!你成功访问到我啦!
不同之处:
def funX():
x = 5
def funY():
nonlocal x
x += 1
print(x )
return x
return funY()
a = funX()
print("第一次:",a)
print("第二次:",a)
6
第一次:6
第二次:6
def funX():
x = 5
def funY():
nonlocal x
x += 1
print(x )
return x
return funY
a = funX()
print("第一次:",a())
print("第二次:",a())
6
第一次: 6
7
第二次: 7
3.生成器是一个特殊的函数,需要在普通的函数加上一个 yield 语句
- 调用可以中断、可以暂停,暂停之后他把控制权临时交出来,然后交完之后,在需要的时候他又能够获取回来,重新获得控制权,从上一次暂停的时候继续下去。
>>> def myGen():
print("生成器被执行!")
yield 1
yield 2
>>> myG = myGen()
>>> next(myG)
生成器被执行!
1
>>> next(myG)
2
>>> next(myG)
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
next(myG)
StopIteration