怎么在Python中使用函數(shù)?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
目前創(chuàng)新互聯(lián)建站已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、廣豐網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。目標(biāo)
函數(shù)參數(shù)和返回值的作用
函數(shù)的返回值 進(jìn)階
函數(shù)的參數(shù) 進(jìn)階
遞歸函數(shù)
函數(shù)根據(jù) 有沒有參數(shù) 以及 有沒有返回值,可以 相互組合,一共有 4 種 組合形式
無參數(shù),無返回值
無參數(shù),有返回值
有參數(shù),無返回值
有參數(shù),有返回值
定義函數(shù)時(shí),是否接收參數(shù),或者是否返回結(jié)果,是根據(jù) 實(shí)際的功能需求 來決定的!
如果函數(shù) 內(nèi)部處理的數(shù)據(jù)不確定,就可以將外界的數(shù)據(jù)以參數(shù)傳遞到函數(shù)內(nèi)部
如果希望一個(gè)函數(shù) 執(zhí)行完成后,向外界匯報(bào)執(zhí)行結(jié)果,就可以增加函數(shù)的返回值
此類函數(shù),不接收參數(shù),也沒有返回值,應(yīng)用場景如下:
只是單純地做一件事情,例如 顯示菜單
在函數(shù)內(nèi)部 針對(duì)全局變量進(jìn)行操作,例如:新建名片,最終結(jié)果 記錄在全局變量 中
注意:
如果全局變量的數(shù)據(jù)類型是一個(gè) 可變類型,在函數(shù)內(nèi)部可以使用 方法 修改全局變量的內(nèi)容 —— 變量的引用不會(huì)改變
在函數(shù)內(nèi)部,使用賦值語句 才會(huì) 修改變量的引用
此類函數(shù),不接收參數(shù),但是有返回值,應(yīng)用場景如下:
采集數(shù)據(jù),例如 溫度計(jì),返回結(jié)果就是當(dāng)前的溫度,而不需要傳遞任何的參數(shù)
此類函數(shù),接收參數(shù),沒有返回值,應(yīng)用場景如下:
函數(shù)內(nèi)部的代碼保持不變,針對(duì) 不同的參數(shù) 處理 不同的數(shù)據(jù)
例如 名片管理系統(tǒng) 針對(duì) 找到的名片 做 修改、刪除 操作
此類函數(shù),接收參數(shù),同時(shí)有返回值,應(yīng)用場景如下:
函數(shù)內(nèi)部的代碼保持不變,針對(duì) 不同的參數(shù) 處理 不同的數(shù)據(jù),并且 返回期望的處理結(jié)果
例如 名片管理系統(tǒng) 使用 字典默認(rèn)值 和 提示信息 提示用戶輸入內(nèi)容
如果輸入,返回輸入內(nèi)容
如果沒有輸入,返回字典默認(rèn)值
在程序開發(fā)中,有時(shí)候,會(huì)希望 一個(gè)函數(shù)執(zhí)行結(jié)束后,告訴調(diào)用者一個(gè)結(jié)果,以便調(diào)用者針對(duì)具體的結(jié)果做后續(xù)的處理
返回值 是函數(shù) 完成工作后,最后 給調(diào)用者的 一個(gè)結(jié)果
在函數(shù)中使用 return 關(guān)鍵字可以返回結(jié)果
調(diào)用函數(shù)一方,可以 使用變量 來 接收 函數(shù)的返回結(jié)果
問題:一個(gè)函數(shù)執(zhí)行后能否返回多個(gè)結(jié)果?
示例 —— 溫度和濕度測量
假設(shè)要開發(fā)一個(gè)函數(shù)能夠同時(shí)返回當(dāng)前的溫度和濕度
先完成返回溫度的功能如下:
def measure(): """返回當(dāng)前的溫度""" print("開始測量...") temp = 39 print("測量結(jié)束...") return temp result = measure() print(result)
在利用 元組 在返回溫度的同時(shí),也能夠返回 濕度
改造如下:
def measure(): """返回當(dāng)前的溫度""" print("開始測量...") temp = 39 wetness = 10 print("測量結(jié)束...") return (temp, wetness)
提示:如果一個(gè)函數(shù)返回的是元組,括號(hào)可以省略
技巧
在 Python 中,可以 將一個(gè)元組 使用 賦值語句 同時(shí)賦值給 多個(gè)變量
注意:變量的數(shù)量需要和元組中的元素?cái)?shù)量保持一致
result = temp, wetness = measure()
題目要求
有兩個(gè)整數(shù)變量 a = 6, b = 100
不使用其他變量,交換兩個(gè)變量的值
解法 1 —— 使用其他變量
# 解法 1 - 使用臨時(shí)變量 c = b b = a a = c
解法 2 —— 不使用臨時(shí)變量
# 解法 2 - 不使用臨時(shí)變量 a = a + b b = a - b a = a - b
解法 3 —— Python 專有,利用元組
a, b = b, a
問題 1:在函數(shù)內(nèi)部,針對(duì)參數(shù)使用 賦值語句,會(huì)不會(huì)影響調(diào)用函數(shù)時(shí)傳遞的 實(shí)參變量? —— 不會(huì)!
無論傳遞的參數(shù)是 可變 還是 不可變
只要 針對(duì)參數(shù) 使用 賦值語句,會(huì)在 函數(shù)內(nèi)部 修改 局部變量的引用,不會(huì)影響到 外部變量的引用
def demo(num, num_list): print("函數(shù)內(nèi)部") # 賦值語句 num = 200 num_list = [1, 2, 3] print(num) print(num_list) print("函數(shù)代碼完成") gl_num = 99 gl_list = [4, 5, 6] demo(gl_num, gl_list) print(gl_num) print(gl_list)
問題 2:如果傳遞的參數(shù)是 可變類型,在函數(shù)內(nèi)部,使用 方法 修改了數(shù)據(jù)的內(nèi)容,同樣會(huì)影響到外部的數(shù)據(jù)
def mutable(num_list): # num_list = [1, 2, 3] num_list.extend([1, 2, 3]) print(num_list) gl_list = [6, 7, 8] mutable(gl_list) print(gl_list)
面試題 —— +=
在 python 中,列表變量調(diào)用 += 本質(zhì)上是在執(zhí)行列表變量的 extend 方法,不會(huì)修改變量的引用
def demo(num, num_list): print("函數(shù)內(nèi)部代碼") # num = num + num num += num # num_list.extend(num_list) 由于是調(diào)用方法,所以不會(huì)修改變量的引用 # 函數(shù)執(zhí)行結(jié)束后,外部數(shù)據(jù)同樣會(huì)發(fā)生變化 num_list += num_list print(num) print(num_list) print("函數(shù)代碼完成") gl_num = 9 gl_list = [1, 2, 3] demo(gl_num, gl_list) print(gl_num) print(gl_list)
定義函數(shù)時(shí),可以給 某個(gè)參數(shù) 指定一個(gè)默認(rèn)值,具有默認(rèn)值的參數(shù)就叫做 缺省參數(shù)
調(diào)用函數(shù)時(shí),如果沒有傳入 缺省參數(shù) 的值,則在函數(shù)內(nèi)部使用定義函數(shù)時(shí)指定的 參數(shù)默認(rèn)值
函數(shù)的缺省參數(shù),將常見的值設(shè)置為參數(shù)的缺省值,從而 簡化函數(shù)的調(diào)用
例如:對(duì)列表排序的方法
gl_num_list = [6, 3, 9] # 默認(rèn)就是升序排序,因?yàn)檫@種應(yīng)用需求更多 gl_num_list.sort() print(gl_num_list) # 只有當(dāng)需要降序排序時(shí),才需要傳遞 `reverse` 參數(shù) gl_num_list.sort(reverse=True) print(gl_num_list)
指定函數(shù)的缺省參數(shù)
在參數(shù)后使用賦值語句,可以指定參數(shù)的缺省值
def print_info(name, gender=True): gender_text = "男生" if not gender: gender_text = "女生" print("%s 是 %s" % (name, gender_text))
提示
缺省參數(shù),需要使用 最常見的值 作為默認(rèn)值!
如果一個(gè)參數(shù)的值 不能確定,則不應(yīng)該設(shè)置默認(rèn)值,具體的數(shù)值在調(diào)用函數(shù)時(shí),由外界傳遞!
缺省參數(shù)的注意事項(xiàng)
缺省參數(shù)的定義位置
必須保證 帶有默認(rèn)值的缺省參數(shù) 在參數(shù)列表末尾
所以,以下定義是錯(cuò)誤的!
def print_info(name, gender=True, title):
調(diào)用帶有多個(gè)缺省參數(shù)的函數(shù)
在 調(diào)用函數(shù)時(shí),如果有 多個(gè)缺省參數(shù),需要指定參數(shù)名,這樣解釋器才能夠知道參數(shù)的對(duì)應(yīng)關(guān)系!
def print_info(name, title="", gender=True): """ :param title: 職位 :param name: 班上同學(xué)的姓名 :param gender: True 男生 False 女生 """ gender_text = "男生" if not gender: gender_text = "女生" print("%s%s 是 %s" % (title, name, gender_text)) # 提示:在指定缺省參數(shù)的默認(rèn)值時(shí),應(yīng)該使用最常見的值作為默認(rèn)值! print_info("小明") print_info("老王", title="班長") print_info("小美", gender=False)
定義支持多值參數(shù)的函數(shù)
有時(shí)可能需要 一個(gè)函數(shù) 能夠處理的參數(shù) 個(gè)數(shù) 是不確定的,這個(gè)時(shí)候,就可以使用 多值參數(shù)
python 中有 兩種 多值參數(shù):
參數(shù)名前增加 一個(gè) * 可以接收 元組
參數(shù)名前增加 兩個(gè) * 可以接收 字典
一般在給多值參數(shù)命名時(shí),習(xí)慣使用以下兩個(gè)名字
*args —— 存放 元組 參數(shù),前面有一個(gè) *
**kwargs —— 存放 字典 參數(shù),前面有兩個(gè) *
args 是 arguments 的縮寫,有變量的含義
kw 是 keyword 的縮寫,kwargs 可以記憶 鍵值對(duì)參數(shù)
def demo(num, *args, **kwargs): print(num) print(args) print(kwargs) demo(1, 2, 3, 4, 5, name="小明", age=18, gender=True)
提示:多值參數(shù) 的應(yīng)用會(huì)經(jīng)常出現(xiàn)在網(wǎng)絡(luò)上一些大牛開發(fā)的框架中,知道多值參數(shù),有利于我們能夠讀懂大牛的代碼
多值參數(shù)案例 —— 計(jì)算任意多個(gè)數(shù)字的和
需求
定義一個(gè)函數(shù) sum_numbers,可以接收的 任意多個(gè)整數(shù)
功能要求:將傳遞的 所有數(shù)字累加 并且返回累加結(jié)果
def sum_numbers(*args): num = 0 # 遍歷 args 元組順序求和 for n in args: num += n return num print(sum_numbers(1, 2, 3))
元組和字典的拆包(知道)
在調(diào)用帶有多值參數(shù)的函數(shù)時(shí),如果希望:
將一個(gè) 元組變量,直接傳遞給 args
將一個(gè) 字典變量,直接傳遞給 kwargs
就可以使用 拆包,簡化參數(shù)的傳遞,拆包 的方式是:
在 元組變量前,增加 一個(gè) *
在 字典變量前,增加 兩個(gè) *
def demo(*args, **kwargs): print(args) print(kwargs) # 需要將一個(gè)元組變量/字典變量傳遞給函數(shù)對(duì)應(yīng)的參數(shù) gl_nums = (1, 2, 3) gl_xiaoming = {"name": "小明", "age": 18} # 會(huì)把 num_tuple 和 xiaoming 作為元組傳遞個(gè) args # demo(gl_nums, gl_xiaoming) demo(*gl_nums, **gl_xiaoming)
函數(shù)調(diào)用自身的 編程技巧 稱為遞歸
特點(diǎn)
一個(gè)函數(shù) 內(nèi)部 調(diào)用自己
函數(shù)內(nèi)部可以調(diào)用其他函數(shù),當(dāng)然在函數(shù)內(nèi)部也可以調(diào)用自己
代碼特點(diǎn)
函數(shù)內(nèi)部的 代碼 是相同的,只是針對(duì) 參數(shù) 不同,處理的結(jié)果不同
當(dāng) 參數(shù)滿足一個(gè)條件 時(shí),函數(shù)不再執(zhí)行
這個(gè)非常重要,通常被稱為遞歸的出口,否則 會(huì)出現(xiàn)死循環(huán)!
示例代碼
def sum_numbers(num): print(num) # 遞歸的出口很重要,否則會(huì)出現(xiàn)死循環(huán) if num == 1: return sum_numbers(num - 1) sum_numbers(3)
需求
定義一個(gè)函數(shù) sum_numbers
能夠接收一個(gè) num 的整數(shù)參數(shù)
計(jì)算 1 + 2 + … num 的結(jié)果
def sum_numbers(num): if num == 1: return 1 # 假設(shè) sum_numbers 能夠完成 num - 1 的累加 temp = sum_numbers(num - 1) # 函數(shù)內(nèi)部的核心算法就是 兩個(gè)數(shù)字的相加 return num + temp print(sum_numbers(2))
1、云計(jì)算,典型應(yīng)用OpenStack。2、WEB前端開發(fā),眾多大型網(wǎng)站均為Python開發(fā)。3.人工智能應(yīng)用,基于大數(shù)據(jù)分析和深度學(xué)習(xí)而發(fā)展出來的人工智能本質(zhì)上已經(jīng)無法離開python。4、系統(tǒng)運(yùn)維工程項(xiàng)目,自動(dòng)化運(yùn)維的標(biāo)配就是python+Django/flask。5、金融理財(cái)分析,量化交易,金融分析。6、大數(shù)據(jù)分析。
關(guān)于怎么在Python中使用函數(shù)問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章題目:怎么在Python中使用函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://www.rwnh.cn/article2/ddcoic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)、全網(wǎng)營銷推廣、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容