欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 函數(shù)詳解:從基礎(chǔ)語(yǔ)法到高級(jí)使用技巧

 更新時(shí)間:2025年08月06日 15:17:41   作者:qwerty12ljhxjdj  
本文基于實(shí)例代碼,全面講解 Python 函數(shù)的定義、參數(shù)傳遞、變量作用域及類(lèi)型標(biāo)注等知識(shí)點(diǎn),幫助初學(xué)者快速掌握函數(shù)的使用技巧,感興趣的朋友跟隨小編一起學(xué)習(xí)吧

函數(shù)是 Python 編程的核心組成部分,它通過(guò)封裝特定功能實(shí)現(xiàn)代碼復(fù)用,讓程序結(jié)構(gòu)更清晰、邏輯更嚴(yán)謹(jǐn)。本文基于實(shí)例代碼,全面講解 Python 函數(shù)的定義、參數(shù)傳遞、變量作用域及類(lèi)型標(biāo)注等知識(shí)點(diǎn),幫助初學(xué)者快速掌握函數(shù)的使用技巧。

一、函數(shù)的基本概念與作用

函數(shù)本質(zhì)是封裝特定功能的代碼塊,如同一個(gè) "黑匣子"—— 輸入?yún)?shù)后,通過(guò)內(nèi)部邏輯處理,最終輸出結(jié)果。其核心價(jià)值在于:

  • 代碼復(fù)用:避免重復(fù)編寫(xiě)相同邏輯
  • 模塊化:將復(fù)雜問(wèn)題拆解為多個(gè)獨(dú)立功能
  • 可維護(hù)性:?jiǎn)我还δ艿男薷牟挥绊懫渌糠?/li>
"""
函數(shù)作用:
      封裝一個(gè)特定的功能,相當(dāng)一個(gè)黑匣子
      代碼功能復(fù)用
語(yǔ)法:
    def  函數(shù)名(形參列表):
          函數(shù)體
          [return 返回值]
    調(diào)用: res=函數(shù)名(實(shí)參列表)
    沒(méi)有返回值,不需要接收,如果接收,返回的是None
    return作用:返回結(jié)果,跳出函數(shù)
"""

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

1. 無(wú)參函數(shù)

沒(méi)有參數(shù)的函數(shù),直接執(zhí)行預(yù)設(shè)邏輯:

# 無(wú)參函數(shù)
def test():
    print(123456)
# 調(diào)用
test()  # 輸出:123456

適用于邏輯固定、無(wú)需外部輸入的場(chǎng)景(如打印固定信息)。

2. 帶參函數(shù)

需要接收外部參數(shù)的函數(shù),靈活性更高。以下是計(jì)算aabb累加和的示例:

# 帶參函數(shù):計(jì)算aa到bb的總和
def add(aa, bb):
    sum = 0
    for i in range(aa, bb + 1):
        sum += i
    print(sum)
# 調(diào)用函數(shù)
a = int(input('請(qǐng)輸入a:'))  # 從用戶輸入獲取參數(shù)
b = int(input('請(qǐng)輸入b:'))
add(a, b)  # 實(shí)參a、b傳遞給形參aa、bb
  • 形參:函數(shù)定義時(shí)的aa、bb(形式參數(shù),僅在函數(shù)內(nèi)部有效)
  • 實(shí)參:函數(shù)調(diào)用時(shí)的a、b(實(shí)際參數(shù),將值傳遞給形參)

3. 帶返回值的函數(shù)

通過(guò)return關(guān)鍵字返回處理結(jié)果,調(diào)用者可接收并進(jìn)一步處理:

# 計(jì)算n的階乘(n!)
def jiecheng(n):
    cheng = 1
    for i in range(1, n + 1):
        cheng *= i
    return cheng  # 返回計(jì)算結(jié)果
# 調(diào)用并接收返回值
res1 = jiecheng(5)  # 5! = 120
res2 = jiecheng(10) # 10! = 3628800
print(res1, res2)  # 輸出:120 3628800
  • return的雙重作用:返回結(jié)果 + 立即結(jié)束函數(shù)(其后代碼不再執(zhí)行)
  • 若函數(shù)無(wú)return,調(diào)用后返回None

4. 函數(shù)嵌套調(diào)用

函數(shù)內(nèi)部可以調(diào)用其他函數(shù),實(shí)現(xiàn)復(fù)雜邏輯的拆解:

# 計(jì)算1! + 2! + ... + m!的總和
def add_cheng(m):
    sum = 0
    for i in range(1, m + 1):
        sum += jiecheng(i)  # 嵌套調(diào)用階乘函數(shù)
    print(sum)
# 調(diào)用
add_cheng(5)  # 1!+2!+3!+4!+5! = 153
add_cheng(10) # 總和為4037913

通過(guò)嵌套調(diào)用,將 "求階乘" 和 "求和" 兩個(gè)功能分離,代碼更易理解和維護(hù)。

三、參數(shù)傳遞機(jī)制:值傳遞與引用傳遞

Python 中參數(shù)傳遞的方式取決于數(shù)據(jù)類(lèi)型,分為兩種:

1. 值傳遞(基本數(shù)據(jù)類(lèi)型)

對(duì)于intfloat、str等不可變類(lèi)型,傳遞的是值的副本,函數(shù)內(nèi)部修改不影響外部變量:

def test(n):
    n = n + 1  # 內(nèi)部修改參數(shù)
    print(n)  # 輸出:11
a = 10
test(a)
print(a)  # 輸出:10(外部變量未變)

2. 引用傳遞(復(fù)雜數(shù)據(jù)類(lèi)型)

對(duì)于listdict、set等可變類(lèi)型,傳遞的是內(nèi)存地址,函數(shù)內(nèi)部修改會(huì)影響外部變量:

def test2(lst):
    lst[1] = 66  # 內(nèi)部修改列表元素
    print(lst)  # 輸出:[1, 66, 3]
ls = [1, 2, 3]
test2(ls)
print(ls[1])  # 輸出:66(外部列表被修改)

總結(jié):不可變類(lèi)型傳遞值,可變類(lèi)型傳遞地址,這是 Python 參數(shù)傳遞的核心特性。

四、變量作用域:全局變量與局部變量

變量的作用域指其可訪問(wèn)的范圍,分為:

1. 局部變量

在函數(shù)內(nèi)部定義的變量,僅在函數(shù)內(nèi)部有效:

def test3():
    a = 10  # 局部變量(僅test3內(nèi)可訪問(wèn))
    print(a)  # 輸出:10
test3()
# print(a)  # 報(bào)錯(cuò):NameError(外部無(wú)法訪問(wèn))

2. 全局變量

在函數(shù)外部定義的變量,可在所有函數(shù)中訪問(wèn)(但修改需聲明):

b = 11  # 全局變量
m = 18  # 全局變量
def test3():
    b = 20  # 定義同名局部變量(覆蓋全局變量)
    global m  # 聲明使用全局變量m
    m += 10   # 修改全局變量
    print(a, b, m)  # 輸出:10 20 28(a是局部變量,b是局部變量,m是全局變量)
test3()
print(b, m)  # 輸出:11 28(全局b未變,全局m已修改
  • 函數(shù)內(nèi)部可直接使用全局變量,但修改全局變量需用global聲明
  • 若局部變量與全局變量同名,函數(shù)內(nèi)部?jī)?yōu)先使用局部變量

五、函數(shù)類(lèi)型標(biāo)注(Type Hints)

Python 3.5 + 支持類(lèi)型標(biāo)注,通過(guò)注釋指定參數(shù)和返回值的類(lèi)型,增強(qiáng)代碼可讀性和可維護(hù)性:

"""
函數(shù)類(lèi)型標(biāo)注:
   基本類(lèi)型: int  float  str bool bytes
   復(fù)雜類(lèi)型:  from typing import List,Tuple,Dict,Set,Union,Iterable,Sequence,Any,Callable
"""
from typing import List, Union, Callable, Iterable, Sequence
# 標(biāo)注參數(shù)類(lèi)型
def test(a: int, b: float, c: str, d: bool):
    print(a, b, c, d)
test(1, 2.5, 'hello', True)  # 符合類(lèi)型標(biāo)注的調(diào)用
# 復(fù)雜類(lèi)型標(biāo)注:List[Union[int, float]]表示列表元素可為int或float
def test2(
    a: List[Union[int, float]],  # 元素為int或float的列表
    tt: Callable,  # 可調(diào)用對(duì)象(如函數(shù))
    c: Union[int, str],  # 可為int或str
    d: Iterable,  # 可迭代對(duì)象(如列表、range)
    e: Sequence  # 序列對(duì)象(如列表、元組)
):
    tt()  # 調(diào)用傳入的函數(shù)
    print(a, c, d, e)
def active():
    print('函數(shù)作為參數(shù)')
test2([1, 2.5, 3], active, 2, [], range(10))  # 符合類(lèi)型標(biāo)注的調(diào)用
# 標(biāo)注返回值類(lèi)型
def test3(a: int, b: float) -> Union[int, float]:
    return a + b
print(test3(1, 2.5))  # 輸出:3.5(符合返回值類(lèi)型)

注意:類(lèi)型標(biāo)注僅為提示,Python 解釋器不會(huì)強(qiáng)制檢查(需借助第三方工具如mypy驗(yàn)證)。

六、總結(jié)

函數(shù)是 Python 編程的基礎(chǔ)工具,本文講解的核心知識(shí)點(diǎn)包括:

  • 函數(shù)的定義與調(diào)用:無(wú)參、帶參、帶返回值函數(shù)的使用
  • 函數(shù)嵌套:通過(guò)調(diào)用其他函數(shù)實(shí)現(xiàn)復(fù)雜邏輯
  • 參數(shù)傳遞:不可變類(lèi)型值傳遞,可變類(lèi)型引用傳遞
  • 變量作用域:局部變量與全局變量的訪問(wèn)規(guī)則
  • 類(lèi)型標(biāo)注:增強(qiáng)代碼可讀性的現(xiàn)代編程技巧

到此這篇關(guān)于Python 函數(shù)詳解:從基礎(chǔ)語(yǔ)法到高級(jí)使用技巧的文章就介紹到這了,更多相關(guān)Python 函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python調(diào)用Matplotlib繪制分布點(diǎn)圖

    python調(diào)用Matplotlib繪制分布點(diǎn)圖

    這篇文章主要為大家詳細(xì)介紹了python調(diào)用Matplotlib繪制分布點(diǎn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • matplotlib相關(guān)系統(tǒng)目錄獲取方式小結(jié)

    matplotlib相關(guān)系統(tǒng)目錄獲取方式小結(jié)

    這篇文章主要介紹了matplotlib相關(guān)系統(tǒng)目錄獲取方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 使用pycharm在本地開(kāi)發(fā)并實(shí)時(shí)同步到服務(wù)器

    使用pycharm在本地開(kāi)發(fā)并實(shí)時(shí)同步到服務(wù)器

    這篇文章主要介紹了使用pycharm在本地開(kāi)發(fā)并實(shí)時(shí)同步到服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python使用pandas實(shí)現(xiàn)篩選功能方式

    python使用pandas實(shí)現(xiàn)篩選功能方式

    在數(shù)據(jù)分析的過(guò)程中通常要對(duì)數(shù)據(jù)進(jìn)行清洗與處理,而其中比較重要和常見(jiàn)的操作就有對(duì)數(shù)據(jù)進(jìn)行篩選與查詢,下面這篇文章主要給大家介紹了關(guān)于python使用pandas實(shí)現(xiàn)篩選功能方式的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • python寫(xiě)完程序怎么運(yùn)行的兩種方式

    python寫(xiě)完程序怎么運(yùn)行的兩種方式

    這篇文章主要介紹了Python的兩種運(yùn)行方式,分別是命令行和交互式命令行,并詳細(xì)講解了如何在命令行和交互式命令行中運(yùn)行Python代碼,需要的朋友可以參考下
    2025-03-03
  • python進(jìn)階教程之動(dòng)態(tài)類(lèi)型詳解

    python進(jìn)階教程之動(dòng)態(tài)類(lèi)型詳解

    這篇文章主要介紹了python進(jìn)階教程之動(dòng)態(tài)類(lèi)型詳解,動(dòng)態(tài)類(lèi)型是動(dòng)態(tài)語(yǔ)言的特性,本文對(duì)多種動(dòng)態(tài)類(lèi)型應(yīng)用做了講解,需要的朋友可以參考下
    2014-08-08
  • Python如何將字符串轉(zhuǎn)換為日期

    Python如何將字符串轉(zhuǎn)換為日期

    這篇文章主要介紹了Python如何將字符串轉(zhuǎn)換為日期,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • pycharm找不到conda可執(zhí)行文件怎么解決

    pycharm找不到conda可執(zhí)行文件怎么解決

    這篇文章主要給大家介紹了關(guān)于pycharm找不到conda可執(zhí)行文件怎么解決的相關(guān)資料,文中通過(guò)圖文介紹非常的詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Python實(shí)現(xiàn)微信小程序支付功能

    Python實(shí)現(xiàn)微信小程序支付功能

    這篇文章主要介紹了Python實(shí)現(xiàn)微信小程序支付功能 ,本文通過(guò)實(shí)例代碼,流程圖給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python輸入中文的實(shí)例方法

    python輸入中文的實(shí)例方法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python輸入中文的實(shí)例方法,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-09-09

最新評(píng)論