def hello():
print('abcd')
temp=hello()
abcd
temp
print(temp) #虽然hello()没有标明返回值,但是会默认返回一个None对象
None
type(temp)
<class 'NoneType'>
def back():
return [2,'aaa',456] #通过列表返回多个不同类型的值
back()
[2,'aaa',456]
def back():
return 2,'aaa',456 #不加括号会返回一个元组
back()
(2,'aaa',456)
变量作用域
局部变量:函数内部
全局变量:所有函数外部
函数内部可以访问和修改全局变量的值,修改时会新建一个和全局变量名字一样的局部变量,但是不会改变函数外部全局变量的值。所以尽量不要在函数中修改全局变量的值,如果一定要修改:使用global或nonlocal关键字。
count=8
def test():
global count #如果一定要修改,在函数内部使用global关键字重新定义这个全局变量
count = 10
print(5)
test()
5
print(count)
10
内嵌函数
func2是在func1里面被定义和调用的,直接调用func2会出错。
def func1():
print('aaa')
def func2(): #注意这里的缩进
print('bbb')
func2()
func1()
aaa
bbb
闭包closure
两个条件:内部函数;引用了外部函数的变量
def funX(x):
def funY(y): #funY就是一个闭包
return x*y
return funY
i=funX(8) #这里的i是一个函数类型的值
i(5) #如果给i一个参数就会得到8*5=40
40
funX(8)(5) #也可以直接调用funX依次给两个参数
40
funY(5) #但依旧不可以直接调用funY
注:本文章是根据小甲鱼的学习视频所写的笔记,侵删。