馬上。。easy

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比孝義網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式孝義網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋孝義地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。
#! /usr/bin/env python
#coding=utf-8
list = [u"衣服",u"手表",u"鮮花",u"巧克力"]
def getGift(i = 0):
return list[i]
print(getGift(2))
#out:鮮花
如果是python3以上的話,就不用加 u 了
創(chuàng)建類的方法比較簡單,如下:
class Person:
注意,類的名稱一般用大寫字母開頭,這是慣例。當然,如果故意不遵循此慣例,也未嘗不可,但是,會給別人閱讀乃至于自己以后閱讀帶來麻煩。既然大家都是靠右走的,你就別非要在路中間睡覺了。
接下來,一般都要編寫構造函數(shù),在寫這個函數(shù)之前,先解釋一下什么是構造函數(shù)。
復制代碼 代碼如下:
class Person:
def __init__(self, name, lang, website):
self.name = name
self.lang = lang
self.website = website
上面的類中,首先呈現(xiàn)出來的是一個名為:__init__()的函數(shù),注意,這個函數(shù)是以兩個下劃線開始,然后是init,最后以兩個下劃線結束。這是一個函數(shù),就跟我們此前學習過的函數(shù)一樣的函數(shù)。但是,這個函數(shù)又有點奇特,它的命名是用“__”開始和結束。
請看官在這里要明確一個基本概念,類就是一種對象類型,和跟前面學習過的數(shù)值、字符串、列表等等類型一樣。比如這里構建的類名字叫做Person,那么就是我們要試圖建立一種對象類型,這種類型被稱之為Person,就如同有一種對象類型是list一樣。
在構建Person類的時候,首先要做的就是對這種類型進行初始化,也就是要說明這種類型的基本結構,一旦這個類型的對象被調用了,第一件事情就是要運行這個類型的基本結構,也就是類Person的基本結構。就好比我們每個人,在頭腦中都有關于“人”這樣一個對象類型(對應著類),一旦遇到張三(張三是一個具體人),我們首先運行“人”這個類的基本結構:一個鼻子兩只眼,鼻子下面一張嘴。如果張三符合這個基本機構,我們不會感到驚詫(不報錯),如果張三不符合這個基本結構(比如三只眼睛),我們就會感到驚詫(報錯了)。
由于類是我們自己構造的,那么基本結構也是我們自己手動構造的。在類中,基本結構是寫在__init__()這個函數(shù)里面。故這個函數(shù)稱為構造函數(shù),擔負著對類進行初始化的任務。
還是回到Person這個類,如果按照上面的代碼,寫好了,是不是__init__()就運行起來了呢?不是!這時候還沒有看到張三呢,必須看到張三才能運行。所謂看到張三,看到張三這樣一個具體的實實在在的人,此動作,在python中有一個術語,叫做實例化。當類Person實例化后立刻運行__init__()函數(shù)。
函數(shù)是組織好,可重復使用的,用來實現(xiàn)相關功能的代碼段
函數(shù)提高了代碼的重復利用率和應用的模塊性。
除Python自帶的函數(shù)之外,也可以自己創(chuàng)建函數(shù),叫做自定義函數(shù)
語法:
函數(shù)代碼塊以 def 開頭
參數(shù)為 輸入值 ,放于函數(shù)名后口號里面,
函數(shù)內(nèi)容以冒號:開始,函數(shù)體縮進, return 返回 輸出值
函數(shù)調用使用關鍵字參數(shù)來確定傳入的參數(shù)值,此時,如果多個函數(shù)則不需要按照指定順序。
在定義函數(shù)時,指定參數(shù)默認值。調用時如果不傳入?yún)?shù),則使用默認值
不定長部分如果沒有指定參數(shù),傳入是一個空元組
加了 兩個星號 ** 的參數(shù)會以字典的形式導入
/ 用來指明函數(shù)形參必須使用指定位置參數(shù),不能使用關鍵字參數(shù)的形式。
3.8版本之后的才能使用
不使用 def 定義函數(shù),沒有函數(shù)名
lamdba主體時一個表達式,而不是代碼塊,函數(shù)體比def簡單很多
定義在函數(shù)內(nèi)部的為局部變量,僅能在函數(shù)內(nèi)部使用
定義在函數(shù)外部的為全局變量,可在全局使用
模塊是將包含所有定義的函數(shù)和變量的文件,一般將同類功能的函數(shù)組和在一起稱為模塊。
模塊需要導入后,在調用相應函數(shù)進行使用
模塊導入的方法:
從模塊中導入一個指定的部分
把一個模塊的所有內(nèi)容全都導入
print?'main'當腳本作為執(zhí)行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。
main函數(shù)在程序中大多數(shù)是必須存在的。C語言標準中強制要求main函數(shù)的返回值類型為int,main函數(shù)的返回值是傳遞給操作系統(tǒng),讓操作系統(tǒng)判斷程序的執(zhí)行情況。
一個程序,無論復雜或簡單,總體上都是一個“函數(shù)”;這個函數(shù)就稱為“main 函數(shù)”,也就是“主函數(shù)”。比如有個“做菜”程序,那么“ 做菜 ”這個過程就是“主函數(shù)”。在主函數(shù)中,根據(jù)情況,你可能還需要調用“買菜,切菜,炒菜”等子函數(shù)。
main函數(shù)在程序中大多數(shù)是必須存在的,但是依然有例外情況,比如windows編程中可以編寫一個動態(tài)鏈接庫模塊,這是其他windows程序可以使用的代碼。由于DLL模塊不是獨立的程序,因此不需要main函數(shù)。
從函數(shù)的形勢看,函數(shù)分兩類:
無參函數(shù)。printstar和print_message就是無參函數(shù)。在調用無參函數(shù)時,主調函數(shù)并不將數(shù)據(jù)傳送給被調用函數(shù),一般用來執(zhí)行指定的一組操作。
有參函數(shù)。在調用函數(shù)時,在主調函數(shù)和被調用函數(shù)之間有數(shù)據(jù)傳遞。也就是說,主調函數(shù)可以將數(shù)據(jù)傳遞給被調用函數(shù)使用,被調用函數(shù)中的數(shù)據(jù)也可以帶回來供主調函數(shù)使用。
函數(shù)是組織好的,可重復使用的,用來實現(xiàn)單一,或相關聯(lián)功能的代碼段。
函數(shù)能提高應用的模塊性,和代碼的重復利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)見函數(shù),這被叫做用戶自定義函數(shù)。
一、定義一個函數(shù)
你可以定義一個由自己想要功能的函數(shù),以下是簡單的規(guī)則:
1.函數(shù)代碼塊以def關鍵詞開頭,后接函數(shù)標識符名稱和圓括號()。
2.任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。
3.函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
4.函數(shù)內(nèi)容以冒號起始,并且縮進。
5.Return[expression]結束函數(shù),選擇性地返回一個值給調用方。不帶表達式的return相當于返回 None。
語法
復制代碼代碼如下:
def functionname( parameters ):
"函數(shù)_文檔字符串"
function_suite
return [expression]
默認情況下,參數(shù)值和參數(shù)名稱是按函數(shù)聲明中定義的的順序匹配起來的。
實例
以下為一個簡單的Python函數(shù),它將一個字符串作為傳入?yún)?shù),再打印到標準顯示設備上。
復制代碼代碼如下:
def printme( str ):
"打印傳入的字符串到標準顯示設備上"
print str
return
二、函數(shù)調用
定義一個函數(shù)只給了函數(shù)一個名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結構。這個函數(shù)的基本結構完成以后,你可以通過另一個函數(shù)調用執(zhí)行,也可以直接從Python提示符執(zhí)行。
如下實例調用了printme()函數(shù):
復制代碼代碼如下:
#!/usr/bin/python
# Function definition is here
def printme( str ):
"打印任何傳入的字符串"
print str;
return;
# Now you can call printme function
printme("我要調用用戶自定義函數(shù)!");
printme("再次調用同一函數(shù)");
#以上實例輸出結果:
#我要調用用戶自定義函數(shù)!
#再次調用同一函數(shù)
一般來說,Python程序員可能是這樣寫main()函數(shù)的:
"""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也承認之前自己寫的main()函數(shù)也是類似的結構,但是這樣寫的靈活性還不夠高,尤其是需要解析復雜的命令行選項時。為此,他向大家提出了幾點建議。
添加可選的 argv 參數(shù)
首先,修改main()函數(shù),使其接受一個可選參數(shù) argv,支持在交互式shell中調用該函數(shù):
def main(argv=None):
if argv is None:
argv = sys.argv # etc., replacing sys.argv with argv in the getopt() call.1234
這樣做,我們就可以動態(tài)地提供 argv 的值,這比下面這樣寫更加的靈活:
def main(argv=sys.argv):
# etc.12
這是因為在調用函數(shù)時,sys.argv 的值可能會發(fā)生變化;可選參數(shù)的默認值都是在定義main()函數(shù)時,就已經(jīng)計算好的。
但是現(xiàn)在sys.exit()函數(shù)調用會產(chǎn)生問題:當main()函數(shù)調用sys.exit()時,交互式解釋器就會推出!解決辦法是讓main()函數(shù)的返回值指示退出狀態(tài)(exit status)。因此,最后面的那行代碼就變成了這樣:
if __name__ == "__main__":
sys.exit(main())12
并且,main()函數(shù)中的sys.exit(n)調用全部變成return n。
定義一個Usage()異常
另一個改進之處,就是定義一個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ù)就只有一個退出點(exit)了,這比之前兩個退出點的做法要好。而且,參數(shù)解析重構起來也更容易:在輔助函數(shù)中引發(fā)Usage的問題不大,但是使用return 2卻要求仔細處理返回值傳遞的問題。
網(wǎng)站題目:python類函數(shù)寫法,python 函數(shù)怎么寫
瀏覽地址:http://chinadenli.net/article3/dsegiis.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、用戶體驗、做網(wǎng)站、標簽優(yōu)化、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)