python定義函數時,一般都會有指定返回值,如果沒有顯式指定返回值,那么python就會默認返回值為None, 即隱式返回語句: return None
執行如下代碼
def now(): print('2018-03-20')
直接執行函數的話,結果為:
但是如果打印函數的話
print(now())
打印結果為:
相當於執行了
def now(): print('2018-03-20') return None print(now())
如果不想要有None,那么就要添加返回值
def now(): return '2018-03-20' print(now())
但是如果代碼改成:
def now(): return print('2018-03-20') print(now())
>>> print <built-in function print>
打印結果還是帶有 None,個人猜想如下
編輯於 2018-03-30 12:53
print 函數的打印結果
>>> print()
打印為空
>>> print(print()) None
由上述代碼,可以猜測該代碼的執行順序
先執行括弧里的 print() 打印的內容為空,print函數執行完后自帶換行,接着再執行括弧外的 print 函數,即打印括弧里的print() 的返回值,由此可知 print 函數的默認返回值為 None
再看如下代碼
>>> print(print('123')) 123 None
執行順序如上述所猜測的一樣
>>> def now(): ... pass ... >>> print(now()) None
定義的函數 now, 函數體為空,未設置返回值,所以 now() 執行的返回值為 None 被打印出來
>>> def now(): ... return print ... >>> now <function now at 0x000001BECE4C3840> >>> now() <built-in function print> >>> print(now) <function now at 0x000001BECE4C3840>
現在 now 函數返回值是 print函數,所以打印 now() 就是返回的 print 函數
>>> def now(): ... return print('你好') ... >>> print(now()) 你好 None
分析上述代碼
先執行括弧里 now(),執行now函數的語句塊,now 函數只有一個返回值 print('你好'),所以先打印出字符串 '你好',由於 print函數的默認返回值是 None,最外層的 print 函數就把里層的 print 函數的返回值也打印了出來