python学习笔记4:变量作用域

变量作用域

  • 变量由作用范围限制
  • 分类:按照作用域分类
    • 全局(global): 在函数外部定义
    • 局部(local):在函数内部定义
  • 变量的作用范围:
    • 全局变量:在整个全局范围都有效
    • 全局变量在局部可以使用(即函数内部可以访问函数外部定义的变量)使用方法: global
    • 局部变量在局部范围可以使用
    • 局部变量在全局范围无法使用
  • LEGB原则
    • L(Local)局部作用域
    • E(Enclosing function locale)外部嵌套函数作用域
    • G(Global module)函数定义所在模块作用域
    • B(Buildin): python内置模块的作用域
# 认为a1是全局的
a1 = 100
def fun():
    global a1
    a1 = 300
    print(a1)
    print("I am in fun")
    # a2的作用范围是fun
    a2 = 99
    print(a2)    
print(a1)
fun()
  • 可以通过内建函数:globals()和locals()显示出局部变量和全局变量

eval()函数

  • 把一个字符串当成一个表达式来执行, 返回表达式执行后的结果
  • 语法:

        eval(string_code, globals=None, locals=None)

exec()函数

  • 跟eval功能类似, 但是,不返回结果
  • 语法:

    exec(string_code, globals=None, locals=None)
x = 100
y = 200
z1 = x + y
z2 = eval("x+y")
print(z1)
print(z2)
c =eval("print(x,y)")