gpt4 book ai didi

python - 将函数传递给函数

转载 作者:行者123 更新时间:2023-11-30 23:34:18 25 4
gpt4 key购买 nike

目前我在 python 中遇到错误,但我似乎找不到它们

def dictionaryObjectParsed():
a = []
b = []
a, b = zip(*(map(lambda x: x.rstrip('\n\r').split('\t'), open('/Users/settingj/Desktop/NOxMultiplier.csv').readlines())))
for x in range(0,len(a)):
print a[x]
print b[x]

def timer(f):
threading.Timer(1, timer, f).start()
print time.strftime('%I:%M:%S %p %Z')

timer(dictionaryObjectParsed)

这是我遇到的错误

Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 756, in run
self.function(*self.args, **self.kwargs)
TypeError: timer() argument after * must be a sequence, not function

我之前能够做到这一点,但我认为我做了一些事情来创建这个错误,到底是什么:(

我显然正在向计时器函数传递参数......对吧?

编辑

我也尝试了timer(dictionaryObjectParsed)但什么也没有...

另外,对于菜鸟问题​​表示抱歉,这只是我使用 python 的第二天......:P

最佳答案

传递函数而不调用它(删除“()”)..

timer(dictionaryObjectParsed)

def timer(f):
threading.Timer(1,f).start()
print time.strftime('%I:%M:%S %p %Z')

而不是

threading.Timer(1,timer)

我认为您正在尝试创建一个递归计时器函数,这是错误的。您收到的错误是再次调用函数“timer”,而不使用函数参数。我认为这是一个简单的错误。

<小时/>

好吧,你确实想要一个递归函数,所以试试这个:

def timer(f):
threading.Timer(1,timer,[f,]).start()
f()
print time.strftime('%I:%M:%S %p %Z')

工作了吗?

关于python - 将函数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com