在下面的代码片段中,在第 1 行和第 2 行创建了两个名为 div 的对象。
python如何区分在同一作用域下创建的两个
div对象?当
id()应用于两个对象时,会为相似命名的对象显示两个不同的地址。为什么会这样?
def div(a,b):
return a/b
print(id(div)) # id = 199......1640 ################################ line 1
def smart_div(func):
def inner(a,b):
if a<b:
a,b=b,a
return func(a,b)
return inner
a = int(input("Enter 1st: "))
b = int(input("Enter 2nd: "))
div = smart_div(div)
print(id(div)) # id = 199......3224 ############################# line 2
print(div(a,b))
在像 C 这样的遗留语言中,不能在同一范围内创建两个同名的变量。但是,在 python 中,这条规则似乎并不适用。
请您参考如下方法:
在像 C 这样的语言中,您可以使用不同的值重命名变量。这就是您更新值的方式。在 C 中,它们必须具有相同的类型,因为 C 是一种静态类型语言。另一方面,Python 是动态类型的,这意味着它不跟踪类型。在程序中有一个表,其中名称与值相关联,当您将 div 定义为同一范围内的新值时,它只是覆盖该值,因为第二个 div 出现了之后。定义新的 div 值后,您将无法再访问函数 div。
