如何修复以下方案的范围?我的程序的主要代码(在main.py中)最初不在方法中。我想把它放到一个方法中,一旦我把它放在一个方法中并调用它,就会出现错误。
如何将我的主要代码块放入一个运行的方法中,就好像它不在方法中一样。
一般来说,对于python和编程我都是新手,所以请原谅我的无知,请在回答时尽可能简单。谢谢! 导入客户 进口帐户 导入交易
def populate():
z1 = Customer.Customer("1234","XXXXX","XXXXXXX","XXXXXX","XXXXXX","XXXXXX","XXXXX")
dict[z1.getCNumber()] = z1
a1 = Account.Account("4321",True,0.00,700.00)
dict[z1.getCNumber()].AddAccount(a1)
def printInfo():
z1.description()
a1.description()
populate()
printInfo()
这会在printInfo()方法中产生错误。 c1和a1变量。我不明白如何解决它。
错误包括: 全局名称'z1'未定义
当我在顶部放置z1 =“”和a1 =“”时,这是我得到的错误:
z1.description()
AttributeError: 'str' object has no attribute 'description'
如果它不在方法
中,则所有这些都有效答案 0 :(得分:3)
a1和z1只存在,直到填充函数结束。之后,噗,他们被删除了计算机的内存。这意味着populate几乎没有任何功能(除了可能稍微旋转处理器)。考虑返回a1和z1的值,然后将它们作为参数提供给printInfo。或者,如果在填充后总是调用printInfo,可能只是将代码放在populate函数中。
另一方面,在您发布的代码中,它看起来并不像是在调用printInfo,而是printBank,因为它没有定义会抛出错误。
要将它们作为元组返回,您可以在populate:
的末尾添加此行return (a1, z1)
然后当你打电话时,你可以说:
(a, z) = populate()
然后您将printInfo的标题更改为:
printInfo(a1, z1):
所以你会这样称呼:
printInfo(a,z)