为什么Python没有关于属性赋值的“with”语句?
Python确实有with语句。它包装了一个代码块的执行,在块的入口和退出时调用代码。有一些语言有如下的构造形式:
with obj:
a=1
total=total+1
上述的a=1等价于下面的代码:
obj.a=1
而 total=total+1 等价于
obj.total=obj.total+1
编程语言使用静态或动态类型。
阅读更多:Python 教程
静态类型
静态表示程序的执行在编译时确定/已知对象类型,即在编译器执行代码时,它知道对象或类所属的类型。
编程语言,如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
极客教程