为什么两个同名的变量不会搞乱代码?

2024-04-20 12:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个简单的代码,用于计算餐费+税+小费:

meal = 44.50
tax = 0.0675
tip = 0.15

meal = meal + meal * tax
total = meal + meal * tip

print("%.2f" % total)

我想知道为什么代码运行时没有任何问题,当我们显然有两个变量具有相同的名称,但不同的值?我指的变量是第1行和第5行的“吃饭”

有人能帮我澄清一下吗?在

谢谢!在


Tags: 代码名称totaltaxprinttip代码运行meal
3条回答

我想你是说meal。请记住,赋值是最后完成的-首先程序将meal + meal * tax计算为临时变量,然后重新定义{}以获得该临时变量的值。尝试打印该行前后的值作为插图。幕后的实际执行情况如下:

temporary = meal + meal * tax
meal = temporary
#temporary is out of scope at this point

你没有两个变量,namemeal是变量,在第二条meal = ...语句中被重写的是该变量的(指向整数对象的“指针”,而不是整数对象本身)。在

所以您不再有权访问第一个值。就变量名而言,您只能访问第二个变量名。看这个例子

>>> meal = 5   # first meal variable
>>> id(meal)
30126376

>>> meal = meal + 7  # second meal variable
>>> id(meal)
30126292

注意,“2nd”meal变量有一个新的ID,这是因为它是一个新的int,恰好有相同的名称。上一个变量不再可访问。在

当您第二次将值赋给meal时(在meal = meal + meal * tax行),上一个{}的值将被覆盖-您再也无法访问值44.50。因此,在这个特定的代码片段中绝不会同时存在两个meal对象。在

相关问题 更多 >