Python基礎(chǔ)筆記4-函數(shù)編寫與傳參方式

溫馨提示:手機(jī)觀看時睡毒,代碼塊可以左右滑動

函數(shù)

  • 函數(shù)是組織好的缴淋,可重復(fù)使用的的代碼段敢订;
  • 函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率厅缺。

定義函數(shù)與調(diào)用函數(shù)

  • 以 def 關(guān)鍵詞開頭梅掠,后接函數(shù)名,函數(shù)名后接 ()店归;
  • ()之間可以用于定義參數(shù)阎抒;
  • 函數(shù)內(nèi)容以冒號起始,并且轉(zhuǎn)行縮進(jìn)消痛;
  • return代表著函數(shù)結(jié)束且叁,選擇性地返回一個值給調(diào)用函數(shù)。
#定義函數(shù)基本格式如下:
def 函數(shù)名(參數(shù)表):
    函數(shù)語句
    return 返回值

#參數(shù)和返回值都不是必須有的秩伞,例如:
def hello():             #定義函數(shù)
    print("hello world")
    
hello()                  #調(diào)用函數(shù),返回hello world

#而下面這個例子是為函數(shù)定義了兩個參數(shù)逞带,并用return語句返回值。
def add(a,b):            #定義函數(shù)
    return(a+b)

add(1,3)                 #調(diào)用函數(shù),返回4

函數(shù)參數(shù)(重點)

  • 定義函數(shù)時纱新,參數(shù)表中的參數(shù)稱為形式參數(shù)展氓,簡稱形參;
  • 調(diào)用函數(shù)時脸爱,參數(shù)表中的參數(shù)稱為實際參數(shù)遇汞,簡稱實參。

參數(shù)具有多態(tài)性

  • 傳入不同類型變量,得到不同結(jié)果空入。
def duo(a,b):      #定義函數(shù)
    return(a+b)

duo(1,4)           #調(diào)用傳入兩個int值,返回結(jié)果5
duo("oh"," my god") #調(diào)用并傳入兩個字符串,返回結(jié)果'oh my god'
duo((3,4),("g","h"))  #調(diào)用并傳入兩個元組,執(zhí)行元組合并,返回(3, 4, 'g', 'h')
duo([7,4],[6,7,8,9])  #調(diào)用并傳入兩個列表,執(zhí)行列表合并,返回[7, 4, 6, 7, 8, 9]

參數(shù)賦值傳遞

  • 函數(shù)調(diào)用時按參數(shù)的先后順序络它,將實參傳遞給形參;
  • 可以以形參賦值的方式歪赢,指定將實參傳遞給形參化戳。
def fu(a,b):
    return(a+b)   #定義函數(shù)

fu("ab","cd")     #返回"abcd",按對應(yīng)位置將實參傳遞給了形參埋凯;
fu(b="cd",a="ab") #依然返回"abcd",通過形參賦值傳參点楼。

可變參數(shù)(小心使用)

  • 當(dāng)實參是可變對象時,如列表白对、字典盟步。如在函數(shù)中修改形參,因為共享引用躏结。通過實參也獲得修改后的對象;
  • 詳見以下例子狰域。
def kebian1(k):     #定義函數(shù)
    k[1] = "hello"

x = [9,10]
kebian1(x)         #調(diào)用函數(shù),傳遞列表對象的引用
print(x)           #返回[9, 'hello'],變量原本的引用被修改

#嗯哼~那么問題來了!!我們應(yīng)該如何規(guī)避這個問題?(看下行的時候請先思考)
#------------------------------------------------------------------
#我們規(guī)避的思路就是媳拴,復(fù)制一份,將克隆的傳入形參兆览。原本變量不受影響屈溉,如下例:
k = [1,2]
kebian1(k[:])       #調(diào)用函數(shù),傳遞拷貝下來的變量
print(k)            #返回[1, 2],變量沒被改變

#還可以在函數(shù)內(nèi)對列表進(jìn)行拷貝抬探,如下例:
def kebian2(k):     #定義函數(shù)
    k = q[:]        #拷貝
    k[1] = 'hello'
    
q = [3,4]
kebian2(q)          #調(diào)用函數(shù),傳遞列表對象的引用
print(q)            #返回[3, 4]子巾,變量沒被改變

參數(shù)默認(rèn)值

  • 在定義函數(shù)的時候,我們可以給參數(shù)設(shè)置一個默認(rèn)值小压。這樣我們在調(diào)用函數(shù)未提供實參時线梗,函數(shù)將按照默認(rèn)參數(shù)執(zhí)行;
  • 帶默認(rèn)值的參數(shù)怠益,應(yīng)當(dāng)放在參數(shù)表的末尾仪搔;
  • 為避免出錯,默認(rèn)參數(shù)必須指向一個不可變參數(shù)蜻牢。
def info(name = "",degree = "未填寫"):   #定義函數(shù)烤咧,并將參數(shù)degree賦予一個默認(rèn)值“未填寫”
    print(name,degree)

info("熊貓醬")          #當(dāng)只輸入一個實參時,會返回熊貓醬 未填寫
info("熊貓醬","博士")   #當(dāng)輸入兩個實參時,會返回熊貓醬 博士

傳遞任意個參數(shù)

  • 定義函數(shù)是,若參數(shù)名前帶有"*"號抢呆,則表示可接受任意個數(shù)的參數(shù)煮嫌,并保存在一個元組中;
  • 傳參時,"*"號后面的參數(shù)必須以關(guān)鍵字傳參抱虐。
def add(a,*b,c):    #定義函數(shù)
    s = a+c 
for i in b:         #為了保證語法不出錯,當(dāng)函數(shù)帶有"*"號的參數(shù)時,需要用for循環(huán)來循環(huán)元組內(nèi)內(nèi)容
    s += i
    return s

add(1,2,4,c=9)      #返回結(jié)果16,注意*b,后面的參數(shù),傳參是必須帶上關(guān)鍵字昌阿。

上一篇:Python基礎(chǔ)筆記3-列表、元組、字典
下一篇:Python基礎(chǔ)筆記5-簡說面向?qū)ο髉art1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宝泵,一起剝皮案震驚了整個濱河市好啰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌儿奶,老刑警劉巖框往,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闯捎,居然都是意外死亡椰弊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門瓤鼻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秉版,“玉大人,你說我怎么就攤上這事茬祷∏寤溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵祭犯,是天一觀的道長秸妥。 經(jīng)常有香客問我,道長沃粗,這世上最難降的妖魔是什么粥惧? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮最盅,結(jié)果婚禮上突雪,老公的妹妹穿的比我還像新娘。我一直安慰自己涡贱,他們只是感情好咏删,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著问词,像睡著了一般饵婆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戏售,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天侨核,我揣著相機(jī)與錄音,去河邊找鬼灌灾。 笑死搓译,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锋喜。 我是一名探鬼主播些己,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼豌鸡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了段标?” 一聲冷哼從身側(cè)響起涯冠,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逼庞,沒想到半個月后蛇更,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡赛糟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年派任,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片璧南。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡掌逛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出司倚,到底是詐尸還是另有隱情豆混,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布动知,位于F島的核電站皿伺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拍柒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一屈暗、第九天 我趴在偏房一處隱蔽的房頂上張望拆讯。 院中可真熱鬧,春花似錦养叛、人聲如沸种呐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爽室。三九已至,卻和暖如春淆攻,著一層夾襖步出監(jiān)牢的瞬間阔墩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工瓶珊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留啸箫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓伞芹,卻偏偏與公主長得像忘苛,于是被迫代替她去往敵國和親蝉娜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容