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

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

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

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

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

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

  • 代碼復(fù)用:避免重復(fù)編寫相同邏輯
  • 模塊化:將復(fù)雜問題拆解為多個(gè)獨(dú)立功能
  • 可維護(hù)性:單一功能的修改不影響其他部分
"""
函數(shù)作用:
      封裝一個(gè)特定的功能,相當(dāng)一個(gè)黑匣子
      代碼功能復(fù)用
語法:
    def  函數(shù)名(形參列表):
          函數(shù)體
          [return 返回值]
    調(diào)用: res=函數(shù)名(實(shí)參列表)
    沒有返回值,不需要接收,如果接收,返回的是None
    return作用:返回結(jié)果,跳出函數(shù)
"""

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

1. 無參函數(shù)

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

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

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

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('請輸入a:'))  # 從用戶輸入獲取參數(shù)
b = int(input('請輸入b:'))
add(a, b)  # 實(shí)參a、b傳遞給形參aa、bb
  • 形參:函數(shù)定義時(shí)的aa、bb(形式參數(shù),僅在函數(shù)內(nèi)部有效)
  • 實(shí)參:函數(shù)調(diào)用時(shí)的ab(實(shí)際參數(shù),將值傳遞給形參)

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

通過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ù)無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

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

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

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

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

對于int、float、str等不可變類型,傳遞的是值的副本,函數(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ù)類型)

對于list、dict、set等可變類型,傳遞的是內(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é):不可變類型傳遞值,可變類型傳遞地址,這是 Python 參數(shù)傳遞的核心特性。

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

變量的作用域指其可訪問的范圍,分為:

1. 局部變量

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

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

2. 全局變量

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

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)部優(yōu)先使用局部變量

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

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

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

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

六、總結(jié)

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

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

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

相關(guān)文章

  • 在Python中操作文件之truncate()方法的使用教程

    在Python中操作文件之truncate()方法的使用教程

    這篇文章主要介紹了在Python中操作文件之truncate()方法的使用教程,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • pytorch制作自己的LMDB數(shù)據(jù)操作示例

    pytorch制作自己的LMDB數(shù)據(jù)操作示例

    這篇文章主要介紹了pytorch制作自己的LMDB數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了pytorch使用lmdb的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • Python?venv創(chuàng)建失敗問題

    Python?venv創(chuàng)建失敗問題

    本文主要介紹了Python?venv創(chuàng)建失敗問題,解決方法是安裝缺失的venv庫,通過`sudo?apt-get?install?python3.11-venv`命令安裝后,即可成功創(chuàng)建虛擬環(huán)境,感興趣的可以了解一下
    2024-11-11
  • TensorFlow實(shí)現(xiàn)簡單線性回歸

    TensorFlow實(shí)現(xiàn)簡單線性回歸

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)簡單線性回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python中uuid模塊實(shí)例淺析

    python中uuid模塊實(shí)例淺析

    在本篇文章里小編給大家整理了一篇關(guān)于python中uuid模塊實(shí)例淺析內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python使用切片快速刪除列表數(shù)據(jù)

    Python使用切片快速刪除列表數(shù)據(jù)

    在?Python?中,列表(list)是一種常用的數(shù)據(jù)結(jié)構(gòu),支持動(dòng)態(tài)增刪改查操作,但切片(slice)提供了一種更高效、更靈活的方式來刪除或修改列表的連續(xù)部分,本文將詳細(xì)介紹如何使用切片快速刪除列表數(shù)據(jù),需要的朋友可以參考下
    2026-04-04
  • Python線程問題與解決方案

    Python線程問題與解決方案

    在 Python 中,線程的使用可以有效提高程序的并發(fā)性和響應(yīng)能力,尤其是在 I/O 密集型任務(wù)(如文件讀寫、網(wǎng)絡(luò)請求)中,然而,線程在 Python 中也會(huì)引發(fā)一些常見問題,下面介紹 Python 線程問題的解決方案,需要的朋友可以參考下
    2024-09-09
  • Pandas 解決dataframe的一列進(jìn)行向下順移問題

    Pandas 解決dataframe的一列進(jìn)行向下順移問題

    今天小編就為大家分享一篇Pandas 解決dataframe的一列進(jìn)行向下順移問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • windows系統(tǒng)下Python環(huán)境搭建教程

    windows系統(tǒng)下Python環(huán)境搭建教程

    這篇文章主要為大家詳細(xì)介紹了windows系統(tǒng)下Python環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • python 普通克里金(Kriging)法的實(shí)現(xiàn)

    python 普通克里金(Kriging)法的實(shí)現(xiàn)

    這篇文章主要介紹了python 普通克里金(Kriging)法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評論

县级市| 桦川县| 莱阳市| 象州县| 观塘区| 彭山县| 鄂尔多斯市| 色达县| 高邮市| 高碑店市| 永登县| 大庆市| 高邑县| 凌源市| 阿尔山市| 榕江县| 福海县| 镇巴县| 柳河县| 桃园县| 泊头市| 新竹县| 孝义市| 梁河县| 甘德县| 墨竹工卡县| 闽侯县| 饶阳县| 甘洛县| 高淳县| 体育| 平江县| 泽州县| 南召县| 宜川县| 嵊州市| 新邵县| 平塘县| 民乐县| 临潭县| 宿迁市|