我目前正在嘗試撰寫一個腳本,該腳本接受用戶輸入,然后通過位于另一個檔案中的類將其列印出來。但是在運行我的腳本時,我必須給程式兩次輸入,然后由于一個奇怪的原因被列印三次。我還在 stackoverflow 上搜索了一些其他類似的問題,但沒有一個能幫助我解決問題。
這是第一個檔案中的代碼:
#this is main.py
global test_input
test_input = input('give me an input: ')
if 'i like cookies' in test_input:
from test import *
test_class.test()
這是第二個檔案中的代碼:
#this is test.py
class test_class():
def test():
from main import test_input
print(test_input)
運行腳本后的輸出是什么樣的:
give me an input: i like cookies
give me an input: i like cookies #this second input is created because the function is being executed twice. In this example I would've typed in i like cookies twice
i like cookies
i like cookies
i like cookies
輸出應該是什么樣的:
give me an input: i like cookies
i like cookies
如果有人能幫我解決這個問題并向我解釋我做錯了什么,我會非常高興:)
感謝您的每一個建議和提前幫助:)
uj5u.com熱心網友回復:
它正在懲罰你糟糕的編程實踐。;) 問題是,當您運行程式時,該模塊不被視為已匯入。因此,當您進入 時test_class.test(),您的from main陳述句實際上會導致您的主程式再次加載。它將再次執行輸入呼叫,并將test_class.test()再次呼叫。這次main已經匯入了,不用再做,一切正常。
子模塊嘗試從主模塊匯入某些東西是一種可怕的做法。如果您的模塊函式需要一個值,則將其作為引數傳遞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/363444.html
上一篇:如何從模塊匯入具有組合的類?
