Py学习  »  Python

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

tyvm • 4 年前 • 843 次点击  

我试过用 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()

我面临的错误是 NameError: global name 'gen' is not defined .

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54903
 
843 次点击  
文章 [ 4 ]  |  最新文章 4 年前
Benjamin
Reply   •   1 楼
Benjamin    4 年前
  • 替换这个 generate = gen(size) 通过 generate = self.gen(size)
  • 添加 self 作为第一个论点 main 方法
jotes
Reply   •   2 楼
jotes    4 年前

你必须利用自己。如果调用的方法是类的一部分,则使用前缀。 因此,当您调用gen()和gen()时,它不是全局函数,而是您应该键入的类中的函数

generate = self.gen(size)

请记住,python缩进是拥有块的方法。因此,如果缩进main,main将在类块中,并且在全局范围内不可用。

Devesh Kumar Singh
Reply   •   3 楼
Devesh Kumar Singh    4 年前

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()
Paul Becotte
Reply   •   4 楼
Paul Becotte    4 年前

直接回答问题-

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

    自我生成()

坚持住,很难在寒冷中跳跃