簡體   English   中英

Python function 返回語句后繼續運行?

[英]Python function continues running after return statement?

以下 function 以 TypeError 結尾:Unsupported operand types float and NoneType。 基本案例如何觸發return None並且程序繼續使用factorial() = None 至少我是這樣認為的。

def factorial(i):
  if i < 0:
    return None # Why does the program not stop here?...
  if i == 0:
    return 1
  return i * factorial(i-1) #factorial(i-1) returns None after i < 0?

print(factorial(3.01))

您收到該錯誤是因為在您的 function 中調用了return i * factorial(i-1) ,而factorial(i-1)的計算結果為None

它評估為None的原因是您提供的輸入值 - 3.01 - 這將導致以下結果:

factorial(3.01) # returns 3.01 * factorial(3.01-1)
factorial(2.01) # returns 2.01 * factorial(2.01-1)
factorial(1.01) # returns 1.01 * factorial(1.01-1)
factorial(0.01) # returns 0.01 * factorial(0.01-1)
factorial(-0.99) # returns None (because i < 0)

因此,運行0.01 * None行,這會導致您的錯誤。

function 中的最后一次遞歸調用是

return 0.01 * factorial(-0.99)

factorial(-0.99)調用if i < 0:案例,因此它返回None 然后上面的代碼試圖乘以0.01 * None ,這會導致你得到的錯誤。

您對factorial的定義僅對非負整數有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM