努力与python中的函数的全局定义

时间:2019-04-06 20:19:28

标签: python python-2.7

我已经很久没有使用python了,我在声明和使用函数方面很挣扎。尝试调用已定义的函数时,我遇到了全局名称错误。

我尝试使用balances(account, date),但是我有点迷失了它的工作原理。

self

我遇到的错误是 def main(): size = int(sys.argv[1]) print(size) generate = gen(size) print(generate) def gen(self, size): #generate... return size if __name__ == "__main__": main()

4 个答案:

答案 0 :(得分:1)

只需直接回答问题-

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

    def main(self):     self.gen()

坚持下去,很难跳冷

答案 1 :(得分:1)

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

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()

答案 2 :(得分:0)

  • 替换此 generate = gen(size)的{​​{1}}
  • 添加generate = self.gen(size)作为self方法的第一个参数

答案 3 :(得分:0)

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

generate = self.gen(size)

请记住,python缩进是具有块的方式。因此,如果缩进main,main将位于class块中,并且不会全局可用。