pythonmain函數
Ⅰ 如何調用一個python模塊的main函數
f main():
print 'test ok'
if __name__ = "__main__":
main()
# test2.py
import test
test.main()
Ⅱ python 怎麼寫main 函數
print'main'當腳本作為執行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。
Ⅲ python 中的if __name__=='__main__': main()是什麼 意思呢
一個 Python 源碼文件除了可以被直接運行外,還可以作為模塊(也就是庫)被導入。不管是導入還是直接運行,最頂層的代碼都會被運行(Python 用縮進來區分代碼層次)。而實際上在導入的時候,有一部分代碼我們是不希望被運行的。
if __name__ == '__main__'就相當於是 Python模擬的程序入口。Python 本身並沒有規定這么寫,這只是一種編碼習慣。由於模塊之間相互引用,不同模塊可能都有這樣的定義,而入口程序只能有一個。到底哪個入口程序被選中,這取決於__name__的值。
舉例子說明一下,假設有一個 const.py 文件,內容如下:
PI = 3.14
def main():
print "PI:", PI
main()
(3)pythonmain函數擴展閱讀
如果模塊是被直接運行的,則代碼塊被運行,如果模塊是被導入的,則代碼塊不被運行。實際上,這個問題還可以衍生出其他的一些知識點,例如__main__.py文件與 Python 的-m參數。
輸出結果只列出了關鍵的部分,應該很容易看出他們之間的差異。直接運行是把 run.py 文件所在的目錄放到了 sys.path 屬性中。以模塊方式運行是把你輸入命令的目錄(也就是當前工作路徑),放到了 sys.path 屬性中。
Ⅳ 如何理解python中的main函數
這個腳本被執行的時候,__name__ 值就是 __main__ ,才會執行 main()函數 如果這個腳本是被 import 的話,__name__的值不一樣。main()函數就不會被調用。 這個句子用來寫既能直接運行,又能給其他python程序import,提供庫調用的腳本
Ⅳ python怎麼調用c的main函數
if
__name__=="__main__":
print
'main'
當腳本作為執行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。舉個例子,a.py作為執行腳本時__name__的值是__main__。有2個腳本,a.py和b.py,a中引入b,執行a.py時,在b中模塊的__name__就是b.py
Ⅵ python中main()可不可以換成別的名字
- - 樓上……
==========================
完全不需要main。你可以換成你喜歡的名字。
由於python是以縮進來判斷程序段,完全不需要main來指導程序首先執行模塊。
對於任意一個py文件(也是模塊),在執行或者import的時候會自動執行沒有縮進的代碼。這部分代碼就相當於main了。
一般,一個py文件(模塊),按找一下順序:首先是文字編碼說明和注釋,然後是各種類和方法的定義(def 、class),最後是沒有縮進的部分,也就是導入時自動執行的部分。你可以把這個模塊的一些初始化的代碼加入其中。
python唯一涉及main的地方(和你問的main完全不是一個意思)是判斷模塊是直接運行還是導入運行。區別在於內置屬性__name__。當一個模塊是直接運行時,__name__就等於__main__,如果它是作為一般模塊被導入時,__name__就是模塊本身的名字。
python中常常在模塊中定義一個測試用的方法test(),在需要測試的時候調用mole.test()測試用。但是,在最後常常有以下代碼,這部分和其他語言的main()是一個意思:
if __name__ == '__main__':
_test()
也就是在執行的時候調用test方法。所以對於python而言,根本不需要main(),只要把要調用的方法換成你自己的主程序名字的可以了,而名字可以是任意名字!
在調用這個程序時:
#>python myfile.py
就會執行滿足條件,執行代碼。(注意這里#>指linux下的root許可權,windows在命令提示行下則是c:\program files\python26>這樣的提示符。)
如果是
>>>import myfile 則不會。(這里>>>是在python裡面輸入)
綜上,正常的python裡面根本沒有main(),不知道你從哪裡看到的。
希望你繼續使用python,這是一致簡潔方便規范的語言!
Ⅶ python main函數有什麼用
print'main'當腳本作為執行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。
main函數在程序中大多數是必須存在的。C語言標准中強制要求main函數的返回值類型為int,main函數的返回值是傳遞給操作系統,讓操作系統判斷程序的執行情況。
一個程序,無論復雜或簡單,總體上都是一個「函數」;這個函數就稱為「main 函數」,也就是「主函數」。比如有個「做菜」程序,那麼「 做菜 」這個過程就是「主函數」。在主函數中,根據情況,你可能還需要調用「買菜,切菜,炒菜」等子函數。
main函數在程序中大多數是必須存在的,但是依然有例外情況,比如windows編程中可以編寫一個動態鏈接庫模塊,這是其他windows程序可以使用的代碼。由於DLL模塊不是獨立的程序,因此不需要main函數。
從函數的形勢看,函數分兩類:
無參函數。printstar和print_message就是無參函數。在調用無參函數時,主調函數並不將數據傳送給被調用函數,一般用來執行指定的一組操作。
有參函數。在調用函數時,在主調函數和被調用函數之間有數據傳遞。也就是說,主調函數可以將數據傳遞給被調用函數使用,被調用函數中的數據也可以帶回來供主調函數使用。
Ⅷ 為什麼電腦上的PYTHON運行main指令會報錯
if name == '__main__': 相當於一個新的函數,在這個函數里,你調用了main()函數,並傳入了args參數,但是在if name == '__main__': 這個函數域內,你並沒有定義args,所以報錯
Ⅸ python主函數怎麼寫
一般來說,Python程序員可能是這樣寫main()函數的:
"""Mole docstring.
This serves as a long usage message.
"""import sysimport getoptdef main():
# parse command line options
try:
opts, args = getopt.getopt(sys.argv[1:], "h", ["help"]) except getopt.error, msg: print msg print "for help use --help"
sys.exit(2) # process options
for o, a in opts: if o in ("-h", "--help"): print __doc__
sys.exit(0) # process arguments
for arg in args:
process(arg) # process() is defined elsewhereif __name__ == "__main__":
main()
Guido也承認之前自己寫的main()函數也是類似的結構,但是這樣寫的靈活性還不夠高,尤其是需要解析復雜的命令行選項時。為此,他向大家提出了幾點建議。
添加可選的 argv 參數
首先,修改main()函數,使其接受一個可選參數 argv,支持在互動式shell中調用該函數:
def main(argv=None):
if argv is None:
argv = sys.argv # etc., replacing sys.argv with argv in the getopt() call.1234
這樣做,我們就可以動態地提供 argv 的值,這比下面這樣寫更加的靈活:
def main(argv=sys.argv):
# etc.12
這是因為在調用函數時,sys.argv 的值可能會發生變化;可選參數的默認值都是在定義main()函數時,就已經計算好的。
但是現在sys.exit()函數調用會產生問題:當main()函數調用sys.exit()時,互動式解釋器就會推出!解決辦法是讓main()函數的返回值指示退出狀態(exit status)。因此,最後面的那行代碼就變成了這樣:
if __name__ == "__main__":
sys.exit(main())12
並且,main()函數中的sys.exit(n)調用全部變成return n。
定義一個Usage()異常
另一個改進之處,就是定義一個Usage()異常,可以在main()函數最後的except子句捕捉該異常:
import sysimport getoptclass Usage(Exception):
def __init__(self, msg):
self.msg = msgdef main(argv=None):
if argv is None:
argv = sys.argv try: try:
opts, args = getopt.getopt(argv[1:], "h", ["help"]) except getopt.error, msg: raise Usage(msg) # more code, unchanged
except Usage, err: print >>sys.stderr, err.msg print >>sys.stderr, "for help use --help"
return 2if __name__ == "__main__":
sys.exit(main())
這樣main()函數就只有一個退出點(exit)了,這比之前兩個退出點的做法要好。而且,參數解析重構起來也更容易:在輔助函數中引發Usage的問題不大,但是使用return 2卻要求仔細處理返回值傳遞的問題。