*args 接受什么类型的数据?该函数使用直接输入,但如果输入 tuples/lists 个变量会出错(下图:"numbers")
what type of data do *args accept? The function works with direct input, but errors if tuples/lists variables are entered (below: "numbers")
def add_unlimited(*args):
sum = 0
for n in args:
sum += n
print(sum)
numbers = [23, 45, 23, 56]
add_unlimited(23, 45, 23, 56)
请注意 *args
没有任何类型限制,这与 Go 等其他静态语言不同。您甚至可以将整数列表的元组和纯字符串混合在一起。这相当于像 *args: Any
这样的类型注释 - 表示每个参数可以是任何类型。
但是,在这种情况下,您的函数似乎取决于每个参数都是一个数字。所以我会输入像 *args: Number
这样的注释,以提示调用者传入的每个参数都应该是一个有效数字。
用法如下:
from numbers import Number
def add_unlimited(*args: Number):
sum = 0
for n in args:
sum += n
print(sum)
numbers = [23, 45, 23, 56]
add_unlimited(*numbers)
def add_unlimited(*args)
接受 任意数量的 参数。在函数内部,参数可以 list
的形式访问,名为 args
.
请注意,add_unlimited([23, 45, 23, 56])
正在使用 一个 参数调用函数。该参数恰好是一个列表,[23, 45, 23, 56]
。在函数内部,这将导致 args = [[23, 45, 23, 56]]
。如果每个参数都不是整数,则函数中的其余代码将不起作用,这就是您收到错误的原因。
您可以使用解包运算符 *
:
将单个列表作为多个参数传递
add_unlimited(*[23, 45, 23, 56])
等同于 add_unlimited(23, 45, 23, 56)
sum=0
for n in args:
sum = 0 + [23, 45, 23, 56]
您不能添加列表和零。
你可能想要这样的东西
for x in args:
for n in x:
sum += n
def add_unlimited(*args):
sum = 0
for n in args:
sum += n
print(sum)
numbers = [23, 45, 23, 56]
add_unlimited(23, 45, 23, 56)
请注意 *args
没有任何类型限制,这与 Go 等其他静态语言不同。您甚至可以将整数列表的元组和纯字符串混合在一起。这相当于像 *args: Any
这样的类型注释 - 表示每个参数可以是任何类型。
但是,在这种情况下,您的函数似乎取决于每个参数都是一个数字。所以我会输入像 *args: Number
这样的注释,以提示调用者传入的每个参数都应该是一个有效数字。
用法如下:
from numbers import Number
def add_unlimited(*args: Number):
sum = 0
for n in args:
sum += n
print(sum)
numbers = [23, 45, 23, 56]
add_unlimited(*numbers)
def add_unlimited(*args)
接受 任意数量的 参数。在函数内部,参数可以 list
的形式访问,名为 args
.
请注意,add_unlimited([23, 45, 23, 56])
正在使用 一个 参数调用函数。该参数恰好是一个列表,[23, 45, 23, 56]
。在函数内部,这将导致 args = [[23, 45, 23, 56]]
。如果每个参数都不是整数,则函数中的其余代码将不起作用,这就是您收到错误的原因。
您可以使用解包运算符 *
:
将单个列表作为多个参数传递
add_unlimited(*[23, 45, 23, 56])
等同于 add_unlimited(23, 45, 23, 56)
sum=0
for n in args:
sum = 0 + [23, 45, 23, 56]
您不能添加列表和零。
你可能想要这样的东西
for x in args:
for n in x:
sum += n