Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中挣扎于函数的全局定义_Python_Python 2.7 - Fatal编程技术网

在python中挣扎于函数的全局定义

在python中挣扎于函数的全局定义,python,python-2.7,Python,Python 2.7,我已经很久没有使用python了,我正在努力声明和使用函数。在尝试调用我定义的函数时,我遇到了一个全局名称错误 我尝试过使用self,但我有点不知道它是如何工作的 def main(): size=int(sys.argv[1]) 印刷品(尺寸) 生成=生成(大小) 打印(生成) def gen(自身,尺寸): #生成。。。 返回大小 如果名称=“\uuuuu main\uuuuuuuu”: main() 我面临的错误是name错误:未定义全局名称“gen” 替换这个 generate=ge

我已经很久没有使用python了,我正在努力声明和使用函数。在尝试调用我定义的函数时,我遇到了一个全局名称错误

我尝试过使用
self
,但我有点不知道它是如何工作的


def main():
size=int(sys.argv[1])
印刷品(尺寸)
生成=生成(大小)
打印(生成)
def gen(自身,尺寸):
#生成。。。
返回大小
如果名称=“\uuuuu main\uuuuuuuu”:
main()
我面临的错误是
name错误:未定义全局名称“gen”

  • 替换这个
    generate=gen(大小)
    by
    generate=self.gen(大小)
  • 添加
    self
    作为
    main
    方法的第一个参数
      • 替换这个
        generate=gen(大小)
        by
        generate=self.gen(大小)
      • 添加
        self
        作为
        main
        方法的第一个参数

      直接回答这个问题-

      class paging():
          def main(): 
              generate = gen(size)
          def gen(self, size):
              return size
      
      • 全局名称空间中唯一的东西是
        分页
        ,它是一个类
      • 类定义方法-这些方法的全局命名空间是
        class.method
        。因此,此处函数的名称应为
        paging.gen
      • 实例方法(您在那里定义的函数)总是将
        self
        作为第一个参数,这是类实例的替代
      • 您可以使用self调用对象上的其他实例方法

        def主(自): self.gen()


      坚持下去,即使只是直接回答问题,也很难在寒冷中跳起来

      class paging():
          def main(): 
              generate = gen(size)
          def gen(self, size):
              return size
      
      • 全局名称空间中唯一的东西是
        分页
        ,它是一个类
      • 类定义方法-这些方法的全局命名空间是
        class.method
        。因此,此处函数的名称应为
        paging.gen
      • 实例方法(您在那里定义的函数)总是将
        self
        作为第一个参数,这是类实例的替代
      • 您可以使用self调用对象上的其他实例方法

        def主(自): self.gen()


      坚持下去,在寒冷中跳跃是很困难的,你必须利用自我。如果调用的方法是类的一部分,则使用前缀。 相反,如果您希望全局调用main()并将其放在类之外,则不应在其自身的类中定义main()和gen()函数。 因此,当您调用gen()时,gen()不是一个全局函数,而是一个您应该键入的类中的函数

      generate = self.gen(size)
      

      请记住,python缩进是获得块的方法。因此,如果缩进main,main将在类块中,并且它不会全局可用。

      您必须使用self。如果调用的方法是类的一部分,则使用前缀。 相反,如果您希望全局调用main()并将其放在类之外,则不应在其自身的类中定义main()和gen()函数。 因此,当您调用gen()时,gen()不是一个全局函数,而是一个您应该键入的类中的函数

      generate = self.gen(size)
      

      请记住,python缩进是获得块的方法。因此,如果缩进main,main将在类块中,并且它不会全局可用。

      这里似乎不需要类,如果您想在不使用类的情况下运行代码,可以使用

      import random
      import sys
      
      
      def gen(size):
          # generate...
          return size
      
      def main():
          #Not sure where you are passing pages?
          size = int(sys.argv[1])
          print(size)
          generate = gen(size)
          print(generate)
          print("FIFO", FIFO(size,pages), "page faults.")
          print("LRU", LRU(size,pages), "page faults")
          print ("OPT", OPT(size,pages), "page faults")
      
      def FIFO(self, size, pages):
          return "hello"
      
      def LRU(self, size, pages):
          return "hello"
      
      def OPT(self, size, pages):
          return "hello"
      
      if __name__ == "__main__":
          if len(sys.argv) != 2:
              print "Usage: python paging.py [number of pages]"
          else:
              main()
      

      这里似乎不需要类,如果希望在不使用类的情况下运行代码,可以使用

      import random
      import sys
      
      
      def gen(size):
          # generate...
          return size
      
      def main():
          #Not sure where you are passing pages?
          size = int(sys.argv[1])
          print(size)
          generate = gen(size)
          print(generate)
          print("FIFO", FIFO(size,pages), "page faults.")
          print("LRU", LRU(size,pages), "page faults")
          print ("OPT", OPT(size,pages), "page faults")
      
      def FIFO(self, size, pages):
          return "hello"
      
      def LRU(self, size, pages):
          return "hello"
      
      def OPT(self, size, pages):
          return "hello"
      
      if __name__ == "__main__":
          if len(sys.argv) != 2:
              print "Usage: python paging.py [number of pages]"
          else:
              main()
      


      Ooof。。。我不知道该怎么回答这个问题。。。只需说这个类是不需要的,应该删除它,这1)改进了你的代码,2)使它工作了?这段代码没有那个错误。我得到的错误是:
      TypeError:gen()正好接受2个参数(给定1个)
      。请发布您正在使用的真实代码。
      self
      仅适用于属于类成员的函数,而
      gen()
      不是。请修复缩进。有些人没有看到类声明。我不知道最后一行是否在类定义中。为什么这里有一个类?看起来您正在尝试用Python.Ooof编写Java。。。我不知道该怎么回答这个问题。。。只需说这个类是不需要的,应该删除它,这1)改进了你的代码,2)使它工作了?这段代码没有那个错误。我得到的错误是:
      TypeError:gen()正好接受2个参数(给定1个)
      。请发布您正在使用的真实代码。
      self
      仅适用于属于类成员的函数,而
      gen()
      不是。请修复缩进。有些人没有看到类声明。我不知道最后一行是否在类定义中。为什么这里有一个类?看起来您正在尝试用Python编写Java。我应该怎么做?都在缩进里吗?我没有注意到你改变了你的描述,我已经更新了我的答案。谢谢你的回复。我之前试过了,结果出现了这样的错误:“NameError:未定义全局名称‘self’。self需要成为main方法的第一个参数,我已经更新了我的答案,我认为这应该可以解决您的问题。我之前也试过,尽管在调用main()时遇到了‘TypeError:main()正好取1个参数(0给定)’。有什么我需要发送到这里的方法吗?我应该怎么做?都在缩进里吗?我没有注意到你改变了你的描述,我已经更新了我的答案。谢谢你的回复。我之前试过了,结果出现了这样一个错误:“NameError:全局名称'self'未定义”。self需要成为main方法的第一个参数,我已经更新了我的答案,我认为这应该可以解决您的问题。我之前也试过,尽管遇到了'TypeError:main()正好需要1 a