#otherfile.py import manynames X = 66 print(X) print(manynames.X) manynames.f() manynames.g() print (manynames.C.X) I = manynames.C() print(I.X) I.m() print(I.X)
## 老鼠书_第29章 ## otherfile.py import manynames X = 66 print(X) print(manynames.X) manynames.f() manynames.g() print(manynames.C.X) I = manynames.C() print(I.X) I.m() print(I.X)
# -*- coding: utf-8 -*- # otherfile.py import manynames X = 66 print(X) # 66: 여기까지는 지역 변수 print(manynames.X) # 11: 임포트 이후 X는 속성이 됨 manynames.f() # 11: manynames의 X manynames.g() # 22: 다른 파일의 함수에 있는 지역 변수 print(manynames.C.X) # 33: 다른 모듈 내의 클래스 속성임 I = manynames.C() print(I.X) # 33: 여기까지는 아직 클래스의 속성임 I.m() print(I.X) # 55: 이제 인스턴스의 속성임
#!/usr/bin/env python # coding: utf-8 import manynames X = 66 print X print manynames.X print manynames.f() print manynames.g() print manynames.C.X I = manynames.C() print I.X I.m() print I.X
#!/usr/bin/env python # otherfile.py import manynames x = 66 print(x) # 66: the global here print(manynames.x) # 11: global become attributes after imports manynames.f() # 11: manynames's x, not the one here! manynames.g() # 22: local in other file's function print(manynames.C.x) # 33: attribute of class in other module I = manynames.C() print(I.x) # 33: still from class here I.m() print(I.x) # 55: now from instance!
# Usage: otherfile.py # Description: namespace and scope #----------------------------------------------- import manynames x = 66 print(x) # 66: the global here print(manynames.x) # 11: globals become attributes after imports manynames.f() # 11: manynames' x, not the one here manynames.g() # 22: local in other file's function print(manynames.C.x) # 33: attribute of class in other module I = manynames.C() print(I.x) # 33: still from class here I.m() print(I.x) # 55: now from instance ''' Notice here how manynames.f() prints the X in manynames, not the X assigned in this file —scopes are always determined by the position of assignments in your source code (i.e., lexically) and are never influenced by what imports what or who imports whom. Also, notice that the instance’s own X is not created until we call I.m()—attributes, like
#!/usr/bin/env python3 import manynames X = 66 print(X) # 66: здешняя глобальная переменная print(manynames.X) # 11: глобальная, ставшая атрибутом в результате импорта manynames.f() # 11: X в manynames, не здешняя глобальная! manynames.g() # 22: локальная в функции, в другом файле print(manynames.C.X)# 33: атрибут класса в другом модуле I = manynames.C() print(I.X) # 33: все еще атрибут класса I.m() print(I.X) # 55: а теперь атрибут экземпляра!
# -*- coding: utf-8 -*- """ @author:横纵19950206 @usage: p700 """ import manynames X = 66 print(X) # 66 print(manynames.X) # 11 manynames.f() # 11 manynames.g() # 22 print(manynames.C.X) # 33 I = manynames.C() print(I.X) # 33 I.m() print(I.X) # 55
import manynames X = 66 print(X) #66 global print(manynames.X) #11, global becomes attribute after import manynames.f() #11 manynames.g() #22 print(manynames.C.X) #33 I = manynames.C() print(I.X) #33 still from class I.m() print(I.X) #55