成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

2013-03-01 09:53:40

軟件開發

2013-12-27 13:39:23

Java套接字

2010-02-03 16:03:44

Python系統文件

2010-07-20 11:37:00

Perl函數返回值

2009-12-07 11:11:41

WCF返回值

2012-03-06 09:02:41

軟件開發

2022-07-07 09:03:36

Python返回函數匿名函數

2009-12-25 17:21:13

ADO返回值

2010-07-09 13:20:37

HART協議

2022-10-21 07:50:35

裝飾器Python編程

2023-08-26 20:51:25

Python函數代碼

2010-03-02 16:50:34

WCF返回值

2023-08-07 14:52:33

WindowsExplorer進程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产色综合久久 | 久久成人一区二区三区 | 国产精品久久久一区二区三区 | 欧美日韩中文在线观看 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 久久久久国 | 欧美精品一区在线 | 亚洲欧美日韩精品久久亚洲区 | www.亚洲国产精品 | 国产a爽一区二区久久久 | 久久精品欧美一区二区三区不卡 | 精品视频一区二区在线观看 | 成人国产网站 | 一二三四在线视频观看社区 | 欧美激情久久久 | japanhd成人| 免费观看日韩av | 狠狠干2020 | 91.com在线观看| 国产精品久久久久久久久图文区 | 国产精品无码专区在线观看 | 91人人在线 | 欧美日一区 | 美女久久 | 国产欧美日韩在线一区 | 在线观看国产wwwa级羞羞视频 | 日本精品一区二区 | 欧美jizzhd精品欧美巨大免费 | 一区免费看 | 久久精品视频12 | 日韩资源| 久久久噜噜噜久久中文字幕色伊伊 | 开操网 | 国产最新精品视频 | 欧美国产精品一区二区 | 亚洲午夜精品一区二区三区他趣 | 欧美精品啪啪 | 成人婷婷 | 国产精品小视频在线观看 | 一区二区三区免费看 |