2012-01-03 26 views
9

Estoy intentando cambiar a la notación PEP8 (a partir de una notación CamelCase bastante personal) y me preguntaba cómo están abordando los casos en que las funciones/variables existentes se sobrescribirán.Convención de nomenclatura de las variables de Python

p. Ej. teniendo algo como:

open, high, low, close, sum = row 

ya sobrescribiría las funciones "abrir" y "sum". Primero, si no usaría un IDE bueno, ni siquiera me daría cuenta de que acaba de sobrescribir funciones básicas importantes. En segundo lugar, ¿cómo nombrarías las variables? En este ejemplo, habría utilizado aplicaciones húngaras y no habría encontrado ningún problema potencial en absoluto.

Gracias!

Respuesta

8

¿Por qué no simplemente elegir nombres no conflictivos? Tales como opening_price, closing_price y total si eso es lo que representan. Si bien es posible calificar el espacio de nombres como en las otras respuestas, seguramente eso no debería ser necesario para las variables locales. Cualquiera que sea el idioma que programe, es su trabajo conocer las palabras reservadas; no hay muchos de ellos.

8

Yo usaría open_ y sum_.

+11

Si bien esto es lo que PEP8 sugiere, ¿por qué no simplemente elegir nombres no conflictivos? Tales como 'precio_inicio',' precio_cerrado' y 'total' si eso es lo que representan. Si bien es posible calificar el espacio de nombres como en las otras respuestas, seguramente eso no debería ser necesario para las variables locales. Cualquiera que sea el idioma que programe, es su trabajo conocer las palabras reservadas; no hay muchos de ellos. –

+1

@SideshowBob Creo que debería enviar su comentario como respuesta, porque es, en mi opinión, la mejor, más simple, más obvia y más idiomática solución al problema del OP. – Jeet

+0

muchachos, muchas gracias - Iré con la solución de Sideshow Bob. La razón inicial por la que no hice esto fue porque uso estas variables tan a menudo que usar algo como 'opening_price' en todas partes eventualmente parecería desordenado. Entonces, exactamente por esta razón, simplemente usaré 'o, h, l, c', ya que estas variables solo se usan localmente en las funciones y se usan con tanta frecuencia que tiene sentido mantenerlas lo más cortas posible. Avísame si no estás de acuerdo. ¡Gracias! – Muppet

5

En este caso particular, utilizaría un namedtuple. Esto convertiría esos nombres en calificados (data.open, data.low, etc.).

from collections import namedtuple 
Data = namedtuple('Data', ['open', 'high', 'low' 'close', 'sum']) 

data = Data(*row) 

Esto eliminaría la posibilidad de conflictos de nombres con las funciones incorporadas, y es probable que mejorar la legibilidad del conjunto a lo largo del camino.

3

Si son todos los valores desde el mismo dominio, se puede usar un diccionario:

params = ('open', 'high', 'low', 'close', 'sum') # defined once 

val = dict(zip(params, row)) # for each row 

# val == {'open': 12, 'high': 34, 'low': 56, 'close': 78, 'sum': 90} 

A continuación, se puede acceder directamente a ellos: val['open']. Puede iterar sobre ellos val.iteritems() y así sucesivamente.

0

Pep8 recomienda utilizar el guión bajo final, sin embargo, también se menciona que en algunos casos sería mejor utilizar la palabra de sinónimos para la variable.

Cuestiones relacionadas