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

Python 函數為什么會默認返回 None?

開發 后端
Python 有一項默認的做法,很多編程語言都沒有——它的所有函數都會有一個返回值,不管你有沒有寫 return 語句。

 Python 有一項默認的做法,很多編程語言都沒有——它的所有函數都會有一個返回值,不管你有沒有寫 return 語句。

[[337935]]

本文出自“Python為什么”系列,在正式開始之前,我們就用之前討論過的 pass語句 和 …對象 作為例子,看看 Python 的函數是怎樣“無中生有”的:

 

可以看出,我們定義的兩個函數都沒有寫任何的 return 語句,但是在函數調用后,都能取到一個返回值。

它們的執行效果跟直接寫 return 語句相比,是完全相同的:

 

這 4 個例子屬于兩種類型:一種沒有寫 return,但是都有隱藏的 return 返回值;一種寫了 return,而且實際也有返回值。

也就是說,后者在語義和行為上表現一致,前者雖然在語義上缺失,但是卻有實際的行為和結果;后者的行為是顯性的,前者卻是隱性的。

《Python之禪》中有一句“顯性勝于隱性(Explicit is better than implicit)”,但是,出于簡潔和便利的考慮(Simple is better than complex),實際上 Python 中有很多行為都是隱性的,會把一些在語法層面的事交給解釋器去完成。

上一期的 真值判斷 是隱性的行為,本文前兩個例子也是如此。

使用dis查看字節碼,就可以看到其背后的小動作:

 

在這個對比圖中,可以看出上述 4 個函數的解釋器指令一模一樣!

不管有沒有寫 return,它們都會執行 return 的邏輯,而且默認的返回值就是 None。

那么,問題來了:Python 的函數為什么能默認返回 None 呢?它是如何實現的呢?

答案就在解釋器中,當 CPython 解釋器執行到函數的最后一個代碼塊時,若發現沒有返回值,它就會主動地加上一個 Py_None 值返回(出自:compile.c):

 

也就是說,如果定義的函數沒有返回值,Python 解釋器就會(強行地)默認給我們注入一段返回邏輯!

對于解釋器的這種附贈的服務,大家是覺得很貼心,還是嫌棄它多事呢?

這樣的做法似乎沒多少好處,但似乎也沒有壞處。

責任編輯:華軒 來源: Python貓
相關推薦

2020-08-21 09:44:48

Python開發工具

2021-05-30 09:25:48

HttpETag 網絡協議

2020-07-22 07:55:12

Python開發函數

2012-03-26 10:26:43

openstackeucalyptus

2012-05-02 10:08:51

桌面Linux微軟

2020-03-30 15:05:46

Kafka消息數據

2012-08-17 10:01:07

云計算

2021-07-09 09:24:06

NanoID UUID軟件開發

2021-01-25 07:14:53

Cloud DevOps云計算

2022-04-13 20:53:15

Spring事務管理

2023-03-22 09:10:18

IT文檔語言

2014-03-05 14:58:00

蘋果CarPlayiOS

2015-12-07 10:49:43

卸載App用戶體驗

2022-05-11 08:22:54

IO負載NFSOS

2020-09-21 06:10:47

Python lambda匿名函數

2021-07-19 09:58:22

Pythonprint函數

2016-12-22 18:38:49

JavaAndroid

2022-05-18 08:25:59

MySQLutf8字符集數據庫

2020-04-25 20:20:28

蘋果庫克手機

2021-08-23 08:19:48

辭職Google工程師
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品影院 | 欧美成ee人免费视频 | 人人操日日干 | 国产欧美一区二区三区久久人妖 | 一级黄色片网址 | 激情视频一区 | 亚洲日韩中文字幕一区 | 网黄在线| 国产欧美精品一区二区色综合朱莉 | 亚洲综合电影 | 99爱在线观看 | av免费网站在线 | 亚洲精品久久久久久久久久久 | 91精品国产综合久久久密闭 | 热re99久久精品国99热观看 | 成人午夜视频在线观看 | 亚洲美女网站 | 亚洲精品91 | 高清亚洲 | 狠狠影院| 亚洲人在线 | 中文字幕视频在线看 | 一级在线观看 | 国产精品一区二区av | 中文字幕在线三区 | 国产日韩精品一区 | 亚洲性人人天天夜夜摸 | 成人精品鲁一区一区二区 | 蜜桃免费一区二区三区 | 国产精品一区二区三区久久久 | 最新国产精品精品视频 | 国产精品五区 | 精品国产1区2区3区 一区二区手机在线 | 日韩一二区在线 | 久久伊人久久 | 伊人网站在线观看 | 亚洲免费观看视频网站 | 国产欧美在线播放 | 激情欧美日韩一区二区 | 国产日韩欧美在线观看 | 国产免费福利小视频 |