Closed naquiroz closed 6 years ago
¡Hola @naquiroz !
Cuando dices:
guardar de manera global como
string
, ese archivo 📃
¿A qué te refieres con eso? (De lo posible dar un ejemplo) 🤔
Hola @rihanuch !
Con eso me refiero a lo siguiente:
with open('something.txt', encoding='utf-8') as file:
the_file = file.read().splitlines()
def is_in_file(word: str) -> bool:
for line in the_file:
if word in line:
return True
return False
def edit_line(initial: str, final: str):
for i, line in enumerate(the_file):
if line == initial:
the_file[i] = final
break
Otro ejemplo seria hacer uso de namedTuples:
from collections import namedtuple
from typing import Tuple
Data = namedtuple('Data', ('id_', 'data'))
def make_somethinng(id_: int, string: str) -> Data:
return Data(id_, string)
def get_something(data: Data) -> Tuple[int, str]:
return data.id_, data.data
Como se puede ver en los ejemplos, existe una variable que se usa a lo largo de varias funciones, y pero técnicamente no está en ninguna función. Esto está permitido?
@naquiroz , se puede hacer lo que dices, siempre y cuando se siga lo siguiente ⚠️:
NOMBRE_CONSTANTE = data
👀Supongo que no lo hiciste de adrede, pero también es importante mencionar que en tus ejemplos estas haciendo uso indebido 🚨 de los for
, ya que en ambos casos se pueden realizar las mismas funciones mediante un map
¡Saludos y éxito! 🍀
@rihanuch Gracias! Respecto a
@naquiroz ,
Según la guía de estilo de PEP8, las named tuples
deben ser tratadas como clases, por lo tanto solo la primera letra es en mayúsculas. Esto se debe a que:
Class names should normally use the CapWords convention. The naming convention for functions may be used instead in cases where the interface is documented and used primarily as a callable. Note that there is a separate convention for builtin names: most builtin names are single words (or two words run together), with the CapWords convention used only for exception names and builtin constants.
Ojo que tienes que tener en consideración que en la vida real no debes ❌ guardar toda la información que está siendo utilizada en la memoria RAM, ya que de ser así tendrías que tener mucha más de la que se puede tener (por ejemplo si trabajas con una base de datos de índices económicos)
¡Suerte! 🍀
@naquiroz , no se si lo alcanzaste a leer antes del EDIT, pero me había equivocado, ahora está bien 😬
Digamos tengo un modulo que tiene funciones que usan un archivo constantemente. Puedo guardar de manera global como
string
, ese archivo :page_withcurl:? Pregunto, por la filosofía de “Do one thing and do it well”_, dado que se busca hacer funciones de lineas <= 15, entonces se podría considerar como trampa ❌