[英]Python 3: The visibility of global variables across modules
之前曾問過類似的問題:
假設您有2個模塊,其中一個模塊具有要在另一個模塊中讀取的全局變量。 有沒有一種方法可以使它們跨模塊訪問而不必每次都將它們稱為module.variable?
例:
modulea.py:
import moduleb
from moduleb import *
print("A String: " + astring)
print("Module B: " + moduleb.astring)
afunction()
print("A String: " + astring)
print("Module B: " + moduleb.astring)
moduleb.py:
astring = "dlroW olleH"
def afunction():
global astring
astring = "Hello World"
輸出是
A String: dlroW olleH
Module B: dlroW olleH
A String: dlroW olleH
Module B: Hello World
建議通過使用“ from module import *”來復制而不是引用全局變量。
在此先感謝您的幫助。
from module import *
綁定的對象module
喜歡當前模塊中命名變量。 這不是副本,而是對相同對象的引用。 在其中一個模塊重新綁定該對象之前,這兩個模塊將看到同一對象。 修改可變對象不會重新綁定變量,因此可以執行諸如追加到列表之類的操作。 但是重新分配變量不會重新綁定它。 通常,重新綁定很簡單:
myvar = something_else
但有時它不太清楚
myvar += 1
對於int
或str
等不可變對象,這將重新綁定變量,並且現在兩個模塊具有不同的值。
如果要確保始終引用相同的對象,請保留名稱空間引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.