python沒有main函數
① python代碼有主函數嗎
沒有,Python是腳本語言。正常情況就是從上往下執行。
② python語言中有類似C語言或者java中程序執行時的入口方法main(),如果沒有那麼它是怎麼執行的呢
沒有,python是解釋型的語言,
看見第一個可以被執行的語句就順序執行。
比如
def abc(ab): #這是函數,沒調用沒執行。
print ab
ddd="abcdefg" #賦值語句,執行
print ddd #在標准輸出上輸出ddd的內容,執行
abc(ddd) 函數調用執行。
③ 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 函數
print'main'當腳本作為執行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。
⑤ 如何理解python中的main函數
這個腳本被執行的時候,__name__ 值就是 __main__ ,才會執行 main()函數 如果這個腳本是被 import 的話,__name__的值不一樣。main()函數就不會被調用。 這個句子用來寫既能直接運行,又能給其他python程序import,提供庫調用的腳本
⑥ 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卻要求仔細處理返回值傳遞的問題。
⑦ 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報錯找不到主函數的錯誤
解決python報錯找不到主函數錯誤的方法:
在代碼的最下方加上「if __name__ == '__main__':」主函數語句,將需要使用的代碼語句放到該語句下面就可以了
示例如下:
更多Python知識,請關註:Python自學網!!