自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

靈活編碼要義:Python中一切皆對(duì)象

開(kāi)發(fā) 后端
Python是一門真正意義上面向?qū)ο蟮木幊陶Z(yǔ)言,你或許也聽(tīng)過(guò)這句話:Python中一切皆對(duì)象。但實(shí)際上,函數(shù)也是一種對(duì)象。為什么這樣講?往下看吧!

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

Python是一門真正意義上面向?qū)ο蟮木幊陶Z(yǔ)言,你或許也聽(tīng)過(guò)這句話:Python中一切皆對(duì)象。

而談及對(duì)象,人們通常將之引用到數(shù)據(jù)集,并稱其為屬性,且對(duì)象具有某種預(yù)定義函數(shù)來(lái)更新這些數(shù)據(jù)或與其他對(duì)象交換數(shù)據(jù)。

但實(shí)際上,函數(shù)也是一種對(duì)象。為什么這樣講?往下看吧!

[[321448]]

數(shù)據(jù)類型作為對(duì)象

所有數(shù)據(jù)類型,如數(shù)字、字符串、列表和詞典,都是Python中的對(duì)象??梢詫⑵渫庥^看作數(shù)據(jù)盒,一些盒子僅因持有int、 bool或str而變小,而一些盒子則因持有l(wèi)ist或 dict而變大,不同之處在于,它們的大小反映出在計(jì)算機(jī)中存儲(chǔ)這些數(shù)據(jù)的所需內(nèi)存。

當(dāng)然,盒子也可以有其他特征,比如顏色和材質(zhì),可以將這些特征定義為與盒子有關(guān)的不同類型的數(shù)據(jù)。

作為對(duì)象,可以應(yīng)用以下常見(jiàn)含義或功能:

  • 可以作為函數(shù)的返回值。
  • 可以作為傳遞給函數(shù)的參數(shù)。
  • 可以賦值給一個(gè)變量。
  • 可以作為數(shù)據(jù)的一部分與其他對(duì)象相關(guān)聯(lián)。
  1. # Assign an int to a variable 
  2.               a =5 
  3.                                   # Use an int asan argument in a function 
  4.               defadd_two(a): 
  5.                  return a +2 
  6.               add_two(6) 
  7.                                   # Return astring in a function 
  8.               defis_even(a): 
  9.                  return'even'if a %2==0else'odd' 
  10.               is_even(745) 
  11.                                   # A booleanvalue in a tuple 
  12.               (True, 7, 8) 

作為Python對(duì)象的含義

上述代碼片段中你可以看到有關(guān)Python對(duì)象的這些含義的示例,比如int和string。即使不太了解Python編碼或任何編程語(yǔ)言也不難理解。

那么為什么有人說(shuō)函數(shù)也是Python中的對(duì)象呢?

函數(shù)作為對(duì)象

進(jìn)入正題前,我們來(lái)回顧一下什么是函數(shù):函數(shù)是命名代碼塊,接受零或多個(gè)輸入,并在運(yùn)行某些計(jì)算后返回輸出。

[[321449]]

下面是一個(gè)簡(jiǎn)單示例,闡釋了上述定義中突出顯示的關(guān)鍵組件:

  1. # Assign an int to a variable 
  2.               a =5 
  3.                                   # Use an int asan argument in a function 
  4.               defadd_two(a): 
  5.                  return a +2 
  6.               add_two(6) 
  7.                                   # Return astring in a function 
  8.               defis_even(a): 
  9.                  return'even'if a %2==0else'odd' 
  10.               is_even(745) 
  11.                                   # A booleanvalue in a tuple 
  12.               (True, 7, 8) 

在上一部分中,我們提到Python數(shù)據(jù)對(duì)象具有的一些常見(jiàn)功能。下面的示例將向你展示函數(shù)如何提供此類功能。

將函數(shù)用作另一個(gè)函數(shù)的參數(shù)

由于函數(shù)是對(duì)象,可以將函數(shù)傳遞為另一個(gè)函數(shù)的參數(shù)。如下所示,創(chuàng)建了三個(gè)函數(shù):combine_two_numbers()、add_two_numbers()及multiply_two_numbers(),后者用于計(jì)算元組中兩個(gè)數(shù)字的和及乘積。

與通常所見(jiàn)函數(shù)的不同,這里將函數(shù)add_two_numbers 和 multiply_two_numbers作為參數(shù)傳遞,這進(jìn)一步分別計(jì)算了這些數(shù)字元組的和及乘積。

靈活編碼要義:Python中一切皆對(duì)象

函數(shù)作為函數(shù)的參數(shù)

變量賦值

在以下代碼片段中,筆者創(chuàng)建了一個(gè)名為greeting()的函數(shù),并將其分配給變量say_hello,它產(chǎn)生的輸出與greeting()相同。

靈活編碼要義:Python中一切皆對(duì)象

將函數(shù)賦值給一個(gè)變量

需要注意的一點(diǎn)是,greeting()和 say_hello()函數(shù)都指向內(nèi)存中的同一個(gè)對(duì)象。例如,如果檢查它們的地址,都具有如下所示的相同值。如果刪除greeting()函數(shù),名稱“greeting”將變成未定義狀態(tài),而刪除不會(huì)影響由“sayhello”函數(shù)引用的潛在對(duì)象。

因此,在此有一個(gè)重要的概念,即引用函數(shù)的變量與存儲(chǔ)在內(nèi)存中的實(shí)際對(duì)象不同。

靈活編碼要義:Python中一切皆對(duì)象

操作函數(shù)

函數(shù)作為返回值

作為對(duì)象,Python函數(shù)可以作為函數(shù)的有效返回值。來(lái)看看以下示例,筆者編寫(xiě)了一個(gè)名為add_number_creator()的函數(shù),它返回一個(gè)可以向整數(shù)參數(shù)添加數(shù)字的函數(shù)。

通過(guò)調(diào)用add_number_creator()函數(shù),創(chuàng)建了函數(shù)add_three()和 add_five()。這兩個(gè)函數(shù)完成預(yù)期任務(wù),向函數(shù)調(diào)用中指定的整數(shù)添加3和5。

靈活編碼要義:Python中一切皆對(duì)象

函數(shù)作為返回值

函數(shù)作為另一對(duì)象的一部分

我們也可以創(chuàng)建一個(gè)函數(shù)列表,使這些函數(shù)成list對(duì)象的一部分。繼上一個(gè)例子,我們使用add_number_creator()函數(shù)創(chuàng)建了三個(gè)函數(shù),分別輸入整數(shù)添加0、1和2。如你所見(jiàn),可以枚舉函數(shù)列表,就像通常對(duì)整數(shù)或字符串列表所做的那樣。

靈活編碼要義:Python中一切皆對(duì)象

函數(shù)作為另一對(duì)象的一部分

明白了吧,函數(shù)與Python中的其他對(duì)象一樣,可以將其分配給變量并在函數(shù)中使用。文中示例比較簡(jiǎn)單,遇到復(fù)雜的情況也是一樣的道理。

利用好這一特征,助你靈活編碼。

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2024-01-01 16:01:22

Python函數(shù)

2020-09-16 11:46:05

AI

2020-01-09 09:13:34

UnixLinux協(xié)議

2013-10-09 14:30:36

2024-03-28 08:24:01

球盒模型回溯

2012-08-02 17:44:01

2019-06-14 14:58:58

虛擬文件系統(tǒng)Linux

2023-06-09 17:11:57

MetaStudio

2021-05-28 07:12:59

Python閉包函數(shù)

2016-01-15 18:45:24

IM即時(shí)通訊云服務(wù)

2016-08-31 17:24:05

大數(shù)據(jù)分析

2012-12-31 11:22:58

開(kāi)源開(kāi)放

2020-09-11 10:55:10

useState組件前端

2021-02-28 09:47:54

軟件架構(gòu)軟件開(kāi)發(fā)軟件設(shè)計(jì)

2012-11-05 15:22:59

康普光纜DCD

2018-11-23 11:17:24

負(fù)載均衡分布式系統(tǒng)架構(gòu)

2021-02-19 23:08:27

軟件測(cè)試軟件開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)