python传递函数外的函数

时间:2017-06-21 06:08:26

标签: python function arguments

我的代码设计如下

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,并在函数的一侧使用它 问题是参数没有在函数之外定义

3 个答案:

答案 0 :(得分:0)

您已定义函数set_globvar_to_one以接收2个参数selfresponse

但是当你在第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