python变量名的解析机制(LEGB) 本地作用域(Local) 当前作用域被嵌入的本地作用域(Enclosing locals) 全局/模块作用域(Global) 内置作用域(Built-in)
# a.pyfrom b import Bfrom c import fcbb = B('123')bb.fc = fcbb.fc() # 123# b.pyclass B(object): def __init__(self, xx): self.xx = xx# c.pyxx = '123'def fc(): print(xx)
# a.pyfrom b import Bfrom c import fc# way 1NEW_B = BNEW_B.fc = fcbb = NEW_B('123')bb.fc()# way 2#bb = B('123')#bb.fc = fc#bb.fc(bb)# b.pyclass B(object): def __init__(self, xx): self.xx = xx# c.pydef fc(self): print(self.xx)
一个对象,被引用到另一个作用域,它仍然无法使用另一个作用域里的变量如果需要使用,必须把另一个作用域中的对象传入该对象中