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