函数的作用域
一、局部变量和全局变量
1, 全局变量:函数外部定义的变量,直接定义在python文件(模块)
全局变量整个文件内容任何地方都可以使用
2, 局部变量:在函数内部定义的变量叫做局部变量,仅限于改函数内部使用
name = "小布偶" #全局变量,任何地方都可以使用
def add(a, b):
d = 1 # d是局部变量,只可以函数内部使用
c = a + b + d # 函数内部使用局部变量d
print("调用", name) # 函数内部调用全局变量name
return c
res = add(11, 22)
print(res)
a = name #函数外部调用全局变量
print(a)
输出结果如下:
调用 小布偶
34
小布偶
#a = d +1 #如果在函数外部调用局部变量d就会报错
3 ,如果想要在函数内部定义或者修改全局变量怎么办?
因为全局变量在函数内部可以使用,但是不能修改,若想在函数内部定义或者修改全局变量,需要用global来声明为全局变量。
number = 100
def func():
global number #声明 number为全局变量,就可以对number进行修改了
number = number + 100
func()
print(number)
输出结果如下:
200
如果把global的声明去掉的话,number值就无法修改,代码会报错;另外如果想声明多个变量的话,可以在global后面跟上多个变量名,变量之间用逗号隔开。
4,函数内部变量引起的优先级问题
如果函数中的局部变量和全局变量同名,在函数内部使用这个变量的时候,会优先使用局部变量(函数中使用变量的时候,会优先使用局部变量)
注意点:函数内部定义局部变量时,尽量不要和全局变量同名
n = 100
def func():
n = 9999
print(n)
func()
输出结果如下:
9999
二、函数的返回值
函数的返回值:关键字return来实现
1 函数中没有return,默认调用后的返回值为None
2 return后面跟一个值:返回object
3 return后面跟多个值 : 返回tuple
4 当函数执行到return之后,就会结束函数的运行
5 return 后的值可以是任意类型数据
例子
--------- 函数没有return -------------
def add(a, b):
c = a + b
print(c)
res1 = add(11, 22)
print("add调用之后返回的结果:", res1)
输出结果如下:
33
add调用之后返回的结果: None
--------- return后面只有一个数据 -------------
返回object
def add(a, b):
c = a + b
return c
res2 = add(11, 22)
print("add调用之后返回的结果:", res2)
输出结果如下:
add调用之后返回的结果: 33
-------------return后面有多个数据--------------------
返回tuple
def add(a, b):
c