python函数内访问全局变量

概述

本文介绍在函数内访问全局变量

1. 在函数中,访问全局变量

可以 访问 任意类型 的 全局变量

i=1
f=3.14
b=True
s='python'
l=[1,2]
t=('测试','tuple')
d={'name':'李雷'}
se={'李雷','韩梅梅'}

def fun():
    print(i)
    print(f)
    print(b)
    print(s)
    print(l)
    print(t)
    print(d)
    print(se)

2. 在函数中,给 全局变量 赋值(无global)

在函数中,给 全局变量 赋值,其本质是在 函数中 定义 局部变量,该 局部变量 与 全局变量 同名

i=1
f=3.14
b=True
s='python'
l=[1,2]
t=('测试','tuple')
d={'name':'李雷'}
se={'李雷','韩梅梅'}

def fun():
    i=100
    f=3.1415926
    b=False
    s='hello'
    l=[1,2,3,4,5]
    t=('测试','tuple','python')
    d={'name':'李雷','sex':'男'}
    se={'李雷','韩梅梅','lucy'}

fun()
print(i)
print(f)
print(b)
print(s)
print(l)
print(t)
print(d)
print(se)

执行结果如下:

1
3.14
True
python
[1, 2]
('测试', 'tuple')
{'name': '李雷'}
{'李雷', '韩梅梅'}

可知,在函数内,无法给全局变量赋值

3. 在函数中,给 全局变量 赋值(有global)

在函数中,要给 全局变量 赋值,需要在 函数的开始处 用 global关键字声明变量,表示该变量是全局变量,然后再赋值

i=1
f=3.14
b=True
s='python'
l=[1,2]
t=('测试','tuple')
d={'name':'李雷'}
se={'李雷','韩梅梅'}

def fun():
    global i,f,b,s,l,t,d,se
    i=100
    f=3.1415926
    b=False
    s='hello'
    l=[1,2,3,4,5]
    t=('测试','tuple','python')
    d={'name':'李雷','sex':'男'}
    se={'李雷','韩梅梅','lucy'}

fun()
print(i)
print(f)
print(b)
print(s)
print(l)
print(t)
print(d)
print(se)

执行结果如下:

100
3.1415926
False
hello
[1, 2, 3, 4, 5]
('测试', 'tuple', 'python')
{'name': '李雷', 'sex': '男'}
{'韩梅梅', '李雷', 'lucy'}

可知,在函数中通过global关键字声明后,可以赋值

4. 在函数中,改变 可变数据类型 的全局变量 的 内容

在函数中,可以 改变 可变数据类型(list、set、dict) 的全局变量 的 内容

注意: 不是 重新 赋值

l=[1,2]
d={'name':'李雷'}
se={'李雷','韩梅梅'}
def fun():
    l.append(3)
    d['age']=20
    se.add('lucy')

fun()
print('全局l:',l)
print('全局d:',d)
print('全局se:',se)

原文出处:/show_1EF3dgATJu3F.html