为什么 Python 没有用于属性赋值的"with"语句?
pythonprogrammingserver side programming更新于 2023/11/29 7:09:00
Python 肯定有 with 语句。它包装了块的执行,在块的入口和出口调用代码。有些语言有类似下面的结构 −
with obj: a = 1 total = total + 1
The above a = 1 is equivalent to the following −
obj.a = 1
And, total = total + 1 is equivalent to −
obj.total = obj.total + 1
编程语言使用静态或动态类型。
静态类型
静态是指在编译时确定/知道对象类型的程序执行,即当编译器执行代码时,它知道对象所属的对象或类的类型。
编程语言(如 Object Pascal、Delphi 和 C++)使用静态类型,因此可以以明确的方式知道分配给哪个成员。这是静态类型的要点 - 编译器在编译时始终知道每个变量的范围。
动态类型
在动态中,对象的类型在运行时确定。Python 使用动态类型。不可能提前知道在运行时将引用哪个属性。
让我们看一个例子 -
def demo(x): with k: print(x)
该代码片段假设 k 必须具有一个名为 x 的成员属性。但是,Python 中没有任何内容可以告诉解释器这一点。
在 Python 中,通过赋值可以轻松实现 with 的主要优势 −
function(args).mydict[index][index].k = 21 function(args).mydict[index][index].l = 42 function(args).mydict[index][index].m = 63
上述内容也可以通过以下方式实现 -
ref = function(args).mydict[index][index] ref.k = 21 ref.l = 42 ref.m = 63