Python中是否允许使用椭圆引用?
在椭圆引用中,该字段已命名,但只要结果引用在引用环境中明确无误,就可以省略任何或所有封闭记录名称。
你能给我一些简短的例子吗。谢谢。
答案 0 :(得分:1)
不,你不能对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。