日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
python+指向函數(shù),python 函數(shù)

python 高階函數(shù)有哪些

1、高階函數(shù)

成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡營銷推廣、網(wǎng)站重做改版、建昌網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、外貿(mào)營銷網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為建昌等各大城市提供網(wǎng)站開發(fā)制作服務。

變量可以指向函數(shù),函數(shù)的參數(shù)可以接收變量,那么函數(shù)可以接收另一個函數(shù)作為參數(shù),這種函數(shù)稱為高階函數(shù)。

(1)把函數(shù)作為實參

(2)把函數(shù)作為返回值

2、系統(tǒng)的內(nèi)置高階函數(shù)

(1)map函數(shù):接收兩個參數(shù),一個是函數(shù),一個是序列,map將傳入的函數(shù)依次作用到序列的每個元素,并且把結果作為新的列表返回

(2)reduce函數(shù):把一個函數(shù)作用到一個序列上,這個函數(shù)必須接收兩個參數(shù),reduce把結果和序列的下一個元素做累積計算

(3)filter函數(shù):也接收一個函數(shù)和一個序列,和map函數(shù)不同的是,filter函數(shù)把傳入的函數(shù)依次作用于每個元素,然后返回返回值是True的元素

(4)sorted函數(shù):排序函數(shù)

把用戶名按照首字母不區(qū)分大小寫排序

(5)sorted()函數(shù)按照關鍵字排序

關鍵字:商品個數(shù)

(6)sorted()函數(shù)按照關鍵字排序,用鍵值來查找

(7)lambda匿名函數(shù):有時候傳參數(shù)時不需要顯示自定義的函數(shù),直接傳入匿名函數(shù)更方便;冒號前面的x,y表示函數(shù)參數(shù),匿名函數(shù)不需要擔心函數(shù)名的沖突,匿名函數(shù)也是一個函數(shù)對象,可以把匿名函數(shù)賦值給一個變量,再利用變量來調用函數(shù),匿名函數(shù)也可以作為返回值返回

3、高階函數(shù)的應用:

(1)sorted函數(shù):

(2)sorted函數(shù)默認是從小到大排序

4、裝飾器

裝飾器就是用來裝飾函數(shù)的:想要增加原有函數(shù)的功能,但是不希望修改原有函數(shù)的定義,在代碼運行期間動態(tài)增加功能的方式

(1)此裝飾器的功能:計算函數(shù)的運行時間

import functools

@functools.wraps(f)? ?##保留原有函數(shù)的屬性

運行結果:

(2)此裝飾器的功能:用戶登錄認證

運行結果:

(3)此裝飾器的功能:認證用戶的同時,顯示用戶的轉賬金額

import inspect

inspect.getcallargs()將傳的參數(shù)封裝為一個字典,字典的key值是形式參數(shù),value值是實參

(4)此裝飾器的功能:確保收到的每個參數(shù)都是整數(shù),是整數(shù)就求和,否則拋出錯誤

(5)此裝飾器的功能:給裝飾器傳參數(shù),是整數(shù)和浮點數(shù)就求和

python學習網(wǎng),大量的免費python視頻教程,歡迎在線學習!

python函數(shù)高級

一、函數(shù)的定義

函數(shù)是指將一組語句的集合通過一個名字(函數(shù)名)封裝起來,想要執(zhí)行這個函數(shù),只需要調用函數(shù)名即可

特性:

減少重復代碼

使程序變得可擴展

使程序變得易維護

二、函數(shù)的參數(shù)

2.1、形參和實參數(shù)

形參,調用時才會存在的值

實慘,實際存在的值

2.2、默認參數(shù)

定義:當不輸入?yún)?shù)值會有一個默認的值,默認參數(shù)要放到最后

2.3、 關鍵參數(shù)

定義: 正常情況下,給函數(shù)傳參數(shù)要安裝順序,不想按順序可以用關鍵參數(shù),只需要指定參數(shù)名即可,(指定了參數(shù)名的就叫關鍵參數(shù)),但是要求是關鍵參數(shù)必須放在位置參數(shù)(以位置順序確定對應的參數(shù))之后

2.4、非固定參數(shù)

定義: 如你的函數(shù)在傳入?yún)?shù)時不確定需要傳入多少個參數(shù),就可以使用非固定參數(shù)

# 通過元組形式傳遞

# 通過列表形式傳遞

# 字典形式(通過k,value的方式傳遞)

# 通過變量的方式傳遞

三、函數(shù)的返回值

作用:

返回函數(shù)執(zhí)行結果,如果沒有設置,默認返回None

終止函數(shù)運行,函數(shù)遇到return終止函數(shù)

四、變量的作用域

全局變量和局部變量

在函數(shù)中定義的變量叫局部變量,在程序中一開始定義的變量叫全局變量

全局變量作用域整個程序,局部變量作用域是定義該變量的函數(shù)

當全局變量與局部變量同名是,在定義局部變量的函數(shù)內(nèi),局部變量起作用,其他地方全局變量起作用

同級的局部變量不能互相調用

想要函數(shù)里邊的變量設置成全局變量,可用global進行設置

五、特殊函數(shù)

5.1、嵌套函數(shù)

定義: 嵌套函數(shù)顧名思義就是在函數(shù)里邊再嵌套一層函數(shù)

提示 在嵌套函數(shù)里邊調用變量是從里往外依次調用,意思就是如果需要調用的變量在當前層沒有就會去外層去調用,依次內(nèi)推

匿名函數(shù)

基于Lambda定義的函數(shù)格式為: lambda 參數(shù):函數(shù)體

參數(shù),支持任意參數(shù)。

匿名函數(shù)適用于簡單的業(yè)務處理,可以快速并簡單的創(chuàng)建函數(shù)。

# 與三元運算結合

5.3、高階函數(shù)

定義:變量可以指向函數(shù),函數(shù)的參數(shù)可以接收變量,那么一個函數(shù)就可以接收另一個函數(shù)作為參數(shù),這種函數(shù)稱之為高階函數(shù) 只需要滿足一下任意一個條件,即是高階函數(shù)

接收一個或多個函數(shù)作為輸入

return返回另一個函數(shù)

5.4、遞歸函數(shù)

定義:一個函數(shù)可以調用其他函數(shù),如果一個函數(shù)調用自己本身,這個函數(shù)就稱為遞歸函數(shù)

在默認情況下Python最多能遞歸1000次,(這樣設計師是為了防止被內(nèi)存被撐死)可以通過sys.setrecursionlimit(1500)進行修改

遞歸實現(xiàn)過程是先一層一層的進,然后在一層一層的出來

必須有一個明確的條件結束,要不然就是一個死循環(huán)了

每次進入更深層次,問題規(guī)模都應該有所減少

遞歸執(zhí)行效率不高,遞歸層次過多會導致站溢出

# 計算4的階乘 4x3x2x1

# 打印數(shù)字從1-100

5.5、閉包現(xiàn)象

定義:內(nèi)層函數(shù)調用外層函數(shù)的變量,并且內(nèi)存函數(shù)被返回到外邊去了

閉包的意義:返回的函數(shù)對象,不僅僅是一個函數(shù)對象,在該函數(shù)外還包裹了一層作用域,這使得,該函數(shù)無論在何處調用,優(yōu)先使用自己外層包裹的作用域

Python函數(shù)的參數(shù)類型

Python函數(shù)的參數(shù)類型主要包括必選參數(shù)、可選參數(shù)、可變參數(shù)、位置參數(shù)和關鍵字參數(shù),本文介紹一下他們的定義以及可變數(shù)據(jù)類型參數(shù)傳遞需要注意的地方。

必選參數(shù)(Required arguments)是必須輸入的參數(shù),比如下面的代碼,必須輸入2個參數(shù),否則就會報錯:

其實上面例子中的參數(shù) num1和num2也屬于關鍵字參數(shù),比如可以通過如下方式調用:

執(zhí)行結果:

可選參數(shù)(Optional arguments)可以不用傳入函數(shù),有一個默認值,如果沒有傳入會使用默認值,不會報錯。

位置參數(shù)(positional arguments)根據(jù)其在函數(shù)定義中的位置調用,下面是pow()函數(shù)的幫助信息:

x,y,z三個參數(shù)的的順序是固定的,并且不能使用關鍵字:

輸出:

在上面的pow()函數(shù)幫助信息中可以看到位置參數(shù)后面加了一個反斜杠 / ,這是python內(nèi)置函數(shù)的語法定義,Python開發(fā)人員不能在python3.8版本之前的代碼中使用此語法。但python3.0到3.7版本可以使用如下方式定義位置參數(shù):

星號前面的參數(shù)為位置參數(shù)或者關鍵字參數(shù),星號后面是強制關鍵字參數(shù),具體介紹見強制關鍵字參數(shù)。

python3.8版本引入了強制位置參數(shù)(Positional-Only Parameters),也就是我們可以使用反斜杠 / 語法來定義位置參數(shù)了,可以寫成如下形式:

來看下面的例子:

python3.8運行:

不能使用關鍵字參數(shù)形式賦值了。

可變參數(shù) (varargs argument) 就是傳入的參數(shù)個數(shù)是可變的,可以是0-n個,使用星號( * )將輸入?yún)?shù)自動組裝為一個元組(tuple):

執(zhí)行結果:

關鍵字參數(shù)(keyword argument)允許將任意個含參數(shù)名的參數(shù)導入到python函數(shù)中,使用雙星號( ** ),在函數(shù)內(nèi)部自動組裝為一個字典。

執(zhí)行結果:

上面介紹的參數(shù)可以混合使用:

結果:

注意:由于傳入的參數(shù)個數(shù)不定,所以當與普通參數(shù)一同使用時,必須把帶星號的參數(shù)放在最后。

強制關鍵字參數(shù)(Keyword-Only Arguments)是python3引入的特性,可參考:。 使用一個星號隔開:

在位置參數(shù)一節(jié)介紹過星號前面的參數(shù)可以是位置參數(shù)和關鍵字參數(shù)。星號后面的參數(shù)都是強制關鍵字參數(shù),必須以指定參數(shù)名的方式傳參,如果強制關鍵字參數(shù)沒有設置默認參數(shù),調用函數(shù)時必須傳參。

執(zhí)行結果:

也可以在可變參數(shù)后面命名關鍵字參數(shù),這樣就不需要星號分隔符了:

執(zhí)行結果:

在Python對象及內(nèi)存管理機制中介紹了python中的參數(shù)傳遞屬于對象的 引用傳遞 (pass by object reference),在編寫函數(shù)的時候需要特別注意。

先來看個例子:

執(zhí)行結果:

l1 和 l2指向相同的地址,由于列表可變,l1改變時,l2也跟著變了。

接著看下面的例子:

結果:

l1沒有變化!為什么不是[1, 2, 3, 4]呢?

l = l + [4]表示創(chuàng)建一個“末尾加入元素 4“的新列表,并讓 l 指向這個新的對象,l1沒有進行任何操作,因此 l1 的值不變。如果要改變l1的值,需要加一個返回值:

結果:

下面的代碼執(zhí)行結果又是什么呢?

執(zhí)行結果:

和第一個例子一樣,l1 和 l2指向相同的地址,所以會一起改變。這個問題怎么解決呢?

可以使用下面的方式:

也可以使用淺拷貝或者深度拷貝,具體使用方法可參考Python對象及內(nèi)存管理機制。這個問題在Python編程時需要特別注意。

本文主要介紹了python函數(shù)的幾種參數(shù)類型:必選參數(shù)、可選參數(shù)、可變參數(shù)、位置參數(shù)、強制位置參數(shù)、關鍵字參數(shù)、強制關鍵字參數(shù),注意他們不是完全獨立的,比如必選參數(shù)、可選參數(shù)也可以是關鍵字參數(shù),位置參數(shù)可以是必選參數(shù)或者可選參數(shù)。

另外,python中的參數(shù)傳遞屬于對象的 引用傳遞 ,在對可變數(shù)據(jù)類型進行參數(shù)傳遞時需要特別注意,如有必要,使用python的拷貝方法。

參考文檔:

--THE END--

Python中變量名是標簽,指向一塊內(nèi)存,函數(shù)名是不是也是這個道理?

是的。Python里應該大多數(shù)都是標簽,指向一塊內(nèi)存的。比如說我定義一個a函數(shù),單獨輸入函數(shù)名后也可以發(fā)現(xiàn)它是一個標簽,指向了一塊內(nèi)存function a at 0x041CC6A8。

def a():

pass

a

function a at 0x041CC6A8

python 函數(shù)參數(shù)類型

python 的函數(shù)參數(shù)類型分為4種:

1.位置參數(shù):調用函數(shù)時根據(jù)函數(shù)定義的參數(shù)位置來傳遞參數(shù),位置參數(shù)也可以叫做必要參數(shù),函數(shù)調用時必須要傳的參數(shù)。

當參數(shù)滿足函數(shù)必要參數(shù)傳參的條件,函數(shù)能夠正常執(zhí)行:

add(1,2) #兩個參數(shù)的順序必須一一對應,且少一個參數(shù)都不可以

當我們運行上面的程序,輸出:

當函數(shù)需要兩個必要參數(shù),但是調用函數(shù)只給了一個參數(shù)時,程序會拋出異常

add(1)

當我們運行上面的程序,輸出:

當函數(shù)需要兩個必要參數(shù),但是調用函數(shù)只給了三個參數(shù)時,程序會拋出異常

add(1,2,3)

當我們運行上面的程序,輸出

2.關鍵字參數(shù):用于函數(shù)調用,通過“鍵-值”形式加以指定。可以讓函數(shù)更加清晰、容易使用,同時也清除了參數(shù)的順序需求。

add(1,2) # 這種方式傳參,必須按順序傳參:x對應1,y對應:2

add(y=2,x=1) #以關健字方式傳入?yún)?shù)(可以不按順序)

正確的調用方式

add(x=1, y=2)

add(y=2, x=1)

add(1, y=2)

以上調用方式都是允許的,能夠正常執(zhí)行

錯誤的調用方式

add(x=1, 2)

add(y=2, 1)

以上調用都會拋出SyntaxError 異常

上面例子可以看出:有位置參數(shù)時,位置參數(shù)必須在關鍵字參數(shù)的前面,但關鍵字參數(shù)之間不存在先后順序的

3.默認參數(shù):用于定義函數(shù),為參數(shù)提供默認值,調用函數(shù)時可傳可不傳該默認參數(shù)的值,所有位置參數(shù)必須出現(xiàn)在默認參數(shù)前,包括函數(shù)定義和調用,有多個默認參數(shù)時,調用的時候,既可以按順序提供默認參數(shù),也可以不按順序提供部分默認參數(shù)。當不按順序提供部分默認參數(shù)時,需要把參數(shù)名寫上

默認參數(shù)的函數(shù)定義

上面示例第一個是正確的定義位置參數(shù)的方式,第二個是錯誤的,因為位置參數(shù)在前,默認參數(shù)在后

def add1(x=1,y) 的定義會拋出如下異常

默認參數(shù)的函數(shù)調用

注意:定義默認參數(shù)默認參數(shù)最好不要定義為可變對象,容易掉坑

不可變對象:該對象所指向的內(nèi)存中的值不能被改變,int,string,float,tuple

可變對象,該對象所指向的內(nèi)存中的值可以被改變,dict,list

這里只要理解一下這個概念就行或者自行百度,后續(xù)會寫相關的專題文章講解

舉一個簡單示例

4.可變參數(shù)區(qū)別:定義函數(shù)時,有時候我們不確定調用的時候會多少個參數(shù),j就可以使用可變參數(shù)

可變參數(shù)主要有兩類:

*args: (positional argument) 允許任意數(shù)量的可選位置參數(shù)(參數(shù)),將被分配給一個元組, 參數(shù)名前帶*,args只是約定俗成的變量名,可以替換其他名稱

**kwargs:(keyword argument) 允許任意數(shù)量的可選關鍵字參數(shù),,將被分配給一個字典,參數(shù)名前帶**,kwargs只是約定俗成的變量名,可以替換其他名稱

*args 的用法

args 是用來傳遞一個非鍵值對的可變數(shù)量的參數(shù)列表給函數(shù)

語法是使用 符號的數(shù)量可變的參數(shù); 按照慣例,通常是使用arg這個單詞,args相當于一個變量名,可以自己定義的

在上面的程序中,我們使用* args作為一個可變長度參數(shù)列表傳遞給add()函數(shù)。 在函數(shù)中,我們有一個循環(huán)實現(xiàn)傳遞的參數(shù)計算和輸出結果。

還可以直接傳遞列表或者數(shù)組的方式傳遞參數(shù),以數(shù)組或者列表方式傳遞參數(shù)名前面加(*) 號

理解* * kwargs

**kwargs 允許你將不定長度的鍵值對, 作為參數(shù)傳遞給函數(shù),這些關鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict

下篇詳細講解 *args, **kwargs 的參數(shù)傳遞和使用敬請關注

Python的函數(shù)都有哪些

【常見的內(nèi)置函數(shù)】

1、enumerate(iterable,start=0)

是python的內(nèi)置函數(shù),是枚舉、列舉的意思,對于一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。

2、zip(*iterables,strict=False)

用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表。如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用*號操作符,可以將元組解壓為列表。

3、filter(function,iterable)

filter是將一個序列進行過濾,返回迭代器的對象,去除不滿足條件的序列。

4、isinstance(object,classinfo)

是用來判斷某一個變量或者是對象是不是屬于某種類型的一個函數(shù),如果參數(shù)object是classinfo的實例,或者object是classinfo類的子類的一個實例,

返回True。如果object不是一個給定類型的的對象, 則返回結果總是False

5、eval(expression[,globals[,locals]])

用來將字符串str當成有效的表達式來求值并返回計算結果,表達式解析參數(shù)expression并作為Python表達式進行求值(從技術上說是一個條件列表),采用globals和locals字典作為全局和局部命名空間。

【常用的句式】

1、format字符串格式化

format把字符串當成一個模板,通過傳入的參數(shù)進行格式化,非常實用且強大。

2、連接字符串

常使用+連接兩個字符串。

3、if...else條件語句

Python條件語句是通過一條或多條語句的執(zhí)行結果(True或者False)來決定執(zhí)行的代碼塊。其中if...else語句用來執(zhí)行需要判斷的情形。

4、for...in、while循環(huán)語句

循環(huán)語句就是遍歷一個序列,循環(huán)去執(zhí)行某個操作,Python中的循環(huán)語句有for和while。

5、import導入其他腳本的功能

有時需要使用另一個python文件中的腳本,這其實很簡單,就像使用import關鍵字導入任何模塊一樣。


文章題目:python+指向函數(shù),python 函數(shù)
轉載來于:http://www.dlmjj.cn/article/dsijshc.html