函数返回值与作用域
函数返回值
有函数如下:
def my_calc(x, y):
res = x**y
print(res)
my_calc(2,5)
输出结果:32
函数可以得到我们想要的结果,并打印了。但是问题来了,我们如果想要得到并能使用这个结果,这种方式肯定不行。这个时候就需要用到返回返回值。
使用return语句就可以达到这个目的,后续的计算判断就可以直接使用data
def my_calc(x, y):
res = x**y
return res
data = my_calc(2,5)
print(data)
补充:
- 函数在执行中遇到return语句,就会停止执行并返回结果
- 可以理解为 return 语句代表着函数的结束,return语句后面的语句不会被执行
- 如果未在函数中指定return,那这个函数的返回值为None
作用域
全局变量与局部变量
name = "第一个名字"
def my_print():
name = "第二个名字"
print(name)
my_print()
print(name)
执行结果:
第二个名字
第一个名字
为什么在函数内部改了name的值后, 在函数内部改变了 ,在外面print的时候却没有改呢?
因为这两个name根本不是一回事
第一个name是全局变量,在函数内的name是局部变量
- 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
- 全局变量作用域(即有效范围)是整个程序,局部变量作用域是定义该变量的函数。
- 变量的查找顺序是局部变量>全局变量
- 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用。
- 在函数里是不能直接修改全局变量的
就是想在函数里修改全局变量怎么办?
name = "第一个名字"
def my_print():
global name
name = "第二个名字"
print(name)
my_print()
print(name)
执行结果:
第二个名字
第二个名字
- global name 的作用就是要在函数里声明这个name 就是全局变量那个name
- 不推荐这种方式在函数体内部 修改全局变量