python基础(九):函数 局部变量和全局变量

  • 局部变量:在函数中声明,在其他地方不可用、
  • 全局变量:在外部声明,所有函数都可以用。

可变类型的全局变量:

  • 对于不可变类型的全局变量来说,要在函数中修改需要global声明。
  • 对于可变类型的全局变量来说,要在函数中修改可以不使用global声明。

即,当全局变量是string, int,tuple等不可变数据类型时,在函数重新定义赋值时要用global进行声明;当全局变量是list和dict等可变类型时,不用global声明也可以。

例1(不可变类型):

def test():
    a = 2
    print(a)
    print(id(a))
a = 1
test()
print(a)
print(id(a))

'''输出:
2
140734691578720
1
140734691578688
'''

外部的a和内部的a不是一个值。id()代表地址,显然,两个a的地址也不同。

我们在函数内部global声明:

def test():
    global a
    a = 2
    print(a)
    print(id(a))
a = 1
test()
print(a)
print(id(a))

'''
输出:
2
140734691578720
2
140734691578720
'''

global声明后,内外a是一致的,地址也是一样的。

例2(可变类型):

def test(a):
    a[0] = 2
    print(a)
    print(id(a))
a = [1, 1]
test(a)
print(a)
print(id(a))
'''
输出:
[2, 1]
3127152186056
[2, 1]
3127152186056
'''

列表a的值和地址都完全一样。

猜你喜欢

转载自blog.csdn.net/qq_26271435/article/details/89711572