变量
局部变量
- 函数内部定义的变量叫做局部变量
- 不同函数之间,局部变量可以定义形同的名字,互不影响
作用范围:
函数内有效,其他函数不能直接使用
例如,
def set_name():
name = "云端之上"
print(name)
def get_name():
name = "星空之下"
print(name)
set_name()
get_name()
运行结果:
云端之上
星空之下
通过上述例子,我们可以发现:
1. 不同函数之间,局部变量可以定义相同的名字,互不影响
2. 上述函数中的name只在上个函数体内生效,其他函数内不生效
那么,如果我想在get_name中使用set_name中的name怎么办呢?
别急,我们可以使用下面的方法:
def set_name():
name = "云端之上"
return name #1.返回name
def get_name(name): #3.需要set_name中名字,所以定义参数
print(name)
a = set_name() #2.调用函数返回一个值
get_name(a)
运行结果:
云端之上
全局变量
定义在函数外部的变量就叫做全局变量.
作用范围:
可在不同的函数中使用
在函数内使用global关键字实现修改全局变量的值
在函数体外定义的全局变量:
name = "星空之下"
def set_name():
print(name)
def get_name():
print(name)
set_name()
get_name()
print(name)
运行结果:
星空之下
星空之下
星空之下
在函数体内定义的全局变量
age = 20
def chang_age():
global age #我们只需添加关键字glabal+变量名就可以,注意:列表和字典不可以用哦~
age = 25
print("函数体内的age是:%d"%age)
chang_age()
print(age)
运行结果:
函数体内的age是:25
25
那么如果我们的变量是字典或列表,我们应该如何去修改全局变量呢?很简单,我们只需要在使用前先调用一下函数,然后再进行操作就可以了!
g_list =[1,2,3]
g_dict = {"name":"马云","age":666}
def update_info():
g_list.append(4)
g_dict["monery"] = "¥1"
update_info()
print(g_list)
print(g_dict)
运行结果:
[1, 2, 3, 4]
{'name': '马云', 'age': 666, 'monery': '¥1'}
注意:
函数体外:局部变量
函数体外: 全局变量
全局变量在所有函数中使用
局部变量只能在所定义的函数中使用
如果在函数体内修改全局变量的值,使用 global 关键字
如果函数体内变量和全局变量相同,则判定它为和全局变量同名的局部变量
全局变量定义的位置:
函数定义之前或函数调用之前.