最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從入門到精通詳解Python函數(shù)參數(shù)全攻略

 更新時(shí)間:2025年12月30日 09:00:18   作者:小莊-Python辦公  
在編程的世界里,函數(shù)(Function)就像是一個(gè)精密加工的工廠,本文將帶你系統(tǒng)地拆解 Python 函數(shù)參數(shù)的奧秘,從最基礎(chǔ)的用法到進(jìn)階技巧,助你徹底攻克這一知識(shí)點(diǎn)

在編程的世界里,函數(shù)(Function)就像是一個(gè)精密加工的工廠:你投入原材料(輸入),經(jīng)過內(nèi)部的機(jī)器運(yùn)轉(zhuǎn)(處理),最后產(chǎn)出成品(輸出)。

而在 Python 中,參數(shù)(Arguments/Parameters) 就是這些原材料。掌握了參數(shù)的使用,你就掌握了控制函數(shù)行為的鑰匙,能夠編寫出更靈活、更強(qiáng)大且易于維護(hù)的代碼。

本文將帶你系統(tǒng)地拆解 Python 函數(shù)參數(shù)的奧秘,從最基礎(chǔ)的用法到進(jìn)階技巧,助你徹底攻克這一知識(shí)點(diǎn)。

1. 前置知識(shí) (Prerequisites)

在開始之前,請(qǐng)確保你已經(jīng)具備以下基礎(chǔ):

  • 已安裝 Python 環(huán)境(推薦 Python 3.6+)。
  • 了解如何定義一個(gè)最簡單的函數(shù)(使用 def 關(guān)鍵字)。
  • 理解變量的基本賦值概念。

2. 核心概念:形參與實(shí)參

在深入具體用法前,我們需要厘清兩個(gè)經(jīng)常混用的術(shù)語:

  • 形參 (Parameters):在定義函數(shù)時(shí)括號(hào)內(nèi)的變量名。它們是占位符。
  • 實(shí)參 (Arguments):在調(diào)用函數(shù)時(shí)實(shí)際傳入的值。它們是真實(shí)的數(shù)據(jù)。
def greet(name):  # name 是形參
    print(f"Hello, {name}!")

greet("Alice")    # "Alice" 是實(shí)參

3. Python 參數(shù)詳解 (Step-by-Step Guide)

Python 提供了多種傳遞參數(shù)的方式,使得函數(shù)調(diào)用極其靈活。我們將由淺入深一一講解。

3.1 位置參數(shù) (Positional Arguments)

這是最常見、最基礎(chǔ)的參數(shù)形式。Python 按照參數(shù)在括號(hào)中出現(xiàn)的順序,將實(shí)參一一對(duì)應(yīng)賦值給形參。

規(guī)則:數(shù)量必須一致,順序必須正確。

def describe_pet(animal_type, pet_name):
    """顯示寵物的信息"""
    print(f"我有一只{animal_type}。")
    print(f"它的名字叫{pet_name}。")

# 正確調(diào)用:順序?qū)?yīng)
describe_pet('倉鼠', '哈利')
# 輸出:
# 我有一只倉鼠。
# 它的名字叫哈利。

# 錯(cuò)誤調(diào)用:順序顛倒會(huì)導(dǎo)致邏輯錯(cuò)誤
describe_pet('哈利', '倉鼠') 
# 輸出: 我有一只哈利... (邏輯不通)

3.2 關(guān)鍵字參數(shù) (Keyword Arguments)

為了避免記不住參數(shù)順序帶來的麻煩,我們可以使用“鍵=值”的格式直接指定參數(shù)。

規(guī)則:一旦指定了參數(shù)名,順序就不重要了。

# 使用關(guān)鍵字參數(shù)調(diào)用,順序可以打亂
describe_pet(pet_name='哈利', animal_type='倉鼠')

3.3 默認(rèn)參數(shù) (Default Arguments)

有些參數(shù)在大部分情況下都是同一個(gè)值。我們可以為這些參數(shù)設(shè)定一個(gè)默認(rèn)值。如果調(diào)用時(shí)沒有傳入該參數(shù),Python 就會(huì)使用默認(rèn)值。

規(guī)則必選參數(shù)(無默認(rèn)值)必須放在默認(rèn)參數(shù)之前

def connect_database(host, port=3306):
    """模擬數(shù)據(jù)庫連接"""
    print(f"正在連接到 {host}:{port} ...")

# 情況1:只傳必選參數(shù),使用默認(rèn)端口
connect_database("192.168.1.1") 
# 輸出: 正在連接到 192.168.1.1:3306 ...

# 情況2:傳入新值,覆蓋默認(rèn)端口
connect_database("192.168.1.1", 5432)
# 輸出: 正在連接到 192.168.1.1:5432 ...

3.4 可變參數(shù) (Variable-length Arguments)

有時(shí)候,我們無法預(yù)知用戶會(huì)傳入多少個(gè)參數(shù)(例如:計(jì)算任意個(gè)數(shù)字的和)。Python 提供了兩種強(qiáng)大的機(jī)制。

*args:接收任意數(shù)量的位置參數(shù)

Python 會(huì)將多余的位置參數(shù)打包成一個(gè) 元組 (Tuple)。通常命名為 args,但前面的星號(hào) * 才是關(guān)鍵。

def make_pizza(size, *toppings):
    """概述要制作的比薩"""
    print(f"\n準(zhǔn)備制作一個(gè) {size} 寸的比薩,配料如下:")
    for topping in toppings:
        print(f"- {topping}")

# 可以傳入任意數(shù)量的配料
make_pizza(12, '蘑菇', '青椒', '雙倍芝士')

**kwargs:接收任意數(shù)量的關(guān)鍵字參數(shù)

Python 會(huì)將多余的關(guān)鍵字參數(shù)打包成一個(gè) 字典 (Dictionary)。通常命名為 kwargs,前面的雙星號(hào) ** 是關(guān)鍵。

def build_profile(first, last, **user_info):
    """創(chuàng)建一個(gè)字典,其中包含我們知道的有關(guān)用戶的一切"""
    user_info['first_name'] = first
    user_info['last_name'] = last
    return user_info

user_profile = build_profile('Albert', 'Einstein',
                             location='Princeton',
                             field='Physics')

print(user_profile)
# 輸出: {'location': 'Princeton', 'field': 'Physics', 'first_name': 'Albert', 'last_name': 'Einstein'}

4. 常見陷阱與最佳實(shí)踐 (Common Pitfalls)

即使是經(jīng)驗(yàn)豐富的開發(fā)者,有時(shí)也會(huì)在參數(shù)問題上栽跟頭。以下是新手必須注意的“雷區(qū)”。

陷阱 1:使用可變對(duì)象作為默認(rèn)參數(shù) (最經(jīng)典的坑)

永遠(yuǎn)不要使用列表、字典等可變對(duì)象作為默認(rèn)參數(shù)值。

錯(cuò)誤示范:

def add_item(item, list_param=[]):
    list_param.append(item)
    return list_param

print(add_item('A')) # 期望: ['A'] -> 實(shí)際: ['A']
print(add_item('B')) # 期望: ['B'] -> 實(shí)際: ['A', 'B']  <-- 竟然保留了上次的結(jié)果!

原因:Python 函數(shù)的默認(rèn)參數(shù)在函數(shù)定義時(shí)只計(jì)算一次,而不是每次調(diào)用時(shí)重新計(jì)算。所有調(diào)用都共享同一個(gè)列表對(duì)象。

正確做法: 使用 None 作為默認(rèn)值,在函數(shù)內(nèi)部進(jìn)行判斷。

def add_item(item, list_param=None):
    if list_param is None:
        list_param = []
    list_param.append(item)
    return list_param

陷阱 2:參數(shù)定義的順序

如果你在一個(gè)函數(shù)中混合使用了以上所有類型的參數(shù),必須嚴(yán)格遵守以下順序,否則會(huì)報(bào)錯(cuò):

  • 位置參數(shù) (常規(guī)參數(shù))
  • 默認(rèn)參數(shù)
  • *args (可變位置參數(shù))
  • **kwargs (可變關(guān)鍵字參數(shù))

注:在 Python 3 中,*args 和默認(rèn)參數(shù)的位置有時(shí)可以互換(形成命名關(guān)鍵字參數(shù)),但對(duì)于初學(xué)者,建議死記上述順序以避免混淆。

5. 總結(jié)與資源 (Conclusion & Resources)

核心知識(shí)點(diǎn)回顧

  • 位置參數(shù):按順序入座,最死板但最常用。
  • 關(guān)鍵字參數(shù):指名道姓,清晰易讀。
  • 默認(rèn)參數(shù):提供備選方案,簡化調(diào)用。
  • *args:打包多余的位置參數(shù)為元組。
  • **kwargs:打包多余的關(guān)鍵字參數(shù)為字典。
  • 切記:默認(rèn)參數(shù)不要用空列表 []

下一步做什么?

掌握了函數(shù)的參數(shù),你就具備了編寫通用代碼庫的能力。建議嘗試編寫一個(gè)簡單的命令行工具(CLI),利用 *args**kwargs 來處理用戶輸入的各種復(fù)雜指令。

到此這篇關(guān)于從入門到精通詳解Python函數(shù)參數(shù)全攻略的文章就介紹到這了,更多相關(guān)Python函數(shù)參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python對(duì)FTP交互封裝的實(shí)現(xiàn)

    Python對(duì)FTP交互封裝的實(shí)現(xiàn)

    本文主要介紹了Python對(duì)FTP交互封裝的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python實(shí)現(xiàn)手繪圖效果實(shí)例分享

    Python實(shí)現(xiàn)手繪圖效果實(shí)例分享

    在本篇文章里小編給大家整理了關(guān)于Python實(shí)現(xiàn)手繪圖效果,有需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • Python 通過requests實(shí)現(xiàn)騰訊新聞抓取爬蟲的方法

    Python 通過requests實(shí)現(xiàn)騰訊新聞抓取爬蟲的方法

    今天小編就為大家分享一篇Python 通過requests實(shí)現(xiàn)騰訊新聞抓取爬蟲的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 詳解python requests中的post請(qǐng)求的參數(shù)問題

    詳解python requests中的post請(qǐng)求的參數(shù)問題

    這篇文章主要介紹了詳解python requests中的post請(qǐng)求的參數(shù)問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python函數(shù)裝飾器實(shí)現(xiàn)方法詳解

    Python函數(shù)裝飾器實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Python函數(shù)裝飾器實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python函數(shù)裝飾器的概念、功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • 使用Fabric自動(dòng)化部署Django項(xiàng)目的實(shí)現(xiàn)

    使用Fabric自動(dòng)化部署Django項(xiàng)目的實(shí)現(xiàn)

    這篇文章主要介紹了使用Fabric自動(dòng)化部署Django項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 在Tensorflow中查看權(quán)重的實(shí)現(xiàn)

    在Tensorflow中查看權(quán)重的實(shí)現(xiàn)

    今天小編就為大家分享一篇在Tensorflow中查看權(quán)重的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 快速解決cv2.imread()讀取圖像為BGR的問題

    快速解決cv2.imread()讀取圖像為BGR的問題

    這篇文章主要介紹了快速解決cv2.imread()讀取圖像為BGR的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python使用中文正則表達(dá)式匹配指定中文字符串的方法示例

    Python使用中文正則表達(dá)式匹配指定中文字符串的方法示例

    這篇文章主要介紹了Python使用中文正則表達(dá)式匹配指定中文字符串的方法,結(jié)合實(shí)例形式分析了Python正則匹配及字符編碼相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • TensorFlow損失函數(shù)專題詳解

    TensorFlow損失函數(shù)專題詳解

    本篇文章主要介紹了TensorFlow損失函數(shù)專題詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04

最新評(píng)論

博爱县| 惠安县| 开化县| 宣武区| 广宗县| 五寨县| 邳州市| 林州市| 深圳市| 民丰县| 寿阳县| 原平市| 新沂市| 肃北| 宜丰县| 铁岭县| 新化县| 上饶县| 泰和县| 新宁县| 五河县| 邳州市| 江安县| 无棣县| 伊宁县| 邹平县| 罗平县| 道真| 蒲城县| 福州市| 山丹县| 博野县| 柳州市| 屏南县| 珠海市| 砀山县| 武安市| 普定县| 新平| 高雄县| 湖南省|