函数中的参数
Arguments in a function
我了解到在定义一个函数的时候,可以提供一个参数,像这样:
def func(lst):
# code
我还了解到,当您定义一个函数时,您可以使用 *args 语法提供多个参数,如下所示:
def func(*lst):
# code
我有一个问题,我必须定义一个函数来对列表进行排序并删除所有重复项。
这是我所做的:
def func(lst):
return sorted(set(lst))
我做这道练习题的网站 (edabit.com) 测试了我的代码,像这样:
Test.assert_equals(func([1, 3, 3, 5, 5]), [1, 3, 5])
测试运行成功,我的代码是正确的。但这就是我感到困惑的地方,测试提供了多个参数(1、3、3、5、5),我没有使用 *args 语法,但不知何故它 运行 成功了。
它不是应该给我一个错误,说类似 func() 的东西正好需要 1 个参数(给定 5 个)吗?
当我提供 *args 语法时,它告诉我 TypeError: unhashable type:'list'
我猜这可能是因为测试没有调用函数,而是使用了 assert 关键字。我的猜测是否正确?
您传入了一个数字列表,这是一个参数:
func([1, 3, 3, 5, 5])
对比
func(1, 3, 3, 5, 5)
不,你给出了一个列表类型的参数。如果你有
a = [1,2,3,4]
你有一个清单
呼唤
f(a)
和f([1, 2,3,4])
是一样的
注意 [ 括号。
但是,如果您过于调用 f(1, 2,3,4)
,那将是一个错误。
另外:assert 关键字仍然调用该函数。它无法不调用它,因为它已作为表达式放入。
如果你调用 f(g(5))
然后 f 已经用 g 的结果调用,而不是函数调用本身。
看起来他们只向您的函数传递了一个参数。
Test.assert_equals(func([1, 3, 3, 5, 5]), [1, 3, 5]))
数组 [1, 3, 3, 5, 5]
作为单个参数传递给 func()
,然后数组 [1, 3, 5]
作为第二个参数传递给 assert_equals()
。
我了解到在定义一个函数的时候,可以提供一个参数,像这样:
def func(lst):
# code
我还了解到,当您定义一个函数时,您可以使用 *args 语法提供多个参数,如下所示:
def func(*lst):
# code
我有一个问题,我必须定义一个函数来对列表进行排序并删除所有重复项。
这是我所做的:
def func(lst):
return sorted(set(lst))
我做这道练习题的网站 (edabit.com) 测试了我的代码,像这样:
Test.assert_equals(func([1, 3, 3, 5, 5]), [1, 3, 5])
测试运行成功,我的代码是正确的。但这就是我感到困惑的地方,测试提供了多个参数(1、3、3、5、5),我没有使用 *args 语法,但不知何故它 运行 成功了。
它不是应该给我一个错误,说类似 func() 的东西正好需要 1 个参数(给定 5 个)吗?
当我提供 *args 语法时,它告诉我 TypeError: unhashable type:'list'
我猜这可能是因为测试没有调用函数,而是使用了 assert 关键字。我的猜测是否正确?
您传入了一个数字列表,这是一个参数:
func([1, 3, 3, 5, 5])
对比
func(1, 3, 3, 5, 5)
不,你给出了一个列表类型的参数。如果你有
a = [1,2,3,4]
你有一个清单
呼唤
f(a)
和f([1, 2,3,4])
是一样的
注意 [ 括号。
但是,如果您过于调用 f(1, 2,3,4)
,那将是一个错误。
另外:assert 关键字仍然调用该函数。它无法不调用它,因为它已作为表达式放入。 如果你调用 f(g(5)) 然后 f 已经用 g 的结果调用,而不是函数调用本身。
看起来他们只向您的函数传递了一个参数。
Test.assert_equals(func([1, 3, 3, 5, 5]), [1, 3, 5]))
数组 [1, 3, 3, 5, 5]
作为单个参数传递给 func()
,然后数组 [1, 3, 5]
作为第二个参数传递给 assert_equals()
。