吃透Python函數(shù)從基礎(chǔ)語(yǔ)法到實(shí)戰(zhàn)技巧(最新推薦)
在Python的編程世界里,函數(shù)是讓代碼變得模塊化、可復(fù)用、易維護(hù)的核心工具。今天我就結(jié)合自己的學(xué)習(xí)筆記,帶你從基礎(chǔ)到進(jìn)階,徹底搞懂Python函數(shù)的方方面面。
一、為什么函數(shù)是Python程序員的“必修課”?
想象一下,如果沒(méi)有函數(shù),你每次計(jì)算圓的面積都要寫一遍 3.14 * r * r,每次處理字符串都要重復(fù)寫相同的判斷邏輯。這樣不僅代碼冗余,還容易出錯(cuò)。
函數(shù)的本質(zhì),就是把一段實(shí)現(xiàn)特定功能的代碼“打包”起來(lái),起個(gè)名字,之后在需要的地方直接調(diào)用。它就像一個(gè)生產(chǎn)流水線:你輸入原料(參數(shù)),它經(jīng)過(guò)加工(函數(shù)體),最后輸出產(chǎn)品(返回值)。
學(xué)會(huì)使用函數(shù),你寫的代碼會(huì)變得更簡(jiǎn)潔,邏輯也更清晰。
二、函數(shù)的創(chuàng)建
1. 函數(shù)的定義
def 函數(shù)名(參數(shù)):
代碼塊
return 返回值說(shuō)明:
• def是定義函數(shù)的專屬保留字,不能省略或?qū)戝e(cuò)。
• 函數(shù)名的命名規(guī)則和變量一致(只能由字母、數(shù)字、下劃線組成,不能以數(shù)字開(kāi)頭,區(qū)分大小寫)。
• 參數(shù)可根據(jù)函數(shù)功能選擇是否設(shè)置,即使定義了參數(shù),調(diào)用時(shí)也可結(jié)合需求靈活傳參(如默認(rèn)參數(shù)、可變參數(shù)等)。
• 函數(shù)的代碼塊必須縮進(jìn),這是Python語(yǔ)法的強(qiáng)制要求。
• return用于返回結(jié)果,無(wú)返回需求時(shí)可省略,此時(shí)函數(shù)默認(rèn)返回None。
def fun1():
for i in range(10):
print(i, end=" ")注意:Python中函數(shù)僅定義不會(huì)執(zhí)行內(nèi)部代碼,只有通過(guò)函數(shù)名()的方式調(diào)用函數(shù),函數(shù)體的代碼才會(huì)被執(zhí)行。
2. 函數(shù)的調(diào)用
定義函數(shù)后,就可以通過(guò) 函數(shù)名(參數(shù)) 的方式調(diào)用它:
?def fun1():
for i in range(10):
print(i, end=" ")
fun1()3.函數(shù)的復(fù)用
定義函數(shù)的最大優(yōu)點(diǎn)在于如果需要經(jīng)常使用某些功能,將這些功能創(chuàng)建成函數(shù),在使用時(shí)只需要調(diào)用該函數(shù)即可,不需要重復(fù)編寫復(fù)雜的代碼塊。
def fun3(n):
b = 1
for i in range(1, n+1):
b = int(i)* b
return b
b = fun3(7) + fun3(8) + fun3(9)
print(b)4.Return返回值
• 返回?cái)?shù)據(jù)到調(diào)用函數(shù)。
def fun2():
ls = ['張三', '李四']
a = len(ls)
return a
print(fun2())• 定義函數(shù)中不帶return語(yǔ)句。當(dāng)定義函數(shù)的代碼塊全部執(zhí)行完畢后,調(diào)用函數(shù)的代碼將默認(rèn)按收到一個(gè)空值,即None。
def fun1():
for i in range(10):
print(i, end=' ') # 循環(huán)打印0-9,end=' '讓輸出不換行
# 函數(shù)未寫return語(yǔ)句,默認(rèn)返回None
print(fun1()) # 先執(zhí)行fun1()的打印,再打印fun1()的返回值None• 定義函數(shù)中帶return語(yǔ)句且返回多個(gè)值。
def fun2():
ls = ['張三', '李四']
a = len(ls)
b = ls.pop()
return a, b
print(fun2())• 定義函數(shù)中帶return語(yǔ)句位于末尾行且返回多個(gè)值。
def fun2():
ls = ['張三', '李四']
a = len(ls)
b = ls.pop()
if a == 2:
return b
else:
return a, b
print('hello world')
print(fun2())三、參數(shù)的藝術(shù):靈活傳遞數(shù)據(jù)
1. 形參與實(shí)參
• 形參(形式參數(shù)):定義函數(shù)時(shí)括號(hào)里的變量,比如上面的 radius 和 pi,它只是一個(gè)占位符。
• 實(shí)參(實(shí)際參數(shù)):調(diào)用函數(shù)時(shí)填入的具體值,比如 calculate_circle_area(5) 里的 5,它會(huì)被賦值給對(duì)應(yīng)的形參。
def fun3(n):
b = 1
for i in range(1, n+1):
b = int(i) * b
return b
a = input("請(qǐng)輸入一個(gè)數(shù)字:")
print(a, '的階乘:', fun3(int(a)))
2. 默認(rèn)參數(shù)
定義函數(shù)中的某些參數(shù)會(huì)填入相同的數(shù)據(jù),這時(shí)可以給形參設(shè)置默認(rèn)值,提前給參數(shù)設(shè)置一個(gè)數(shù)據(jù)。
def circle_calc(r, pi=3.14):
return pi * r * r
a=circle_s(3)
b=circle_s(r=5.,pi=3.14159)
print(a,b)3. 可變參數(shù)
當(dāng)不確定要接收多少個(gè)參數(shù)時(shí),可以用可變參數(shù):
• 可變參數(shù)的形參開(kāi)頭使用*開(kāi)頭。
• 可變參數(shù)必須位于必填參數(shù)的右邊以保證必填參數(shù)先接收到數(shù)據(jù),再將剩余的數(shù)據(jù)傳遞給可變參數(shù)。
• 可變參數(shù)以元組的形式接收數(shù)據(jù)。
def fun3(a, *b): # *b表示可變參數(shù),接收任意數(shù)量的位置參數(shù),打包為元組
print(b)
c = 0
for i in b:
c += a * i
return c
print(fun3(3, 1, 2, 3)) # 調(diào)用時(shí)a=3,*b接收1、2、3,打包為元組(1,2,3)4. 關(guān)鍵字參數(shù)
• 關(guān)鍵字參數(shù)的形參使用**開(kāi)頭。
• 關(guān)鍵字可變參數(shù)必須位于必選參數(shù)的右邊,確保必選參數(shù)先接收數(shù)據(jù)。
• 關(guān)鍵字參數(shù)以字典的形式接收數(shù)據(jù)。
• 傳遞給關(guān)鍵字參數(shù)的數(shù)據(jù)包含鍵和值,其中鍵和值使用等號(hào)連接。
def fun4(a,**b):
print(a, '課程考試成績(jī):')
print(b)
fun4('Python', zhangsan=90, list=95)寫在最后
函數(shù)不是Python特有的概念,但它在Python中的靈活應(yīng)用,讓代碼的組織和復(fù)用變得格外高效。從簡(jiǎn)單的函數(shù)定義,到參數(shù)的靈活傳遞,再到 return 的巧妙運(yùn)用,每一個(gè)知識(shí)點(diǎn)都是構(gòu)建復(fù)雜程序的基礎(chǔ)。
到此這篇關(guān)于吃透Python函數(shù):從基礎(chǔ)語(yǔ)法到實(shí)戰(zhàn)技巧的文章就介紹到這了,更多相關(guān)Python函數(shù)語(yǔ)法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 對(duì)key為時(shí)間的dict排序方法
今天小編就為大家分享一篇python 對(duì)key為時(shí)間的dict排序方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python reverse反轉(zhuǎn)部分?jǐn)?shù)組的實(shí)例
今天小編就為大家分享一篇python reverse反轉(zhuǎn)部分?jǐn)?shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
python上傳時(shí)包含boundary時(shí)的解決方法
這篇文章主要介紹了python上傳時(shí)包含boundary時(shí)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
windows+vscode穿越跳板機(jī)調(diào)試遠(yuǎn)程代碼的圖文教程
本文通過(guò)圖文并茂的形式給大家介紹了windows+vscode穿越跳板機(jī)調(diào)試遠(yuǎn)程代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng)
這篇文章主要介紹了python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04
基于Python實(shí)現(xiàn)PDF批量轉(zhuǎn)化工具
這篇文章主要為大家詳細(xì)介紹了如何基于Python制作一個(gè)PDF批量轉(zhuǎn)化工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12
Python實(shí)現(xiàn)搶購(gòu)IPhone手機(jī)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)搶購(gòu)IPhone手機(jī),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02

