国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Python編程:有關函數返回值以及最佳實踐基本指導原則

開發 前端
到此關于Python函數的主體性知識就介紹完了——函數定義語法、輸入參數定義以及相關規則、返回值實現和多返回值等,并簡單總結了基于最佳實踐的一些有益基本指導原則。請多加練習和體會,以便更好的理解和掌握作為Python的核心特性之一的函數。

本篇內容作為以函數為主題的最后一篇,來介紹一下函數返回值以及編寫函數的一些基本的最佳實踐指導原則。

函數輸出:返回值

函數的返回值是Python領先于競爭對手的東西之一。在大多數其他語言中,函數通常只允許返回一個對象,但是在Python中,你可以返回一個元組——這意味著可以返回任何你想要的東西。這個特性允許程序員編寫用其他語言編寫的軟件要困難得多,或者肯定會更加乏味。我們已經說過,要從函數返回一些東西,我們需要使用return語句,后面跟著我們想要返回的東西。函數體中可以根據需要有多個返回語句。

另一方面,如果在函數體中我們不返回任何東西,或者我們調用一個“裸”return語句,函數將返回None。當不需要時,這種行為是無害的,但是也允許你整些有趣的模式的,確認Python是一種非常一致的語言。

我們說它是無害的,因為你永遠不會被迫收集函數調用的結果。下面將通過一個例子向你展示所說的意思:

# 返回none值
def func():
pass

func() # 這個調用是沒有接收的,將丟失
a = func() # 這個調用被a接收
print(a) # prints: None

注意,整個函數體僅由pass語句組成。正如官方文檔告訴我們的那樣,pass是一個空操作,因為當它被執行時,什么也不會發生。當語法上需要語句但不需要執行代碼時,它作為占位符非常有用。在其他語言中,我們可能只需要用一對花括號({})來表示,這定義了一個空作用域;但在Python中,作用域是由縮進代碼定義的,因此像pass這樣的語句是必要的。

還要注意,func()的第一個調用返回一個沒有接收的值(None)。正如我們前面提到的,接收函數調用的返回值不是必須的。

這很好,但不是很有趣,我們寫一個有趣的函數怎么樣?還記得我們討論過階乘函數。讓我們在這里編寫我們自己的實現(為了簡單起見,我們假設函數總是用適當的值正確調用,所以我們不需要檢查輸入參數):

# 階乘函數,返回單個值
def factorial(n):
if n in (0, 1):
return 1
result = n
for k in range(2, n):
result *= k
return result

f5 = factorial(5) # f5 = 120

注意,我們有兩個返回點。如果n是0或1,則返回1。否則,我們執行所需的計算并返回結果。

提示:在Python中,通常使用in操作符來進行成員檢查,就像我們在前面的例子中所做的那樣,而不是更冗長的檢查:

if n == 0 or n == 1:

現在再來試著把這個函數寫得更簡潔一點:

# 返回單個值示例.2
from functools import reduce
from operator import mul

def factorial2(n):
return reduce(mul, range(1, n + 1), 1)

f5 = factorial(5) # f5 = 120

這個簡單的示例展示了Python是如何既優雅又簡潔的。即使我們從未見過reduce()或mul(),這個實現也是可讀的。如果你不能看懂或理解它,抽出幾分鐘來做一些Python文檔研究,直到你清楚它的行為。能夠在文檔中查找函數并理解由其他人編寫的代碼是每個開發人員都需要能夠執行的任務,因此將其作為一個挑戰。

提示:學會查看Python自帶幫助,請確保查找help()函數,這在使用控制臺進行探索時非常有用。

 返回多個值

正如我們前面提到的,與大多數其他語言不同,Python非常容易從一個函數返回多個對象。這個特性帶來了無限的可能性,并允許你以一種難以用其他語言再現的風格進行編碼。我們的思維會受到我們使用的工具的限制。因此,當Python給予你比其他語言更多的自由時,它就是在增強你的創造性能力。

返回多個值非常簡單:只需使用元組(顯式或隱式)。讓我們看一個模仿divmod()內置函數的簡單例子:

# 返回多個值
def moddiv(a, b):
return a // b, a % b

print(moddiv(20, 7)) # prints (2, 6)

我們可以將前面代碼中粗體部分包裝在括號中,使其成為顯式元組,但沒有必要這樣做。上面的函數同時返回除法的結果和余數。

有關函數的有益建議

在編寫函數時,遵循一些最佳實踐指導原則是非常有用的,這樣才能很好地編寫函數。我們來看一看這些指導原則,以助益你更好的理解和應用函數。

1)函數應只做一件事

做一件事的函數很容易用一句話來描述。執行多項任務的函數可以重構拆分為執行一項任務的更小函數。這些較小的函數通常更容易閱讀和理解。

2)函數應是很小的

它們越小,測試和編寫它們就越容易,這樣它們也就更專注于只做一件事。

3)輸入參數越少越好

接受大量參數的函數很快就變得難以管理(以及其他問題)。當需更多的輸入參數時,酌情考慮,如重構為類對象或其它復合型數據。

4)函數的返回值應該一致

返回False和返回None不是一回事,即使在布爾上下文中,它們的值都是False。False表示我們有信息(即False),而None表示沒有信息。盡可能編寫以一致的方式返回的函數,無論其邏輯中發生了什么。

5)函數不應該有副作用

換句話說,函數不應該影響調用它們的值。這可能是目前最難理解的一條實踐性原則,所以這里給出一個使用列表的示例。在下面的代碼中,注意如何不使用sorted()函數對numbers進行排序,該函數實際上返回的是已排序的數字副本。相反,list.sort()方法作用于numbers對象本身,這很好,因為它是一個方法(屬于對象的函數,因此有權修改它):

>>> numbers = [4, 1, 7, 5]
>>> sorted(numbers) # 不會排序原始的'numbers' 數字列表
[1, 4, 5, 7]
>>> numbers # 驗證一下
[4, 1, 7, 5] # 很好,沒有改變原始數據對象
>>> numbers.sort() # 這將實質性影響原始列表
>>> numbers
[1, 4, 5, 7]

所以,遵循以上這些常規的基本指導原則,將有益于你寫出更好的函數,為你實現更好的服務。

本文小結

到此關于Python函數的主體性知識就介紹完了——函數定義語法、輸入參數定義以及相關規則、返回值實現和多返回值等,并簡單總結了基于最佳實踐的一些有益基本指導原則。請多加練習和體會,以便更好的理解和掌握作為Python的核心特性之一的函數。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2010-07-21 10:32:05

Perl函數返回值

2010-07-07 16:53:50

UML順序圖

2025-01-17 10:52:26

定義函數編程Python

2023-12-05 14:10:00

接口可讀性

2021-08-13 11:31:23

HTTP

2009-11-17 16:16:59

PHP遞歸函數

2013-05-24 09:37:25

結對編程結對編程實踐BitBucket

2025-07-22 06:00:00

async開發函數

2013-12-27 13:39:23

Java套接字

2013-03-01 09:53:40

軟件開發

2010-02-03 16:03:44

Python系統文件

2010-07-20 11:37:00

Perl函數返回值

2009-12-07 11:11:41

WCF返回值

2022-07-07 09:03:36

Python返回函數匿名函數

2009-12-25 17:21:13

ADO返回值

2010-07-09 13:20:37

HART協議

2012-03-06 09:02:41

軟件開發

2022-10-21 07:50:35

裝飾器Python編程

2010-03-02 16:50:34

WCF返回值

2022-02-23 13:31:26

RVO編譯器優化
點贊
收藏

51CTO技術棧公眾號

亚洲精品无人区| 伊人久久成人| 杨幂一区欧美专区| 精品国精品国产| 丝袜脚交一区二区| 国产精品va在线观看视色| 91九色对白| 欧美年轻男男videosbes| 久热精品视频| 亚洲综合电影| 亚洲色欲综合一区二区三区| 孩xxxx性bbbb欧美| 日韩毛片视频在线看| 欧美男gay| 色就是色亚洲色图| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 成人综合在线网站| 高清在线一区| 欧美黄色性生活| 国产91在线高潮白浆在线观看 | 欧美一区深夜视频| 懂色av中文一区二区三区天美 | 日本高清视频在线播放| 亚洲一区二区三区精品视频| 色悠悠久久久久| 国产精品国产三级国产普通话三级| 久操国产精品| 日本精品在线| 天天久久人人| 欧美美女18p| 精品国产91久久久| 日韩国产欧美在线播放| 国产91欧美| 在线播放evaelfie极品| 欧美久久电影| 欧美精品制服第一页| 欧美丝袜一区二区| 国产老肥熟一区二区三区| 国产精品qvod| 成人精品一区二区三区免费| 黄色一级片网址| 91大神福利视频在线| 欧美日韩国产首页| 成人av网站在线观看免费| 第四色成人网| 国产91足控脚交在线观看| 一本色道无码道dvd在线观看| 91精品久久久久久久久久| 精品国产乱码久久久久久久久| 国产亚洲一区二区三区| 欧美日韩一区自拍| 日韩av超清在线观看| 在线色视频观看| 视频在线观看成人| 77777少妇光屁股久久一区| 5858s免费视频成人| 2021久久国产精品不只是精品| 中文字幕午夜精品一区二区三区| 欧美aaa视频| 极品美乳网红视频免费在线观看| 久久手机在线视频| 91精品在线观| 日韩中文字幕国产| 欧美午夜精品久久久久久久| 成人中文字幕在线| 欧美一区成人| 99re6热只有精品免费观看| 美女写真理伦片在线看| 色综合小说天天综合网| 亚洲成人午夜在线| 国产欧美 在线欧美| 一区二区三区黄色| 欧美日韩一区二区三区视频 | 国产 日韩 欧美 综合 一区| av在线免费观看网址| 成年人视频免费看| 成人性做爰片免费视频| 99国产精品久久久久老师| 久久99国产精品久久久久久久久| 欧美日韩一区二区三区免费看| 中文字幕欧美激情一区| 蜜臀av一区二区| 午夜久久美女| 婷婷激情久久| 日韩毛片免费看| 色女人在线视频| 在线亚洲电影| 五月天电影免费在线观看一区| 午夜久久久久久久久久久| 国产高清在线精品一区二区三区| 亚洲美女一区二区三区| 成人免费观看a| 特黄特色特刺激视频免费播放| 免费一区二区三区在在线视频| 韩国精品视频| 国内成+人亚洲+欧美+综合在线| 激情久久一区二区| 日本色护士高潮视频在线观看| 最新av在线网站| www欧美激情| youjizz.com在线观看| 久热国产精品视频一区二区三区| 国产精品第2页| 欧美大片在线看免费观看| 亚洲男人天堂2023| 狠狠久久亚洲欧美专区| 九九九九久久久久| 亚洲第一se情网站| 欧美亚洲激情视频| 尤物精品国产第一福利三区| 日韩一区二区三区四区| 精品久久久久久中文字幕| 国产精品国产三级国产aⅴ中文| 免费一级在线观看播放网址| 波多野结衣一区| 无码av中文一区二区三区桃花岛| 久久久久久久色| www.com黄色片| 日本免费久久| 国产在线精品一区二区夜色 | 免费观看亚洲视频| 不卡视频一区二区三区| 国产福利精品av综合导导航| 久久久久久久激情视频| 中文字幕亚洲二区| 日韩激情av在线播放| 亚洲精品在线免费观看视频| 欧美少妇xxx| 在线观看一区日韩| 色婷婷一区二区三区四区| 国产视频三级在线观看播放| 国产精品久久久免费 | 国产成人午夜视频| 亚洲欧美激情视频| 精品中文字幕av| 亚洲激情播播| 中文字幕永久在线不卡| 国产999在线观看| 日韩一区二区三区不卡视频| 国产一区二区久久久久| 亚洲精品成人少妇| 蜜桃传媒一区二区三区| 日韩精品综合在线| 日本国产在线播放| 免费在线观看日韩视频| 男人透女人免费视频| 欧美国产亚洲一区| 精品久久久久久久免费人妻| 亚洲 中文字幕 日韩 无码| 成人精品视频一区二区| 色视频网站在线| av成人动漫| 国际av在线| 免费影视亚洲| 日韩色淫视频| 好吊妞国产欧美日韩免费观看网站 | 久久99视频免费| 91chinesevideo永久地址| 国产成人精品999| 国产66精品久久久久999小说| 国内精品二区| 自拍偷拍99| 日本一区二区黄色| 国产国语**毛片高清视频 | 久久免费国产精品1| 国产精品99久久久久久久久 | 中文字幕成人一区| 欧美 国产 日本| 香蕉视频色版| 在线视频三区| 666av成人影院在线观看| 9999久久久久| 牛牛国产精品| 精品在线播放午夜| 久久久精品tv| 亚洲h精品动漫在线观看| 欧美一区二区三区喷汁尤物| 一本色道久久综合亚洲精品小说 | 成人动漫一区二区三区| 国产精品网曝门| 欧美性少妇18aaaa视频| 精品精品欲导航| 精品中文字幕在线| 成人网中文字幕| 一区二区三区四区在线视频 | 欧美性视频精品| 国产综合精品一区二区三区| 免费在线看黄色片| 在线视频网站| 久草免费在线色站| 国产精品久久久久久久久久辛辛| 欧美日韩在线二区| 另类亚洲自拍| 久久精品夜夜夜夜久久| 色老汉av一区二区三区| 国产一区二区三区三区在线观看| 国产精品白丝jk喷水视频一区| 五月天丁香综合久久国产| 亚洲一级免费在线观看| av官网在线播放|