我有一个名为add_ten
的函数。我想在列表上循环这个函数。
我想创建一个looper
函数并传递list
和add_ten
函数作为输入循环
def add_ten(x):
y = x+10
print 'value of x is ' + str(x)
print 'value of y is ' + str(y)
def looper(list,func):
for i in list:
return func(i)
我调用looper函数
looper([1,2],add_ten())
我收到此错误。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-27-6510e446c709> in <module>()
----> 1 looper([1,2],add_ten())
TypeError: add_ten() takes exactly 1 argument (0 given)
如何正确创建looper函数以便它采用正确的参数?
答案 0 :(得分:1)
TypeError: add_ten() takes exactly 1 argument (0 given)
您收到此错误是因为您在没有参数的情况下调用函数add_ten()
。
我想创建一个
looper
函数并传递list
和add_ten
函数作为输入循环。
所以只需在looper
函数中传递函数本身而不执行它,如下所示:
looper([1,2], add_ten)
然后,使用i
值调用for循环中的函数:
def looper(list, func):
for i in list:
return func(i) # <--- notice the parentheses instead of square brackets.
虽然,我不确定return func(i)
的目的,因为它没有返回任何东西。因此,如果您只需要在add_ten
函数中打印,则可以从中删除return
:
def looper(list, func):
for i in list:
func(i)
答案 1 :(得分:1)
试图理解这个问题,我得到了以下工作代码:
#! /usr/bin/env python
from __future__ import print_function
def add_ten(x):
print('value of x is %s\nvalue of y is %s' % (str(x), str(x + 10)))
def looper(list, func):
for i in list:
func(i)
if __name__ == '__main__':
looper([1, 2], add_ten)
输出在我的机器上:
value of x is 1
value of y is 11
value of x is 2
value of y is 12
希望这有助于学习Python; - )
注意在looper
的实现中,您肯定不希望在第一次迭代中提前返回,因为只有第一个列表元素被处理结果。在上面我只是调用它并且打印的副作用或add_ten
中定义的任何内容“发生”......
答案 2 :(得分:0)
仔细观察你得到的错误:“add_ten()只取1个参数(0给定)”。
这是因为return func[i]
你应该这样做:{{1} }(注意不同的括号)。
否则,缺少对return func(i)
的调用的参数。
答案 3 :(得分:0)
looper([1,2], add_ten)
func(i)
时使用括号而不是squaree括号。否则,您的代码看起来不错。
答案 4 :(得分:0)
使用looper([1,2],add_ten())你传递函数调用的结果而不是函数本身。
固定版本如下所示:
var repeaterElements= element(by.repeater('option in options'));
repeaterElements.each(function(entry) {
var input = entry.element(by.model("option"));
});
另请注意,add_ten函数始终返回None,并且除了打印原始值和递增值之外没有任何效果。实际返回修改后的列表的紧凑方式可能如下所示:
def add_ten(x):
y = x+10
print 'value of x is ' + str(x)
print 'value of y is ' + str(y)
def looper(list,func):
for i in list:
return func(i)
looper([1,2],add_ten)