在python中挣扎于函数的全局定义
我已经很久没有使用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
self
,但我有点不知道它是如何工作的
def main():
size=int(sys.argv[1])
印刷品(尺寸)
生成=生成(大小)
打印(生成)
def gen(自身,尺寸):
#生成。。。
返回大小
如果名称=“\uuuuu main\uuuuuuuu”:
main()
我面临的错误是name错误:未定义全局名称“gen”
- 替换这个
bygenerate=gen(大小)
generate=self.gen(大小)
- 添加
作为self
方法的第一个参数main
- 替换这个
bygenerate=gen(大小)
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