Python學(xué)習(xí)筆記之函數(shù)的參數(shù)和返回值的使用
01、函數(shù)參數(shù)和返回值的作用
函數(shù)根據(jù) 有沒有參數(shù) 以及 有沒有返回值,可以相互結(jié)合,共有四種:
- 無參數(shù) 無返回值
- 無參數(shù) 有返回值
- 有參數(shù) 無返回值
- 有參數(shù) 有返回值
定義函數(shù)時候,是否接收參數(shù),或者時候返回結(jié)果,是根據(jù)實際功能需求決定的。
如果函數(shù)內(nèi)部處理的數(shù)據(jù)不確定,就可以將外界的數(shù)據(jù)以參數(shù)形式傳遞到函數(shù)內(nèi)部。
如果希望一個函數(shù)執(zhí)行完成后,向外界匯報執(zhí)行結(jié)果,就可以增加函數(shù)的返回值。
02、函數(shù)的返回值—進(jìn)階
- 在程序開發(fā)中,有時候,會希望一個函數(shù)執(zhí)行結(jié)束后,告訴調(diào)用者一個結(jié)果,以便調(diào)用者針對具體的結(jié)果做后續(xù)的操作
- 返回值是函數(shù)完成工作后,最后給調(diào)用者的一個結(jié)果
- 在函數(shù)中使用return關(guān)鍵字可以返回結(jié)果
- 調(diào)用函數(shù)的一方,可以使用變量來接收函數(shù)的返回結(jié)果
問題:一個函數(shù)執(zhí)行后能否返回多個結(jié)果???
示例:溫度和濕度的測量
假設(shè)開發(fā)一個函數(shù),同時返回當(dāng)前溫度和濕度先
返回溫度
def measure(): temp = 39 return temp result = measure() print(result)
運行結(jié)果:
利用元組在返回溫度的同時,返回濕度
改造如下:
def measure(): temp = 39 wetness = 50 # 如果函數(shù)返回的類型是元組,小括號可以省略 return temp, wetness result = measure() print(type(result)) print(result) print(result[0]) print(result[1])
運行結(jié)果:
注意:
如果函數(shù)的返回值類型是元組,可以一次使用多個變量接收元組中的元素
使用多個變量接收結(jié)果時,變量的個數(shù)應(yīng)該和元組中元素的個數(shù)保持一致。
def measure(): temp = 39 wetness = 50 # 如果函數(shù)返回的類型是元組,小括號可以省略 return temp, wetness gl_temp, gl_wetness = measure() print(gl_temp) print(gl_wetness)
執(zhí)行結(jié)果:
03、函數(shù)的參數(shù)—進(jìn)階
3.1 關(guān)于函數(shù)的兩個問題
問題1:在函數(shù)內(nèi)部,針對參數(shù)使用賦值語句,會不會影響調(diào)用函數(shù)時傳遞的實參變量?——————No
無論傳遞的參數(shù)是可變還是不可變
只要針對參數(shù)使用賦值語句,就會在函數(shù)內(nèi)部修改局部變量的引用,不會影響到外部變量的引用。
def demo(num, num_list): print("函數(shù)內(nèi)部:") num = 200 num_list = [1, 2, 3] print(num) print(num_list) print("內(nèi)部代碼完成") gl_num = 99 gl_list = [4, 5, 6] demo(gl_num, gl_list) print(gl_num) print(gl_list)
運行結(jié)果:
問題2:如果傳遞的參數(shù)是可變類型,在函數(shù)內(nèi)部,使用方法修改了數(shù)據(jù)內(nèi)容,會不會影響調(diào)用函數(shù)時傳遞的實參變量?——————YES
def demo(num_list): num_list.extend([1, 2, 3]) print(num_list) gl_list = [6, 7, 8] print(gl_list) demo(gl_list) print(gl_list)
運行結(jié)果:
3.2缺省參數(shù)
定義函數(shù)時,可以給某個參數(shù)指定一個默認(rèn)值,具有默認(rèn)值的參數(shù)就叫做缺省參數(shù)
調(diào)用函數(shù)時,如果沒有傳入缺省參數(shù)的值,則在函數(shù)內(nèi)部使用定義函數(shù)時指定的參數(shù)默認(rèn)值
函數(shù)的缺省參數(shù),將常見的值設(shè)置為參數(shù)的缺省值,從而簡化函數(shù)的調(diào)用
例如:對列表排序的方法
gl_num_list = [6, 3, 9] # 默認(rèn)是升序排序,因為這種需求更多 gl_num_list.sort() print(gl_num_list) # 只有當(dāng)需要降序排序的時候,才需要傳遞reverse參數(shù) gl_num_list.sort(reverse=True) print(gl_num_list)
運行結(jié)果:
指定函數(shù)的缺省參數(shù)值
在參數(shù)后使用賦值語句,可以指定參數(shù)的缺省值
def print_info(name, gender=True): gender_text = "男生" if not gender: gender_text = "女生" print("%s 是 %s" % (name, gender_text)) print_info("張三") print_info("李四", False)
執(zhí)行結(jié)果:
提示:
缺省參數(shù),需要使用最常見的值作為默認(rèn)值
如果一個參數(shù)的值不能確定,則不應(yīng)該設(shè)置該默認(rèn)值,具體的數(shù)值在調(diào)用函數(shù)時,由外界傳遞!
缺省參數(shù)的注意事項:
①缺省參數(shù)的定義位置
必須保證帶有默認(rèn)值的缺省參數(shù)在參數(shù)列表末尾
So,以下定義是錯誤滴
②調(diào)用帶有多個缺省參數(shù)的函數(shù)
在調(diào)用函數(shù)的時候,如果有多個缺省參數(shù),需要指定參數(shù)名,這樣解釋其才能知道對應(yīng)關(guān)系。
正確書寫:
3.3多值參數(shù)
定義支持多值參數(shù)的函數(shù)
- 有時可能需要一個函數(shù)能夠處理的參數(shù)個數(shù)是不確定的,這個時候,就可以使用多值參數(shù)
- Python中有兩種多值參數(shù):
- 參數(shù)名前增加一個*可以接受元組
- 參數(shù)名前增加兩個*可以接收字典
- 一般在給多值參數(shù)命名時,習(xí)慣使用以下兩個名字
- *args — 存放 元組 參數(shù),前面有 *
- **kwargs — 存放 字典參數(shù),前面有**
- args是arguments的縮寫,有變量的含義
- kw是keyword的縮寫,kwargs可以記憶鍵值對參數(shù)
def demo(num, *args, **kwargs): print(num) print(args) print(kwargs) demo(1, 2, 3, 4, 5, name="小米", age=18, gender=True)
運行結(jié)果:
元組和字典的拆包
在調(diào)用帶有多值參數(shù)的函數(shù)時,如果希望
- 將一個 元組變量,直接傳遞給args
- 將一個 字典變量,直接傳遞給kwargs
就可以使用拆包,簡化參數(shù)的傳遞,拆包的方式是:
- 在元組變量前,加一個*
- 在字典變量前,加兩個*
在開發(fā)時,如果需要直接將一個元組或者字典變量傳遞給函數(shù)內(nèi)部,則需要拆包。
如果我們不進(jìn)行拆包操作,所傳參數(shù)會進(jìn)行打包傳遞,如下圖:
進(jìn)行拆包后:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python基于paramiko將文件上傳到服務(wù)器代碼實現(xiàn)
這篇文章主要介紹了python基于paramiko將文件上傳到服務(wù)器代碼實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07Pytorch運行過程中解決出現(xiàn)內(nèi)存不足的問題
內(nèi)存不足是很多人感到頭疼的問題,本文主要介紹了Pytorch運行過程中解決出現(xiàn)內(nèi)存不足的問題,具有一定的參考價值,感興趣的可以了解一下2024-02-02pd.drop_duplicates刪除重復(fù)行的方法實現(xiàn)
drop_duplicates 方法實現(xiàn)對數(shù)據(jù)框 DataFrame 去除特定列的重復(fù)行,本文主要介紹了pd.drop_duplicates刪除重復(fù)行的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06Python學(xué)習(xí)筆記之文件的讀寫操作實例分析
這篇文章主要介紹了Python學(xué)習(xí)筆記之文件的讀寫操作,結(jié)合實例形式詳細(xì)分析了Python常見的文件讀寫操作實現(xiàn)技巧及相關(guān)注意事項,需要的朋友可以參考下2019-08-08解決pycharm remote deployment 配置的問題
今天小編就為大家分享一篇解決pycharm remote deployment 配置的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06