返回值
def f():
return 1
def f1():
return 1,2,3
print(f())
# 1
print(f1())
# (1, 2, 3)
python 里的返回值可以是一个或者多个,如果是多个就会把返回值包成一个元组然后返回。
def f1():
return 1,2,3
a,b,c = f1()
print(a,b,c)
# 1 2 3
多个返回值的函数也可以进行赋值,赋值的过程就是把返回值的元组拆开,分别进行赋值。要注意的是,赋值的元素和返回的元素数目必须匹配。
global:变量的范围问题
name = "11111"
def f1():
name = "22222"
print(name)
def f2():
name += "33333"
print(name)
f1()
# 22222
f2()
# UnboundLocalError: local variable 'name' referenced before assignment
首先,在这段代码中说明了全局变量与局部变量的关系,如果在函数中调用全局变量与局部变量同名的变量,程序会先在局部变量的范围内寻找,如果没有再去全局变量的范围寻找。
其次,试图在局部变量的范围中修改name,会报错。
在python中,全局变量只能在函数中获取,但是不能修改,如果想在函数中修改全局变量就要引入 global 。
name = "11111"
def f1():
name = "22222"
def f2():
global name
name = "33333"
f1()
print(name)
# 11111
f2()
print(name)
# 33333
函数f1中的name只是在f1范围内的变量,只有用global声明之后才表示全局的name,并且这个name必须是已经定义的。
要注意的是使用global的时候不能像声明变量那样顺便赋值。一定要在声明之后另起一行再进行赋值。