online - Estilo de Python
python package name (6)
De la guía de estilo de Python :
Con respecto a enumerar una expresión compuesta:
Las declaraciones compuestas (declaraciones múltiples en la misma línea) generalmente se desalientan.
Sí:
if foo == ''blah'':
do_blah_thing()
do_one()
do_two()
do_three()
O para el código que proporcionó, el ejemplo de Greg es bueno:
if filecmp.cmp(local, config_file):
shutil.copyfile(remote, config_file)
else:
shutil.copyfile(local, config_file)
Más bien no:
if foo == ''blah'': do_blah_thing()
do_one(); do_two(); do_three()
Nombres de métodos y variables de instancia
Utilice las reglas de denominación de funciones: minúsculas con palabras separadas por guiones bajos según sea necesario para mejorar la legibilidad.
Actualización: por solicitud de Oscar, también se enumera cómo se vería su código de esta manera.
Pregunta simple para principiantes:
Creé una pequeña secuencia de comandos python para alternar entre dos archivos que estoy usando para probar.
Mi pregunta es, ¿cuál es un buen estilo de formato de python para el siguiente código:
import filecmp
import shutil
local = "local.txt"
remote = "remote.txt"
config_file = "C:/some/path/file.txt"
shutil.copyfile( remote if( filecmp.cmp(local, config_file ) ) else local, config_file )
O
shutil.copyfile( remote
if( filecmp.cmp(local, config_file ) )
else local,
config_file )
O
tocopy = remote if( filecmp.cmp( local, config_file ) ) else local
shutil.copyfile( tocopy, config_file )
¿O que?
Además, ¿cuál es la forma preferida de nombrar var en python para nombres de varias palabras, es "to_copy", "tocopy", "toCopy", "ToCopy"
Gracias.
El nombre más común que he visto es palabras separadas de underscode, to_copy.
En cuanto al estilo de formato, no he visto tal acuerdo. Encuentro
source = remote if filecmp.cmp(local, config_file) else local
shutil.copyfile(source, config_file)
ser el más claro entre tus opciones.
Y viendo que todos prefieren dividir el archivo, si al menos encapsulara la llamada del archivo de copia en caso de que algún día desee cambiarla:
def copy_to(source, destination):
shutil.copyfile(source,destination)
if filecmp.cmp(local, config_file):
copy_to(remote, config_file)
else:
copy_to(local, config_file)
La tercera opción parece la más natural para mí, aunque el uso de espacios en paréntesis laterales y paréntesis superfluos contradice la guía de estilo de Python .
Esa guía también responde la pregunta to_copy, pero probablemente usaría nombres más claros por completo.
Lo escribiría como:
import filecmp
import shutil
local = "local.txt"
remote = "remote.txt"
destination = r"C:/some/path/file.txt"
source = remote if filecmp.cmp(local, destination) else local
shutil.copyfile(source, destination)
Para la declaración condicional, probablemente iría con:
if filecmp.cmp(local, config_file):
shutil.copyfile(remote, config_file)
else:
shutil.copyfile(local, config_file)
En este caso, hay poca necesidad de usar la línea y if x else z
, ya que el código circundante es bastante simple.
Puede encontrar esto útil; PEP 8 - Guía de estilo para el código Python
Qué pasa:
import filecmp
import shutil
local = "local.txt"
remote = "remote.txt"
config_file = "C:/some/path/file.txt"
if filecmp.cmp( local, config_file):
to_copy = remote
else:
to_copy = local
shutil.copyfile( to_copy, config_file )
¡Ay! ¡Este nombre de pantalla abierto se ve terrible!