python定義函數時的默認返回值

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 函數的返回值也打印了出來

相關文章
相關標籤/搜索