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

Python函數(shù)的定義與調(diào)用方法實例

 更新時間:2023年06月14日 09:17:01   作者:小嗷犬  
Python 中函數(shù)的應用非常廣泛,函數(shù)是組織好的,可重復使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段,這篇文章主要給大家介紹了關(guān)于Python函數(shù)的定義與調(diào)用的相關(guān)資料,需要的朋友可以參考下

1.定義和調(diào)用函數(shù)

Python 中使用def語句創(chuàng)建函數(shù),其一般的格式如下所示:

def name(arg1, arg2, ...,argN):
    statements

下面這段代碼定義了一個簡單函數(shù)。

def repeator(s, n):
    result = s * n
    print(result)

這段代碼僅僅是對函數(shù)的定義,并沒有調(diào)用執(zhí)行。這條定義語句運行后會新建一個名為repeator的變量名,其類型為function,即函數(shù)。

def repeator(s, n):
    result = s * n
    print(result)
print(type(repeator))
# <class 'function'> 

與內(nèi)置函數(shù)一樣,定義完函數(shù)后,可以通過函數(shù)名調(diào)用執(zhí)行。

def repeator(s, n):
    result = s * n
    print(result)
repeator('嗷', 3)
# 嗷嗷嗷

在很多情況下,函數(shù)需要將計算的結(jié)果返回到調(diào)用處。在這類函數(shù)的函數(shù)體中,通常包含一條return語句:

def name(arg1, arg2, ...,argN):
    statements 
    return value

在創(chuàng)建函數(shù)時, 沒有在函數(shù)體中添加return語句,Python 也會默默地在函數(shù)體最后添加一條return None

def repeator(s, n):
    result = s * n
    print(result)
value = repeator('嗷', 3)
# 嗷嗷嗷
print(value)
# None

函數(shù)如果以返回值來輸出:

def repeator(s, n):
    result = s * n
    return result
print(repeator('嗷', 3))
# 嗷嗷嗷

在 Python 中, 還允許在函數(shù)中返回多個值。 只需將返回值以逗號隔開, 放在return關(guān)鍵字后面即可。

def calculator(m, n): 
    return m+n, m-n, m*n, m/n
i, j = 2, 4
r1, r2, r3, r4 = calculator(i, j)
print(f'{i} 和 {j} 的加減乘除運算結(jié)果是:{r1},{r2},{r3},{r4}')
# 2 和 4 的加減乘除運算結(jié)果是:6,-2,8,0.5

在這里總結(jié)一下函數(shù)調(diào)用的四個步驟:

  • 程序執(zhí)行到函數(shù)調(diào)用時,在調(diào)用處暫停,等待函數(shù)執(zhí)行完畢;
  • 將實參賦值給函數(shù)的形參;
  • 執(zhí)行函數(shù)體中的語句;
  • 調(diào)用結(jié)束后,回到調(diào)用前暫停處繼續(xù)執(zhí)行,如果函數(shù)體中執(zhí)行了return語句, return關(guān)鍵字后的值會返回到暫停處,供程序使用,否則函數(shù)返回None值。

2.函數(shù)參數(shù)

2.1 參數(shù)傳遞

參數(shù)的傳遞過程,實際上是一個賦值的過程。在調(diào)用函數(shù)時,調(diào)用者的實際參數(shù)自動賦值給函數(shù)的形式參數(shù)變量。

def avg(m, n):
    return (m + n) /2
print(avg(5, 2))
# 3.5

2.2 不可變和可變類型參數(shù)

目前我們所學習的不可變類型包括:整型、浮點型、字符串和元組,可變類型有:列表、字典和集合等。這些都可以作為參數(shù)的類型。但參數(shù)在函數(shù)中使用時,這兩種類型的表現(xiàn)有所不同。

下面的代碼調(diào)用時,傳遞的是不可變類型的參數(shù):

def priceChanger(p):
    p = p + 10 
    print('改變后的價格:{:.2f}'.format(p))
price = 10.8
priceChanger(price)
# 改變后的價格:20.80
print(price)
# 10.8

在使用可變參數(shù)時,函數(shù)體中可以改變參數(shù)的元素:

def contentChanger(name_list):
    name_list[0], name_list[1] = name_list[1], name_list[0]
    print('函數(shù)中的 name_list:', name_list)
language_name = ['C', 'Python']
contentChanger(language_name)
# 函數(shù)中的 name_list: ['Python', 'C']
print('調(diào)用函數(shù)后的 language_name:', language_name)
# 調(diào)用函數(shù)后的 language_name: ['Python', 'C']

因此,在使用可變類型參數(shù)時需要特別注意,如果在函數(shù)中修改了參數(shù)的元素,這種修改會影響調(diào)用者的變量。 如果想消除這種影響,可以使用列表copy方法或者使用分片操作創(chuàng)建新列表。

2.3 位置參數(shù)

位置參數(shù)是調(diào)用函數(shù)為形參賦值的一種默認方式。實參與形參按照從左到右的位置順序依次賦值。

def myMinus(num1, num2): 
    return num1 - num2
print(myMinus(5, 2))
# 3

賦值順序改變將得到不同的結(jié)果。

def myMinus(num1, num2): 
    return num1 - num2
print(myMinus(2, 5))
# -3

2.4 關(guān)鍵字參數(shù)

為了避免位置參數(shù)賦值帶來的混亂,Python 允許調(diào)用函數(shù)時通過關(guān)鍵字參數(shù)的形式指定形參與實參的對應關(guān)系。 調(diào)用者使用name=value的形式來指定函數(shù)中的哪個形參接受某個值:

def myMinus(num1, num2): 
    return num1 - num2
print(myMinus(num1=5, num2=2))
# 3
print(myMinus(num2=2, num1=5))
# 3

2.5 指定默認參數(shù)值

在函數(shù)定義時,可以為參數(shù)指定值。這樣當函數(shù)調(diào)用者沒有提供對應參數(shù)值時,就可以使用指定的默認值。 指定默認參數(shù)值在 Python 的函數(shù)中廣泛存在。例如,打印函數(shù)print,在查看其幫助時,其函數(shù)的部分描述如下:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

可以看到,print函數(shù)的sepend、fileflush參數(shù)都指定了默認值。

print('C', 'C++', 'Java', 'Python')
# C C++ Java Python

如果調(diào)用時指定了sep參數(shù)的值,則會使用該值來連接每個打印的值。

print('C', 'C++', 'Java', 'Python', sep='_')
# C_C++_Java_Python

在定義函數(shù)時, 為形參指定默認值, 就可以讓該形參在調(diào)用時變?yōu)榭蛇x:

def myMod(x, y=2): 
    return x % y
print(myMod(13,4))
# 1
print(myMod(13))
# 1

2.6 任意數(shù)量參數(shù)

Python 允許在定義函數(shù)時使用單星號*來收集位置參數(shù),雙星號**收集關(guān)鍵字參數(shù)。

2.6.1 單星號*收集位置參數(shù)

單個星號將一組可變數(shù)量的位置參數(shù)組合成參數(shù)值的元組。在函數(shù)內(nèi)部可以通過訪問元組中的每個元素來使用參數(shù)。

def m_value(*values):
    max_value = max(values)
    min_value = min(values)
    print(f'最大值: {max_value}, 最小值: {min_value}')
m_value(8, 6, 7, 4, 3, 9)
# 最大值: 9, 最小值: 3

2.6.2 雙星號**收集關(guān)鍵字參數(shù)

針對形參的關(guān)鍵字參數(shù)賦值形式, 利用 Python 定義函數(shù)時, 在形參前面加上雙星號**來定義收集關(guān)鍵字參數(shù)的形參。此時形參是字典類型。

def f(**info):
    if 'name' not in info.keys():
        print('必須擁有名稱信息。')
    else:
        print(info['name'] + '的誕生年份:' + info.get('time', '不詳'))
f(name = 'C', time = '1972')
# C的誕生年份:1972
f(name = 'Python')
# Python的誕生年份:不詳

2.7 解包參數(shù)

在調(diào)用函數(shù)時,實參也可以使用***語法。此時不是收集參數(shù),正好相反, 實參前加上***執(zhí)行的是參數(shù)解包。 通常來說, 在列表、元組等類型的實參值前加上*, 將這些類型的元素解包成位置參數(shù)的形式;在字典類型的實參值前加上**,將字典的元組解包成關(guān)鍵字參數(shù)的形式。

當調(diào)用者的數(shù)據(jù)存儲在列表中時, 可以通過在列表前加上*對列表解包來實現(xiàn)位置參數(shù)形式的調(diào)用。

當調(diào)用者的數(shù)據(jù)存儲在字典中時, 可以通過在字典前加上**對字典解包來實現(xiàn)關(guān)鍵字參數(shù)形式的調(diào)用。

def f(name, time='不詳'):
    if name and len(name) > 0:
        print(name + '的誕生年份:' + str(time))
    else:
        print('必須擁有名稱信息。')
info1 = ['C', '1972']
f(*info1)
# C的誕生年份:1972
info2 = {'name': 'Python', 'time': '1989'}
f(**info2)
# Python的誕生年份:1989

總結(jié)

到此這篇關(guān)于Python函數(shù)的定義與調(diào)用方法的文章就介紹到這了,更多相關(guān)Python函數(shù)定義與調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python生成可執(zhí)行文件.exe操作完整流程記錄

    Python生成可執(zhí)行文件.exe操作完整流程記錄

    .exe是文件擴展名,帶有.exe擴展名的文件名按下Enter鍵就可運行,這篇文章主要給大家介紹了關(guān)于Python生成可執(zhí)行文件.exe操作完整流程的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • PyCharm進行Django項目開發(fā)環(huán)境搭建

    PyCharm進行Django項目開發(fā)環(huán)境搭建

    本文主要介紹了PyCharm進行Django項目開發(fā)環(huán)境搭建,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • Pandas.DataFrame刪除指定行和列(drop)的實現(xiàn)

    Pandas.DataFrame刪除指定行和列(drop)的實現(xiàn)

    本文主要介紹了Pandas.DataFrame刪除指定行和列(drop)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • python3.7 sys模塊的具體使用

    python3.7 sys模塊的具體使用

    這篇文章主要介紹了python3.7 sys模塊的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 基于Python中isfile函數(shù)和isdir函數(shù)使用詳解

    基于Python中isfile函數(shù)和isdir函數(shù)使用詳解

    今天小編就為大家分享一篇基于Python中isfile函數(shù)和isdir函數(shù)使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • django model 條件過濾 queryset.filter(**condtions)用法詳解

    django model 條件過濾 queryset.filter(**condtions)用法詳解

    這篇文章主要介紹了django model 條件過濾 queryset.filter(**condtions)用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • django orm模糊查詢、正則匹配多個值方式

    django orm模糊查詢、正則匹配多個值方式

    這篇文章主要介紹了django orm模糊查詢、正則匹配多個值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 詳解Python的Django框架中manage命令的使用與擴展

    詳解Python的Django框架中manage命令的使用與擴展

    這篇文章主要介紹了Python的Django框架中manage命令的使用與擴展,manage.py使得用戶借助manage命令在命令行中能實現(xiàn)諸多簡便的操作,需要的朋友可以參考下
    2016-04-04
  • Python3匿名函數(shù)用法示例

    Python3匿名函數(shù)用法示例

    這篇文章主要介紹了Python3匿名函數(shù)用法,結(jié)合實例形式分析了Python3匿名函數(shù)的概念、功能、使用方法及相關(guān)操作注意事項,代碼中備有較為詳盡的注釋說明便于理解,需要的朋友可以參考下
    2018-07-07
  • Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.dumps())

    Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.du

    本文主要介紹了Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.dumps()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06

最新評論