在python中寫函數(shù),Python函數(shù)寫法

python主函數(shù)怎么寫

一般來說,Python程序員可能是這樣寫main()函數(shù)的:

成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元尋烏做網(wǎng)站,已為上家服務(wù),為尋烏各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

"""Module 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()1234567891011121314151617181920212223242526

Guido也承認(rèn)之前自己寫的main()函數(shù)也是類似的結(jié)構(gòu),但是這樣寫的靈活性還不夠高,尤其是需要解析復(fù)雜的命令行選項(xiàng)時(shí)。為此,他向大家提出了幾點(diǎn)建議。

添加可選的 argv 參數(shù)

首先,修改main()函數(shù),使其接受一個(gè)可選參數(shù) argv,支持在交互式shell中調(diào)用該函數(shù):

def main(argv=None):

if argv is None:

argv = sys.argv # etc., replacing sys.argv with argv in the getopt() call.1234

這樣做,我們就可以動(dòng)態(tài)地提供 argv 的值,這比下面這樣寫更加的靈活:

def main(argv=sys.argv):

# etc.12

這是因?yàn)樵谡{(diào)用函數(shù)時(shí),sys.argv 的值可能會(huì)發(fā)生變化;可選參數(shù)的默認(rèn)值都是在定義main()函數(shù)時(shí),就已經(jīng)計(jì)算好的。

但是現(xiàn)在sys.exit()函數(shù)調(diào)用會(huì)產(chǎn)生問題:當(dāng)main()函數(shù)調(diào)用sys.exit()時(shí),交互式解釋器就會(huì)推出!解決辦法是讓main()函數(shù)的返回值指示退出狀態(tài)(exit status)。因此,最后面的那行代碼就變成了這樣:

if __name__ == "__main__":

sys.exit(main())12

并且,main()函數(shù)中的sys.exit(n)調(diào)用全部變成return n。

定義一個(gè)Usage()異常

另一個(gè)改進(jìn)之處,就是定義一個(gè)Usage()異常,可以在main()函數(shù)最后的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())123456789101112131415161718192021222324

這樣main()函數(shù)就只有一個(gè)退出點(diǎn)(exit)了,這比之前兩個(gè)退出點(diǎn)的做法要好。而且,參數(shù)解析重構(gòu)起來也更容易:在輔助函數(shù)中引發(fā)Usage的問題不大,但是使用return 2卻要求仔細(xì)處理返回值傳遞的問題。

用python寫一個(gè)函數(shù)

使用關(guān)鍵詞 def 聲明這是一個(gè)函數(shù)

1def 函數(shù)名 (參數(shù)):

2 語句塊

參數(shù)可以沒有,也可以有多個(gè),用逗號(hào)隔開,第一行稱為函數(shù)頭,結(jié)尾一定要加冒號(hào),代表開始進(jìn)入函數(shù)體的執(zhí)行。

語句塊也就是函數(shù)體,是關(guān)于這個(gè)函數(shù)要實(shí)現(xiàn)的功能的語句,語句要有返回值即return語句,如果沒有return語句,就代表return none.

python3 定義函數(shù)

Python 有很多有用的內(nèi)置函數(shù), 但還是不能滿足程序員的需求, 所以需要 自定義函數(shù) 。

如何編寫 自定義函數(shù) , 需要用到 def語句, 函數(shù)名, 括號(hào)及參數(shù), 冒號(hào), 函數(shù)說明,內(nèi)置縮進(jìn)編碼模塊,return 語句 , 其中有一些也可省略不寫,后面會(huì)慢慢介紹。

編寫函數(shù)不可或缺的元素, 一定都要寫。函數(shù)名盡量寫得簡(jiǎn)單易懂。

一般是對(duì)函數(shù)的描述說明。

這是編寫具體的 操作命令 的地方, 如果還未想好如何編寫, 可以使用 pass 來占位,讓程序可以運(yùn)行起來,防止調(diào)試出錯(cuò)。

參數(shù)放在最后講, 是因?yàn)檫@里面的東西還是很多的。首先看個(gè)例子。

如上的案例都是限制了參數(shù)個(gè)數(shù)的, 最多傳三個(gè)參數(shù) name/age/city , 但是如果有一些特例,需要傳多個(gè)參數(shù)怎么辦呢。 參數(shù)前面加個(gè) * , 變成 可變參數(shù) 。

那如果想要傳多個(gè)包含名稱的參數(shù),例如a=1,b=2,c=3......,那該怎么寫呢。參數(shù)前面加個(gè) ** , 變成 關(guān)鍵字參數(shù) 。

python如何在命令行定義函數(shù)

Python在命令行定義函數(shù)的方法如下:

打開電腦運(yùn)行窗體,輸入cmd,點(diǎn)擊確定

命令行窗口,輸入python,進(jìn)入python命令行,編寫函數(shù)后,敲兩次回車,即定義好了函數(shù)

測(cè)試函數(shù)可以正常使用

更多Python相關(guān)技術(shù)文章,請(qǐng)?jiān)L問Python教程欄目進(jìn)行學(xué)習(xí)!以上就是小編分享的關(guān)于python如何在命令行定義函數(shù)的詳細(xì)內(nèi)容希望對(duì)大家有所幫助,更多有關(guān)python教程請(qǐng)關(guān)注環(huán)球青藤其它相關(guān)文章!

Python中定義函數(shù)的使用方法?

4.6. 定義函數(shù)

我們可以創(chuàng)建一個(gè)用來生成指定邊界的斐波那契數(shù)列的函數(shù):

def fib(n): # write Fibonacci series up to n

... """Print a Fibonacci series up to n."""

... a, b = 0, 1

... while a n:

... print(a, end=' ')

... a, b = b, a+b

... print()

...

# Now call the function we just defined:

... fib(2000)

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

關(guān)鍵字 def 引入了一個(gè)函數(shù) 定義。在其后必須跟有函數(shù)名和包括形式參數(shù)的圓括號(hào)。函數(shù)體語句從下一行開始,必須是縮進(jìn)的。

函數(shù)體的第一行語句可以是可選的字符串文本,這個(gè)字符串是函數(shù)的文檔字符串,或者稱為 docstring。(更多關(guān)于 docstrings 的信息請(qǐng)參考 文檔字符串) 有些工具通過 docstrings 自動(dòng)生成在線的或可打印的文檔,或者讓用戶通過代碼交互瀏覽;在你的代碼中包含 docstrings 是一個(gè)好的實(shí)踐,讓它成為習(xí)慣吧。

函數(shù) 調(diào)用 會(huì)為函數(shù)局部變量生成一個(gè)新的符號(hào)表。確切的說,所有函數(shù)中的變量賦值都是將值存儲(chǔ)在局部符號(hào)表。變量引用首先在局部符號(hào)表中查找,然后是包含函數(shù)的局部符號(hào)表,然后是全局符號(hào)表,最后是內(nèi)置名字表。因此,全局變量不能在函數(shù)中直接賦值(除非用 global 語句命名),盡管他們可以被引用。

函數(shù)引用的實(shí)際參數(shù)在函數(shù)調(diào)用時(shí)引入局部符號(hào)表,因此,實(shí)參總是 傳值調(diào)用 (這里的 值 總是一個(gè)對(duì)象 引用 ,而不是該對(duì)象的值)。[1] 一個(gè)函數(shù)被另一個(gè)函數(shù)調(diào)用時(shí),一個(gè)新的局部符號(hào)表在調(diào)用過程中被創(chuàng)建。

一個(gè)函數(shù)定義會(huì)在當(dāng)前符號(hào)表內(nèi)引入函數(shù)名。函數(shù)名指代的值(即函數(shù)體)有一個(gè)被 Python 解釋器認(rèn)定為 用戶自定義函數(shù) 的類型。 這個(gè)值可以賦予其他的名字(即變量名),然后它也可以被當(dāng)作函數(shù)使用。這可以作為通用的重命名機(jī)制:

fib

f = fib

f(100)

0 1 1 2 3 5 8 13 21 34 55 89

如果你使用過其他語言,你可能會(huì)反對(duì)說:fib 不是一個(gè)函數(shù),而是一個(gè)方法,因?yàn)樗⒉环祷厝魏沃怠J聦?shí)上,沒有 return 語句的函數(shù)確實(shí)會(huì)返回一個(gè)值,雖然是一個(gè)相當(dāng)令人厭煩的值(指 None )。這個(gè)值被稱為 None (這是一個(gè)內(nèi)建名稱)。如果 None 值是唯一被書寫的值,那么在寫的時(shí)候通常會(huì)被解釋器忽略(即不輸出任何內(nèi)容)。如果你確實(shí)想看到這個(gè)值的輸出內(nèi)容,請(qǐng)使用 print() 函數(shù):

網(wǎng)頁(yè)名稱:在python中寫函數(shù),Python函數(shù)寫法
網(wǎng)頁(yè)鏈接:http://muchs.cn/article24/hcpcje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、定制開發(fā)、網(wǎng)站制作、虛擬主機(jī)品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)