簡體   English   中英

function調用python時的類型轉換

[英]Type conversion during function call in python

在下面的示例中,我將 float 值傳遞給 function 接受和 int 參數(使用類型提示)。 看起來讀入 function arg 的值是一個浮點數 n.netheless(期望 int(11.2) * 10 = 110 而不是 112)

為什么會這樣?

def f(n:int):
    return n*10
l = [11.2, 2.2, 3.3, 4.4]
mfunc = map(f,l)
print(list(mfunc))

結果:[112.0, 22.0, 33.0, 44.0]

** 進程退出 - 返回代碼:0 ** 按 Enter 鍵退出終端

正如@Mechanic Pig 在 function 簽名中所說的n:int只是對開發人員的提示,它不會轉換為 int。

所以你轉換為 int

def foo(n: int):
  if type(n) is float:
      n = int(n)
  return n * 10

或者,如果n不是int ,您可以使用 assert 來引發錯誤

def foo(n: int):
    assert type(n) == int, "must be int"
    return n * 10

或者

def foo(n: int):
    if type(n) is not int:
        raise Exception(f"Must by int instead of {type(n).__name__}")
    return n * 10

當您使用支持它的 IDE 時,提示更有用。

Here -> int:描述 function 返回什么類型

def foo(n: int) -> int:
    return n * 10

暫無
暫無

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

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