2024-04-20 12:09:55 发布
网友
我在python中有一个简单的代码,用于计算餐费+税+小费:
meal = 44.50 tax = 0.0675 tip = 0.15 meal = meal + meal * tax total = meal + meal * tip print("%.2f" % total)
我想知道为什么代码运行时没有任何问题,当我们显然有两个变量具有相同的名称,但不同的值?我指的变量是第1行和第5行的“吃饭”
有人能帮我澄清一下吗?在
谢谢!在
我想你是说meal。请记住,赋值是最后完成的-首先程序将meal + meal * tax计算为临时变量,然后重新定义{}以获得该临时变量的值。尝试打印该行前后的值作为插图。幕后的实际执行情况如下:
meal
meal + meal * tax
temporary = meal + meal * tax meal = temporary #temporary is out of scope at this point
你没有两个变量,namemeal是变量,在第二条meal = ...语句中被重写的是该变量的值(指向整数对象的“指针”,而不是整数对象本身)。在
meal = ...
所以您不再有权访问第一个值。就变量名而言,您只能访问第二个变量名。看这个例子
>>> meal = 5 # first meal variable >>> id(meal) 30126376 >>> meal = meal + 7 # second meal variable >>> id(meal) 30126292
注意,“2nd”meal变量有一个新的ID,这是因为它是一个新的int,恰好有相同的名称。上一个变量不再可访问。在
int
当您第二次将值赋给meal时(在meal = meal + meal * tax行),上一个{}的值将被覆盖-您再也无法访问值44.50。因此,在这个特定的代码片段中绝不会同时存在两个meal对象。在
meal = meal + meal * tax
44.50
我想你是说}以获得该临时变量的值。尝试打印该行前后的值作为插图。幕后的实际执行情况如下:
meal
。请记住,赋值是最后完成的-首先程序将meal + meal * tax
计算为临时变量,然后重新定义{你没有两个变量,name
meal
是变量,在第二条meal = ...
语句中被重写的是该变量的值(指向整数对象的“指针”,而不是整数对象本身)。在所以您不再有权访问第一个值。就变量名而言,您只能访问第二个变量名。看这个例子
注意,“2nd”
meal
变量有一个新的ID,这是因为它是一个新的int
,恰好有相同的名称。上一个变量不再可访问。在当您第二次将值赋给}的值将被覆盖-您再也无法访问值
meal
时(在meal = meal + meal * tax
行),上一个{44.50
。因此,在这个特定的代码片段中绝不会同时存在两个meal
对象。在相关问题 更多 >
编程相关推荐