python变量在使用前可以不赋值即使用,python直接给属性赋值的问题
python中为什么没有属性赋值的“with”语句?
Python有一个‘with’语句,封装了一个块的执行,在块的入口和出口调用代码。一些语言的结构如下:3360
带obj:
a=1#equivalenttoobj.a=1
total=total 1 # obj . total=obj . total 1在Python中,这样的结构是二义性的。
其他语言,如ObjectPascal、Delphi和C,使用静态类型,所以它们可以明确地知道成员被分配给什么。这是静态类型的关键点——编译器在编译时总是知道每个变量的范围。
使用Python动态类型。不可能预先知道在运行时要引用哪个属性。您可以动态添加或删除对象中的成员属性。这就使得单纯的阅读无法知道引用的是什么属性:局部属性、全局属性还是成员属性?
例如,使用下面的不完整代码段3360。
deffoo(a):
witha:
Print(x)此代码片段假定“a”必须有一个名为“x”的成员属性。然而,这并没有告诉Python中的解释器。假设‘a’是一个整数,会发生什么?如果有一个名为 x 的全局变量,会在with块中使用吗?正如您所看到的,Python的动态特性使得这样的选择更加困难。
但是,Python可以通过赋值轻松实现‘with’和类似语言特性的主要好处(减少代码量)。而不是:
函数(参数)。mydict[index][index]。a=21
函数(参数)。mydict[index][index]。b=42
函数(参数)。myddict [index] [index]。c=63这样写:
ref=函数(参数)。索引[索引]
参考a=21
参考b=42
Ref.c=63这也有提高执行速度的副作用,因为Python在运行时解析名称绑定,而第二个版本只需要执行一次解析。
更多Python问答。一个内容,请关注Python视频教程!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。