局部变量:
在函数内部声明的变量,只能在该函数范围内使用
举例:
def test():
a=10#局部变量
print(a)
test()
print(a)#函数体外使用局部变量a
在多个函数里面,可以声明同名的局部变量,彼此之间不受影响。
局部变量的作用:给我们临时保存数据
全局变量:
在函数外部声明的变量,在所有函数中都可以使用,但必须在所有函数的上方进行声明。
举例:
a=100#a为全局变量
def test():
print(a)
test()
def test1():
b=9
print(a+b)
test1()
100
109
当全局变量和局部变量同名时,首先编译器会先在局部找,再到全局找,如果两者都没找到,则会报错。
举例:
a=100
def test():
print(a)
test()
def test1():
a=9
print(a)
test1()
print(a)
100#局部没有该变量,则在全局范围内进行查找
9#含有和全局变量相同的局部变量,输出局部变量
100
那么局部变量和全局变量到底有什么区别?
本质区别:变量的作用域不同。
在函数内部声明的变量—>局部变量:只能作用于当前这个函数
在函数外部声明的变量—>全局变量:可以在所有函数里面使用
在函数内部修改全局变量的值:
使用global关键字进行声明,告诉python,global后面的变量将是全局变量,再使用赋值语句时,就不会创建局部变量。
举例:
x = 11
def test():
global x#在函数内部修改了全局变量x的值
x = 66
print(x)
def test1():
print(x)
test()
test1()
66
66
函数使用外层的变量:
使用nonlocal进行声明,注意,该变量既不是全局变量也不是局部变量,而是外部嵌套函数内的变量。
举例:
def test():
num = 2
def test1():
nonlocal num#使用test1函数外的变量
num *= 2
print(num)
test1()
test()
4
可变类型的全局变量:
字典,列表,集合(变量值改变,地址不变)
以列表举例:
li = []
print(id(li))
def test():
global li
li.append(88)
print(li)
test()
print(li)
print(id(li))
1938324195904#变量的地址并没有发生变化
[88]
[88]
1938324195904
以字典举例:
dict ={}
print(id(dict))
def test():
global dict
dict["name"]="dog"
print(dict)
test()
print(dict)
print(id(dict))
2292008286848
{'name': 'dog'}
{'name': 'dog'}
2292008286848
以集合举例:
set1 =set()
print(id(set1))
def test():
global set1
set1.add(1)
print(set1)
test()
print(set1)
print(id(set1))
2000811991552
{1}
{1}
2000811991552
不可变类型的全局变量:
数字,元组,字符串(变量值改变,地址会改变)
以数字类型举例:
a = 0
print(id(a))
def test():
global a
a = 4
print(a)
test()
print(a)
print(id(a))
140731653887616
4
4
140731653887744
以元组类型举例:
tuple1=()
tuple2=(1,2,3)
print(id(tuple1))
def test():
global tuple1
tuple1+=tuple2#(元组不可以直接添加元素,但我们可以用拼接的方式)
print(tuple1)
test()
print(tuple1)
print(id(tuple1))
2992034349120
(1, 2, 3)
(1, 2, 3)
2992040085056
以字符串为例:
string1="hello "
string2="python"
print(id(string1))
def test():
global string1
string1+=string2#(字符串不可以直接添加元素,但我们可以用拼接的方式)
print(string1)
test()
print(string1)
print(id(string1))
3091362679152
hello python
hello python
3091367364016
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81497.html