簡體   English   中英

Python 3:跨模塊的全局變量的可見性

[英]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

對於intstr等不可變對象,這將重新綁定變量,並且現在兩個模塊具有不同的值。

如果要確保始終引用相同的對象,請保留名稱空間引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM