[英]python global variable inside a module
a.py 包含:
ip=raw_input()
import b
show()
b.py 包含:
def show:
global ip
print ip
它顯示一個錯誤,說 ip 未定義。 如何在模塊內使用主腳本中的變量?
全局聲明防止通過賦值創建局部變量。 它不會神奇地搜索變量。
除非您將變量從一個模塊導入到另一個模塊,否則它在其他模塊中不可用。
要使b
能夠訪問a
成員,您需要導入a
。 你不能,因為a
進口b
。
這里的解決方案可能只是根本不使用全局變量。
您的代碼的結構方式對我來說意味着您將import
視為有效地將b.py
的內容復制並粘貼到a.py
中。 然而,這不是 Python 的工作方式——一個模塊中的變量和函數將無法在另一個模塊中訪問,除非通過 function 或使用module.member
表示法顯式傳入。
嘗試這樣做:
一個.py:
import b
ip = raw_input()
b.show(ip)
b.py:
def show(ip):
print ip
如果需要在b
模塊內做一些處理,傳入相關函數,進行任何更改,然后返回。 然后,在調用模塊中重新分配它們。
編輯:如果您必須使用全局變量,請將 b.py 更改為如下所示:
ip = None
def show(temp):
global ip
ip = temp
# code here
print ip
...但是重組會更理想,這樣您就不會最終使用全局變量。
我將a.py
的一些代碼移動到b.py
,例如raw_input()
,然后b.py
只返回a.py
中需要的內容。
所以不必擔心全局變量等,因為一半的工作是由b.py
完成的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.