[英]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.