真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python函數(shù)是對(duì)象嗎的簡(jiǎn)單介紹

怎樣理解python中的函數(shù),用戶自定義函數(shù)有什么意義?

函數(shù)是什么?

公司主營(yíng)業(yè)務(wù):做網(wǎng)站、網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出河曲免費(fèi)做網(wǎng)站回饋大家。

定義:函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。

作用:函數(shù)能提高應(yīng)用的模塊性和代碼的重復(fù)利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。

函數(shù)是 python 的一等公民,函數(shù)也是對(duì)象。

使用函數(shù)有兩個(gè)步驟:

1、定義函數(shù)?def 函數(shù)名(): 函數(shù)體

2、調(diào)用函數(shù)?函數(shù)名()

python變量是對(duì)象嗎

Python中的變量也是對(duì)象,函數(shù)也是對(duì)象,類也是對(duì)象,Python中一切皆對(duì)象。

變量的概念

變量存儲(chǔ)在內(nèi)存中的值。這就意味著在創(chuàng)建變量時(shí)會(huì)在內(nèi)存中開辟一個(gè)空間。

基于變量的數(shù)據(jù)類型,解釋器會(huì)分配指定內(nèi)存,并決定什么數(shù)據(jù)可以被存儲(chǔ)在內(nèi)存中。

因此,變量可以指定不同的數(shù)據(jù)類型,這些變量可以存儲(chǔ)整數(shù),小數(shù)或字符。

變量賦值

Python 中的變量賦值不需要類型聲明。

每個(gè)變量在內(nèi)存中創(chuàng)建,都包括變量的標(biāo)識(shí),名稱和數(shù)據(jù)這些信息。

每個(gè)變量在使用前都必須賦值,變量賦值以后該變量才會(huì)被創(chuàng)建。

等號(hào)(=)用來給變量賦值。

等號(hào)(=)運(yùn)算符左邊是一個(gè)變量名,等號(hào)(=)運(yùn)算符右邊是存儲(chǔ)在變量中的值。

Python學(xué)習(xí)網(wǎng)- 專業(yè)的python自學(xué)、交流公益平臺(tái)!

如何正確理解Python函數(shù)是第一類對(duì)象

函數(shù)作為第一類對(duì)象(First-Class Object)卻是 Python 函數(shù)的一大特性。那究竟什么是第一類對(duì)象呢?

在 Python 中萬物皆為對(duì)象,函數(shù)也不例外,函數(shù)作為對(duì)象可以賦值給一個(gè)變量、可以作為元素添加到集合對(duì)象中、可作為參數(shù)值傳遞給其它函數(shù),還可以當(dāng)做函數(shù)的返回值,這些特性就是第一類對(duì)象所特有的。

正確理解 Python函數(shù),能夠幫助我們更好地理解 Python 裝飾器、匿名函數(shù)(lambda)、函數(shù)式編程等高階技術(shù)。先來看一個(gè)簡(jiǎn)單的例子

def foo(text):

... return len(text)

...

foo("zen of python")

13

這是一個(gè)再簡(jiǎn)單不過的函數(shù),用于計(jì)算參數(shù) text 的長(zhǎng)度,調(diào)用函數(shù)就是函數(shù)名后面跟一個(gè)括號(hào),再附帶一個(gè)參數(shù),返回值是一個(gè)整數(shù)。

函數(shù)是對(duì)象

函數(shù)身為一個(gè)對(duì)象,擁有對(duì)象模型的三個(gè)通用屬性:id、類型、和值。

id(foo)

4361313816

type(foo)

class 'function'

foo

function foo at 0x103f45e18

作為對(duì)象,函數(shù)可以賦值給一個(gè)變量

bar = foo

賦值給另外一個(gè)變量時(shí),函數(shù)并不會(huì)被調(diào)用,僅僅是在函數(shù)對(duì)象上綁定一個(gè)新的名字而已。

bar("zen of python")

13

同理,你還可以把該函數(shù)賦值給更多的變量,唯一變化的是該函數(shù)對(duì)象的引用計(jì)數(shù)不斷地增加,本質(zhì)上這些變量最終指向的都是同一個(gè)函數(shù)對(duì)象。

a = foo

函數(shù)可以存儲(chǔ)在容器

容器對(duì)象(list、dict、set等)中可以存放任何對(duì)象,包括整數(shù)、字符串,函數(shù)也可以作存放到容器對(duì)象中,例如

funcs = [foo, str, len]

foo 是我們自定義的函數(shù),str 和 len 是兩個(gè)內(nèi)置函數(shù)。for 循環(huán)逐個(gè)地迭代出列表中的每個(gè)元素時(shí),函數(shù)對(duì)象賦值給了 f 變量,調(diào)用 f(“hello”) 與 調(diào)用 foo(“hello”) 本質(zhì)是一樣的效果,每次 f 都重新指向一個(gè)新的函數(shù)對(duì)象。當(dāng)然,你也可以使用列表的索引定位到元素來調(diào)用函數(shù)。

funcs[0]("Python之禪")

# 等效于 foo("Python之禪")

8

函數(shù)可以作為參數(shù)

函數(shù)還可以作為參數(shù)值傳遞給另外一個(gè)函數(shù),例如:

def show(func):

... size = func("python 之禪") # 等效于 foo("Python之禪")

... print ("length of string is : %s" % size)

...

show(foo)

length of string is : 9

函數(shù)可以作為返回值

函數(shù)作為另外一個(gè)函數(shù)的返回值,例如:

def nick():

還可以簡(jiǎn)寫為

nick()("python")

函數(shù)接受一個(gè)或多個(gè)函數(shù)作為輸入或者函數(shù)輸出(返回)的值是函數(shù)時(shí),我們稱這樣的函數(shù)為高階函數(shù),比如上面的 show 和 nick 都屬于高階函數(shù)。

Python內(nèi)置函數(shù)中,典型的高階函數(shù)是 map 函數(shù),map 接受一個(gè)函數(shù)和一個(gè)迭代對(duì)象作為參數(shù),調(diào)用 map 時(shí),依次迭代把迭代對(duì)象的元素作為參數(shù)調(diào)用該函數(shù)。

map(foo, ["the","zen","of","python"])

lens = map(foo, ["the","zen","of","python"])

list(lens)

[3, 3, 2, 6]

map 函數(shù)的作用相當(dāng)于:

[foo(i) for i in ["the","zen","of","python"]]

[3, 3, 2, 6]

只不過 map 的運(yùn)行效率更快一點(diǎn)。

函數(shù)可以嵌套

Python還允許函數(shù)中定義函數(shù),這種函數(shù)叫嵌套函數(shù)。

def get_length(text):

... def clean(t): # 2

... return t[1:]

... new_text = clean(text) # 1

... return len(new_text)

...

get_length("python")

5

這個(gè)函數(shù)的目的是去除字符串的第一個(gè)字符后再計(jì)算它的長(zhǎng)度,盡管函數(shù)本身的意義不大,但能足夠說明嵌套函數(shù)。get_length 調(diào)用時(shí),先執(zhí)行1處代碼,發(fā)現(xiàn)有調(diào)用 clean 函數(shù),于是接著執(zhí)行2中的代碼,把返回值賦值給了 new_text ,再繼續(xù)執(zhí)行后續(xù)代碼。

clean("python")

Traceback (most recent call last):

File "stdin", line 1, in module

NameError: name 'clean' is not defined

函數(shù)中里面嵌套的函數(shù)不能在函數(shù)外面訪問,只能是在函數(shù)內(nèi)部使用,超出了外部函數(shù)的做用域就無效了。

實(shí)現(xiàn)了 __call__ 的類也可以作為函數(shù)

對(duì)于一個(gè)自定義的類,如果實(shí)現(xiàn)了 __call__ 方法,那么該類的實(shí)例對(duì)象的行為就是一個(gè)函數(shù),是一個(gè)可以被調(diào)用(callable)的對(duì)象。例如:

class Add:

def __init__(self, n):

self.n = n

def __call__(self, x):

return self.n + x

add = Add(1)

add(4)

5

執(zhí)行 add(4) 相當(dāng)于調(diào)用 Add.__call__(add, 4),self 就是實(shí)例對(duì)象 add,self.n 等于 1,所以返回值為 1+4

add(4)

確定對(duì)象是否為可調(diào)用對(duì)象可以用內(nèi)置函數(shù)callable來判斷。

callable(foo)

True

callable(1)

False

callable(int)

True

總結(jié)

Python中包含函數(shù)在內(nèi)的一切皆為對(duì)象,函數(shù)作為第一類對(duì)象,支持賦值給變量,作為參數(shù)傳遞給其它函數(shù),作為其它函數(shù)的返回值,支持函數(shù)的嵌套,實(shí)現(xiàn)了__call__方法的類實(shí)例對(duì)象也可以當(dāng)做函數(shù)被調(diào)用。


本文標(biāo)題:python函數(shù)是對(duì)象嗎的簡(jiǎn)單介紹
本文鏈接:http://weahome.cn/article/dsecipj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部