Python 为什么没有针对属性分配的“with”语句

Python 为什么没有针对属性分配的“with”语句

Python确实有with语句。它将一个块的执行包装起来,在进入和退出块时调用代码。一些语言有类似下面的结构-

with obj:
   a = 1
   total = total + 1

上述的 a = 1 等同于以下内容

obj.a = 1

而且, total = total + 1 等同于 ‚àí

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程