我的代码设计如下
while True:
globvar = 0
def test(self, response):
#something
callback=self.set_globvar_to_one
def set_globvar_to_one(self, response):
global globvar
globvar = raw_input("Please enter 'hello':")
set_globvar_to_one()
if globvar.strip() == 'hello':
continue
else:
print 'Goodbye'
break
但是我收到以下错误
TypeError:set_globvar_to_one()只取2个参数(给定0)
更新 我想得到函数中赋值的globvar varible,并在函数的一侧使用它 问题是参数没有在函数之外定义
答案 0 :(得分:0)
您已定义函数set_globvar_to_one
以接收2个参数self
和response
。
但是当你在第12行调用它时,你没有传递任何参数 set_globvar_to_one()
添加两个参数,您的问题就会消失。
set_globvar_to_one(self, response)
答案 1 :(得分:0)
在你的函数定义之下,你正在调用原始函数set_globvar_to_one()
,而且没有任何参数。由于您将self作为定义中的第一个参数传递,因此我假设此块在class
定义范围内。
因此,您应该尝试使用self.set_globvar_to_one(response)
而不仅仅是set_globvar_to_one()
。
P.S:我认为在response
的定义中不需要set_globvar_to_one
。此外,在循环外定义此函数将是一种更好的编码实践。
答案 2 :(得分:-1)
如前所述,主要是因为你没有向函数传递正确数量的参数。
请参阅以下代码,该代码应该执行您想要的操作(获取函数中设置的globvar值):
while True:
globvar = 0
def test(self, response):
#something
callback=self.set_globvar_to_one
def set_globvar_to_one(self, response):
global globvar
globvar = raw_input("Please enter 'hello':")
set_globvar_to_one("self","response")
if globvar.strip() == "hello":
continue
else:
print 'Goodbye'
break