簡體   English   中英

模塊內的 python 全局變量

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

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