python定義函數時,通常都會有指定返回值,若是沒有顯式指定返回值,那麼python就會默認返回值爲None, 即隱式返回語句: return Nonepython
執行以下代碼函數
def now(): print('2018-03-20')
直接執行函數的話,結果爲:ui
可是若是打印函數的話spa
print(now())
打印結果爲:code
至關於執行了blog
def now(): print('2018-03-20') return None print(now())
若是不想要有None,那麼就要添加返回值字符串
def now(): return '2018-03-20' print(now())
可是若是代碼改爲:io
def now(): return print('2018-03-20') print(now())
>>> print <built-in function print>
打印結果仍是帶有 None,我的猜測以下function
編輯於 2018-03-30 12:53class
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 函數的返回值也打印了出來