【问题标题】:Elliptical references in Python recordsPython 记录中的省略号引用
【发布时间】:2015-07-13 07:43:25
【问题描述】:

Python 中是否允许省略引用?

在省略号引用中,字段被命名,但任何或所有封闭记录名称都可以省略,只要生成的引用在引用环境中是明确的。

你能给我一些简短的例子吗..谢谢。

【问题讨论】:

    标签: python records recordtype


    【解决方案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

    【讨论】:

    • 谢谢你,@ElizaMarie。如果您喜欢我的回答,请随时accept。 :)
    猜你喜欢
    • 2013-02-02
    • 2011-09-02
    • 2018-02-18
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多