簡體   English   中英

從if__name__ ==“ __main__”導入

[英]import from if__name__ == “__main__”

您好,我正在嘗試從一段運行電位計的代碼中提取一些信息。

class KY040
    def x():

    def y():

if __name__ == "__main__"
    def rotaryChange(direction):
        turn = "turned"
        return turn

在另一個代碼(相同的目錄)中,我有“從鍋中導入rotaryChange”,但是錯誤地指出無法導入名稱rotaryChange。

我不能從if語句導入嗎?

我沒有寫我剛剛編輯過的原始代碼,原始來源: https : //github.com/martinohanlon/PiLadyAnneRadio -file is sourcecode / KY040

我的編輯:

l1= 0
l2 = 0
def rotaryChange(direction):
    global l1
    global l2
    turn = ""
    l1 = l1 +  int(direction)
    #print l1
    #print "turned : " + str(direction)
    if (l1 != l2):
            if (l1 < l2):
                    print ("clockwise Turn")
                    turn = "clockwise"
            else:
                    print ("anit-clockwise Turn")
                    turn = "anit-clockwise"
    l2 = l1
    return turn

從字面上看, if __name__ == '__main__塊的全部要點是提供僅在直接執行文件if __name__ == '__main__不是在導入文件時執行的代碼。

如果需要導入此功能,請將其移至該塊之外。

您可以,如果在導入模塊時執行了該語句。 但是, __name__ == '__main__專門用於阻止代碼運行,除非該模塊作為主腳本運行, 而不是僅由另一個模塊導入時。 如果您打算將rotaryChange由其他模塊使用,則應在if語句之外定義它。

僅當您通過執行python腳本時, __name__ == "__main__"條件才為True

python pots.py

如果使用import指令導入軟件包,則if所有內容均不會執行,因此rotaryChange函數未定義且無法導入。


基本上,您使用此條件來測試您的程序包或將其用作外部程序,如果您(或其他人)將其導入,則無需執行全部操作。

class MyClass: pass

if __name__ == "__main__":
   m = MyClass ()
   # Do some test on m

如果您運行python myclass.py ,那么所有代碼​​都將執行,您可以測試MyClass類的行為。 但是,如果有人使用import myclass導入軟件包,則您不希望執行測試代碼,因此將其放在if __name__ == "__main__":

另一種用法是允許用戶將您的程序包作為“工具”執行,這種程序包的一個示例是timeit模塊。

# import the timeit module and use it
>>> import timeit 
>>> timeit.timeit ('math.exp(1)', setup = 'import math')
# Use the timeit module from the command line
C:\Users\Holt59 python -m timeit 'math.exp(1)' 'import math'

暫無
暫無

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

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