2015-07-13 3 views
1

Разрешены ли эллиптические ссылки в Python?Эллиптические ссылки в записях Python

В эллиптической ссылке поле называется, но любое или все имена записываемых записей могут быть опущены, если результирующая ссылка не имеет однозначного значения в среде ссылок.

Не могли бы вы предоставить мне несколько коротких примеров.

ответ

1

Нет, вы не можете делать эллиптические ссылки на обычные объекты данных в Python, потому что «Явный лучше, чем неявный» в соответствии с the Zen of Python.

Однако, вы можете сделать что-то вроде

from mymodule import Myclass 
thing = Myclass() 

вместо

import mymodule 
thing = mymodule.Myclass() 

Хотя эллиптические ссылки могут сделать код более лаконичным, на практике это может фактически препятствовать читаемость кода, так как вам нужно выяснить, является ли эта ссылка простым именем или сокращенной ссылкой, а при написании кода вы должны охранять снова t случайно создавая неоднозначную ссылку. Кроме того, обработка таких ссылок затрудняет работу компилятора или интерпретатора. Поэтому даже на языках, которые допускают эллиптические ссылки, может быть разумным избегать их использования - многие программисты 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] 

Etc

За отличную статью на имя связывания в Python, пожалуйста, см Facts and myths about Python names and values на SO ветеран Ned Батчелдер.

+0

спасибо, что сэр за ответ на мой вопрос. :) – zen

+0

Thankyou, @ElizaMarie. Если вам нравится мой ответ, не стесняйтесь [принять] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). :) –