变量名解析legb原则
- 变量名引用分为三个作用域进行查找:首先是本地,其次是函数内,之后是全局,最后是内置
- 在默认情况下,变量名赋值会创建或者改变本地变量
- 全局声明和非本地声明将赋值的变量名映射到模块文件内部的作用域
def a(x,y):
return x*y*g
g = 2
z=a(2,3)
x=a('abc',3) # g虽然在函数外边,但是由于它是在函数外定义的所以可以使用,另外:如果g在函数调用以后命名则会报错
legb原则可能带来的风险
使用内置作用域函数的时候,可能会被本地重新定义的函数覆盖
f = open(r'F:\a.txt')
l = f.read()
print (l)
def open(s):
print (s)
open(r'F:\a.txt')
# 121313
# F:\a.txt
global
global声明的变量可以在函数执行完毕后在外层使用
x = 1
def sum():
global a
a = x + 1
sum()
print(a)