【发布时间】:2015-07-13 07:43:25
【问题描述】:
Python 中是否允许省略引用?
在省略号引用中,字段被命名,但任何或所有封闭记录名称都可以省略,只要生成的引用在引用环境中是明确的。
你能给我一些简短的例子吗..谢谢。
【问题讨论】:
标签: python records recordtype
Python 中是否允许省略引用?
在省略号引用中,字段被命名,但任何或所有封闭记录名称都可以省略,只要生成的引用在引用环境中是明确的。
你能给我一些简短的例子吗..谢谢。
【问题讨论】:
标签: python records recordtype
不,您不能在 Python 中对普通数据对象进行省略引用,因为根据 the Zen of Python,“显式优于隐式”。
但是,你可以做类似的事情
from mymodule import Myclass
thing = Myclass()
而不是
import mymodule
thing = mymodule.Myclass()
虽然省略号引用可以使代码更简洁,但实际上它会阻碍代码的可读性,因为您需要确定引用是简单名称还是缩写引用,并且在编写代码时您必须防止意外创建模棱两可的引用。此外,处理此类引用会使编译器或解释器的工作更加困难。因此,即使在允许省略引用的语言中,避免使用它们也是明智之举 - 许多 JavaScript 程序员出于这个原因避免使用 with 构造。
在 Python 中,我们真的不需要省略引用,因为我们可以轻松地将名称绑定到深度结构化对象的任何级别。
例如,代替
a = some.deeply.structured.thing[5]['items'][0]
b = some.deeply.structured.thing[5]['items'][7]
c = some.deeply.structured.thing[5]['items'][11]
我们可以的
ref = some.deeply.structured.thing[5]['items']
a = ref[0]
b = ref[7]
c = ref[11]
等等
有关 Python 中名称绑定的优秀文章,请参阅 SO 老手 Ned Batchelder 的 Facts and myths about Python names and values。
【讨论】: