[英]How to import another external python module?
這可能是一個愚蠢的問題,但是並不確定要做什么。
main.py
import module2
global x
hello="Hello"
x=module2.message()
x.say()
module2.py
class message:
def say():
print hello
當我打印hello時,我指的是main.py中的hello變量,但是此方法將返回錯誤。 有誰知道解決方案? (我不希望將hello變量通過管道傳遞給函數)
唯一可靠的解決方案稱為封裝 。
因此,基本上,您可以將代碼更改為如下所示:
main.py
import module2
global x
hello="Hello"
x=module2.message(hello)
x.say()
module2.py
class message:
def __init__(self, hello):
self.hello = hello
def say():
print self.hello
另外,請嘗試遵循Python的編碼樣式-您和以后的代碼開發人員的生活將更加輕松。
有多個選項,但請注意,一個模塊永遠無法直接訪問調用模塊。
hello
作為變量傳遞( def say(msg): print msg
) main.py
所有變量main.py
給module2
: def say(g): print g['hello']
和say(globals())
由於main.py
導入module2.py
,因此您可以訪問main中的moule2中定義的全局變量。
在您的情況下,由於module2不導入main,因此在module2中不訪問main中的全局變量。
一種解決方案是@Tadeck定義的解決方案
在此特定示例中,module2.py導入main.py完全可以,但是有些陷阱。
最明顯的是main.py可能是從命令行運行的,就像python main.py
,它的作用是使該文件被稱為__main__
。 您可以在module2中導入該模塊,但這有點不尋常。 它稱為“ main.py”,並且您要import main
。 這樣做將導致第二次導入該模塊。
為此, 除非您將文件導入為 __main__
否則您必須安排文件沒有副作用。 python中一個非常常見的習慣用法是在模塊末尾測試該條件。
import module2
global x
hello="Hello"
def main():
x=module2.message()
x.say()
if __name__ == '__main__':
main()
現在,module2.py實際上可以導入main
。 另一方面,很難將變量從一個模塊導入到另一個模塊中,很難預測何時可以遞歸導入,因為該模塊已經在嘗試導入您 ,所以您可能還沒有該變量。 另一方面,使用虛線語法在模塊中引用變量始終是安全的。 因此,您的module2.py應該為:
import main
class message:
def say():
print main.hello
這也使得hello
來源更加明顯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.