alw*_*btc 1 python closures scope compilation declaration
请看下面的内容:
a = 5
print a + b
b = 4
Run Code Online (Sandbox Code Playgroud)
当我尝试运行上面的代码时,它会给出一个错误:Traceback(最近一次调用最后一次):文件"C:/Users/user/Documents/modules/ab.py",第2行,打印a + b NameError:名称'b'未定义
好.被定义a + b之前调用b.这意味着Python按顺序运行代码,从上到下开始.但是,这个怎么样:
class Data:
def __init__(self):
self.debug_level = 9
self.assign = [0, 0, 0, 0]
self.days = 0
def create_days(self, startTime, endTime):
res = 0
try:
if self.final_days < self.maximum_days:
Run Code Online (Sandbox Code Playgroud)
以上,self.final_days并且self.maximum_days尚未定义要么,但它不会给任何错误.它背后的逻辑是什么?
最好的祝福,
你还没有真正"运行"代码.在您的示例中,您拥有的只是Data类中的方法声明.在其中,Python不会检查类字段是否存在,因为它们可能在其他时间设置,在某些其他方法中(Python的类在这种意义上是可塑的).
如果您尝试在Data类的新实例中运行create_days方法而不事先设置这些字段的值,则会出现错误.