本帖最后由 jackz007 于 2022-1-5 19:42 编辑 if entityType & 0x00010000 == 0x00010000:
dropItemName = "strongest:blue_powder_shard"
elif entityType & 0x01000000 == 0x01000000:
dropItemName = "strongest:red_powder_shard"
elif entityType & 0x00001000 == 0x00001000:
dropItemName = "strongest:white_powder_shard"
elif entityType & 0x00040000 == 0x00040000:
dropItemName = "strongest:green_powder_shard"
else:
return
这个代码在多数条件下都为 dropItemName 赋了值,所以,最后 打印了变量值,唯一在 else 条件下没有为 dropItemName 赋值,但是,这个 else 只是执行了 return 语句,直接结束了函数调用,并不需要访问到变量 dropItemName,所以,不会出现问题。
而下面这个代码就不一样了,变量 newItemName 只是在特定的条件下(newItemDict 逻辑值为真,应该是字典不为空)才会为 newItemName 赋值,而在 newItemDict 为假的情况下,变量 newItemName 就没有被赋值,但是,在 if 以后的 print 语句却并不受 newItemDict 逻辑值的约束,会无条件访问变量 newItemName,这个时候,系统当然就会报错了。 if newItemDict:
newItemName = newItemDict['newItemName']
print newItemName
|