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

Python中如何自定義函數(shù)

 更新時(shí)間:2023年01月04日 09:43:50   作者:棉猴  
這篇文章主要介紹了Python中如何自定義函數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python自定義函數(shù)

在Python編程中,可以使用已經(jīng)定義好的函數(shù),也可以自定義函數(shù)實(shí)現(xiàn)某些特殊的功能。

自定義函數(shù)的語法

在Python中,自定義函數(shù)的語法如下所示

def 函數(shù)名(參數(shù)):
 
  函數(shù)體

其中,def是關(guān)鍵字;之后跟的是函數(shù)名,通過函數(shù)名來調(diào)用該函數(shù);函數(shù)名之后是一個(gè)圓括號(hào),圓括號(hào)內(nèi)部是函數(shù)的參數(shù),通過參數(shù)可以將數(shù)據(jù)傳遞到函數(shù)內(nèi)部;函數(shù)體是函數(shù)實(shí)現(xiàn)的功能。

需要注意的是(1)在圓括號(hào)之后有冒號(hào)(2)函數(shù)體要有縮進(jìn)。

自定義函數(shù)的實(shí)現(xiàn)

圖1的代碼中代碼自定義了一個(gè)名為func的函數(shù)。

圖1 自定義函數(shù)func

其中,該自定義函數(shù)的函數(shù)名是func,i是func的參數(shù)。func()函數(shù)的功能是打印出從0到i-1的數(shù)字,i的值由外部傳遞到函數(shù)內(nèi)部。

自定義函數(shù)的調(diào)用

通過圖2中的代碼調(diào)用自定義函數(shù)func()。

圖2 調(diào)用func()函數(shù)

其中,func()函數(shù)的參數(shù)設(shè)置為3,此時(shí)輸出的是0-2的數(shù)字;修改func()的參數(shù)值,如圖3所示。

圖3 修改func()函數(shù)的參數(shù)值

此時(shí)輸出的是0-4的數(shù)字。

Python自定義函數(shù)基礎(chǔ)概念

函數(shù)定義語法

def 函數(shù)名(形參列表):

語句塊

函數(shù)定義語句(def 語句) 的完整語法:

[@裝飾器1] [@裝飾器2] [...]

def 函數(shù)名([位置形參], [*元組形參], [命名關(guān)鍵字形參], [**字典形參]):

'''文檔字符串'''

語句塊

注: [] 中括號(hào)代表其內(nèi)部可以省略

函數(shù)文檔字符串

函數(shù)內(nèi)第一次未被賦值給任何變量的字符串是此函數(shù)的文檔字符串。

說明:

1. 文檔字符串通常用來說明本函數(shù)的功能和使用方法

2. 在交互模式下輸入: help(函數(shù)名) 可以查看函數(shù)的'文檔字符串'

3. 函數(shù)的文檔字符串綁定在函數(shù)的 __doc__ 屬性上

函數(shù)定義規(guī)則

1. 函數(shù)的名字就是語句塊的名稱 

2. 函數(shù)名的命名規(guī)則與變量名相同(函數(shù)名必須是標(biāo)識(shí)符) 

3. 函數(shù)名是一個(gè)變量(不要輕易對其賦值)

4. 函數(shù)有自己的名字空間,在函數(shù)外部不可以訪問函數(shù)內(nèi)部的變量,在函數(shù)內(nèi)可以訪問函數(shù)外部的變量,但不能修改此變量。

5. 函數(shù)如果不需要傳入?yún)?shù),形參列表可以為空

6. 語句塊部分,內(nèi)容不能為空,如果為空需要填充pass 

形參定義方式

形參:函數(shù)調(diào)用時(shí),接收調(diào)用時(shí)傳遞的數(shù)據(jù)

【1】位置形參

【2】關(guān)鍵字形參

【3】缺省參數(shù)

def 函數(shù)名(形參名=默認(rèn)實(shí)參1, 形參名2=默認(rèn)實(shí)參2, ...):

pass

缺省參數(shù)必須自右至左依次存在,如果一個(gè)參數(shù)是缺省參數(shù),則其右側(cè)的所有參數(shù)都必須是缺省參數(shù)。

【4】*args

星號(hào)元組形參,收集多余的位置傳參

def 函數(shù)名(*元組形參名):

pass

【5】**kwargs

雙星號(hào)字典形參,收集多余的關(guān)鍵字傳參

def 函數(shù)名(**字典形參名):

pass

【6】不定長形參

星號(hào)元組形參,雙星號(hào)字典形參

可以接受任意的位置傳參和關(guān)鍵字傳參

def fun(*args,**kwargs):

pass

位置形參,缺省參數(shù),星號(hào)元組形參,雙星號(hào)字典形參可以混合使用.

函數(shù)形參自左至右的順序?yàn)?

  • 位置形參
  • 星號(hào)元組形參
  • 命名關(guān)鍵字形參
  • 雙星號(hào)字典形參

函數(shù)調(diào)用

函數(shù)名(實(shí)參)

注:

1. 函數(shù)調(diào)用是一個(gè)表達(dá)式

2. 如果函數(shù)內(nèi)部沒有return語句,函數(shù)調(diào)用完畢后返回None對象

3. 如果函數(shù)需要返回其它的對象需要用到 return 語句

4.函數(shù)名是一個(gè)變量,綁定的是函數(shù)對象

函數(shù)調(diào)用時(shí)參數(shù)的傳遞形式

【1】位置傳參

實(shí)參和形參的位置對應(yīng),將實(shí)參數(shù)據(jù)傳遞給函數(shù)形參。

實(shí)參和形參按位置一一對應(yīng)。

實(shí)參個(gè)數(shù)和形參個(gè)數(shù)必須一致。

【2】序列傳參

位置傳參的一種。

用 * 將序列拆解后按位置進(jìn)行傳遞的傳參方式

【3】關(guān)鍵字傳參

按形參的名稱將實(shí)參數(shù)據(jù)傳遞給形參。

實(shí)參和形參按形參名稱匹配。

【4】字典關(guān)鍵字傳參

實(shí)參為字典,將字典用 '**' 拆解后再進(jìn)行關(guān)鍵字傳參的傳參方式。

字典的鍵名必須和形參一致,切數(shù)量相同。

字典的鍵必須為字符串。

全局變量與局部變量

【1】全局變量

① 定義在函數(shù)外部,模塊內(nèi)部的變量稱為全局變量

② 全局變量所有函數(shù)都可以直接訪問(但函數(shù)內(nèi)不能將其直接賦值)

【2】局部變量

① 定義在函數(shù)內(nèi)部的變量稱為局部變量(函數(shù)的形參也是局部變量)

② 局部變量只能在函數(shù)內(nèi)部使用

③ 局部變量在函數(shù)調(diào)用時(shí)才能夠被創(chuàng)建,在函數(shù)調(diào)用之后會(huì)自動(dòng)銷毀

函數(shù)的功能性

① 一個(gè)函數(shù)可以作為另一個(gè)函數(shù)調(diào)用時(shí)的實(shí)參,傳遞給此函數(shù)

def f1():
    print("f1被調(diào)用")

def f2():
    print("f2被調(diào)用")

def fx(fn):
    print(fn)
    fn()  # 此時(shí)這是調(diào)用什么呢?

fx(f1)
fx(f2)
#結(jié)果
<function f1 at 0x7f7a52ed6f28>
f1被調(diào)用
<function f2 at 0x7f7a51757c80>
f2被調(diào)用

#---------------------
def goodbye(L):
    for x in L:
        print("再見:", x)

def hello(L):
    for x in L:
        print("你好:", x)

def operator(fn, L):
    fn(L)

operator(hello, ['Tom', 'Jerry', 'Spike'])

#結(jié)果
你好: Tom
你好: Jerry
你好: Spike

② 一個(gè)函數(shù)可以作為另一個(gè)函數(shù)的返回值 

def fx():
    return max

fn = fx()
print(fn([1, 3, 5, 7]))

#結(jié)果
7

③ 函數(shù)可以嵌套

函數(shù)式編程

用一系列函數(shù)解決問題。

優(yōu)點(diǎn):

【1】用每一個(gè)函數(shù)完成細(xì)小的功能,一系列函數(shù)的任意組合可以完成大問題 

【2】函數(shù)僅接受輸入并產(chǎn)生輸入,不包含任何能影響輸出的內(nèi)部狀態(tài)

要求:

def 語句創(chuàng)建的函數(shù)最好不要訪問局部作用域以外的變量,這樣可以保證返回結(jié)果的唯一性(可重入性)

函數(shù)的 可重入性(結(jié)果唯一性)

如果一個(gè)函數(shù)的輸入?yún)?shù)一定,則返回結(jié)果必須一定的函數(shù)稱為可重入函數(shù) 

【1】 可重入函數(shù),傳入?yún)?shù)一定.結(jié)果必然一定 

def myadd(x, y):?

return x + y?

【2】不可重入函數(shù): 

y = 200?

def myadd2(x):?

return x + y?

print(myadd2(10)) # 210?

y = 300?

print(myadd2(10)) # 310?

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python和Go語言的區(qū)別總結(jié)

    Python和Go語言的區(qū)別總結(jié)

    在本篇文章里小編給大家分享了關(guān)于Python和Go語言的區(qū)別相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • python開發(fā)微信服務(wù)號(hào)消息推送示例

    python開發(fā)微信服務(wù)號(hào)消息推送示例

    這篇文章主要為大家介紹了python開發(fā)微信服務(wù)號(hào)消息推送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 序列化Python對象的方法

    序列化Python對象的方法

    這篇文章主要介紹了序列化Python對象的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • python創(chuàng)建文件備份的腳本

    python創(chuàng)建文件備份的腳本

    這篇文章主要介紹了python創(chuàng)建文件備份的腳本,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • 基于KL散度、JS散度以及交叉熵的對比

    基于KL散度、JS散度以及交叉熵的對比

    這篇文章主要介紹了基于KL散度、JS散度以及交叉熵的對比,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 對python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解

    對python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解

    今天小編就為大家分享一篇對python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 使用Python多線程爬蟲爬取電影天堂資源

    使用Python多線程爬蟲爬取電影天堂資源

    這篇文章主要介紹了使用Python多線程爬蟲爬取電影天堂資源 的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Python2包含中文報(bào)錯(cuò)的解決方法

    Python2包含中文報(bào)錯(cuò)的解決方法

    這篇文章主要給大家介紹了關(guān)于Python2包含中文報(bào)錯(cuò)的解決方法,文中通過示例代碼詳細(xì)介紹了解決的方法,相信會(huì)對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Python實(shí)現(xiàn)交通數(shù)據(jù)可視化的示例代碼

    Python實(shí)現(xiàn)交通數(shù)據(jù)可視化的示例代碼

    本文主要分享了Python交通數(shù)據(jù)分析與可視化的實(shí)戰(zhàn)!其中主要是使用TransBigData庫快速高效地處理、分析、挖掘出租車GPS數(shù)據(jù),感興趣的可以了解一下
    2023-04-04
  • Python2到Python3的遷移過程中報(bào)錯(cuò)AttributeError: ‘str‘ object has no attribute ‘decode‘問題的解決方案大全

    Python2到Python3的遷移過程中報(bào)錯(cuò)AttributeError: ‘str‘ objec

    在 Python 編程過程中,AttributeError: 'str' object has no attribute 'decode' 是一個(gè)常見的錯(cuò)誤,這通常會(huì)在處理字符串時(shí)出現(xiàn),尤其是在 Python 2 到 Python 3 的遷移過程中,本文將詳細(xì)介紹該問題的根源,并提供解決方案,需要的朋友可以參考下
    2025-04-04

最新評論

通许县| 城步| 淮北市| 扶沟县| 双牌县| 昌江| 长岛县| 湛江市| 盐边县| 宁陕县| 科技| 内丘县| 宽城| 湛江市| 怀安县| 宜宾县| 梁山县| 汕尾市| 通河县| 和静县| 东明县| 普兰县| 汶上县| 桑植县| 武平县| 子长县| 长岭县| 万载县| 祥云县| 民乐县| 台前县| 塘沽区| 汾西县| 临安市| 汝阳县| 库车县| 三河市| 临沧市| 吴桥县| 英吉沙县| 阳江市|