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


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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM