PEP8: Reglas de estilo

PEP8: Reglas de estilo.

Pueden descargar el editor spyder desde Debian:

sudo apt install spyder spyder3

Comandos para chequear PEP8, flake8, con pip y pip3:

sudo pip3 install flake8
sudo pip install flake8

flake8 code.py

Fuente: http://diarium.usal.es/inma/?page_id=51

PEP = Python Enhancement Proposal (Propuesta de Mejora de Python)
Las normas de estilo son muy importantes en python, empezamos con ellas. Nuestro editor Spyder nos va a ayudar poniendo una alerta amarilla en cada error de estilo que escribamos.
PEP8
Ya tenemos configurado Spyder para que nos muestre los errores de estilo y los espacios en el editor.
Cada error que escribamos nos mostrará un triangulo amarillo a la izquierda, si pasamos el puntero por encima nos dice cual es el error que estamos cometiendo. En este caso dice que echa de menos un espacio alrededor del operador.
A continuación tienes un listado de normas básicas, si quieres ver algo mas completo accede a http://mundogeek.net/traducciones/guia-estilo-python.htm

Indentación o sangrado

Indentación es un anglicismo que significa mover un bloque de texto a la derecha. En algunos manuales también ves escrito identación.
En muchos lenguajes de programación para crear bloques, se usan llaves, por ejemplo en java:
if (edad < 18){ System.out.println(“El alumno es menor de edad”);
}else{
System.out.println(“El alumno es mayor de edad”);
}
System.out.println(“Fin de la comprobación”);

El indentado o sangrado se suele usar para que el código quede mas legible, sin embargo no es de uso obligado, funciona igual aunque no se indente y todo el código estuviera escrito pegado al inicio de la línea.
En Python los bloques de código se crean mediante el indentado, nos ahorramos las llaves, sin embargo hay que prestar mucha atención al indentado, sería así:
if edad < 18: print(“El alumno es menor de edad”)
else:
print(“El alumno es mayor de edad”)
print(“Fin de la comprobación”)

REGLA DE ESTILO: Usa 4 espacios por cada nivel de indentación. NO usar tabuladores.
ojo Cada ‘nivel de indentado’ se refiere al anidamiento de bloques, por ejemplo: tienes un bloque for si dentro creas un bloque if, este tendrá un indentado de 8 espacios:
for num in (7, 13, 22, 5, 16): if num > 8:
print(num, “Es mayor que 8”)

Espacios en blanco en expresiones y sentencias

  • Rodea siempre operadores de asignación (=) aritméticos (+ * – / % ** ) relacionales o de comparación (== != < > <= >=) y lógicos (and or not) con un espacio en cada lado
    i = i + 1 c = (a + b) * (a - b)
  • Usa siempre un espacio después de una coma
    aulas = (‘aula1′, ‘aula2′, ‘aula3′)

Evita espacios en blanco extra

  • No uses espacios alrededor del signo ‘=’ cuando se use para indicar el valor de un parámetro por defecto.
    def mi_funcion(equipo, aula=1): print(“Hacer algo con el equipo ” + equipo + ” del aula ” + aula)
  • Inmediatamente después de entrar o antes de salir de un paréntesis, corchete o llave.
    print (equipos[1],
    macaddress[1])
  • Inmediatamente antes de abrir un paréntesis o un corchete
    dicccionario['key'] = lista[index] print(dict['key'])
  • Inmediatamente antes de una coma, punto y coma, o dos puntos:
    x = 4; y = 6 if x == 4:
    print(x, y)
  • Más de un espacio alrededor de un operador de asignación (u otro operador) para alinearlo con otro.
  • Evita los típicos espacios al final de cualquier línea. Estos espacios no son fáciles de detectar, spyder te mostrará el error con el triangulo amarillo.

Tamaño máximo de líneas

  • 79 caracteres. (Esta regla me cuesta especialmente cumplirla)

Líneas en blanco

  • Después de definir una función o una clase deja dos líneas en blanco.
  • Las definiciones de métodos dentro de una clase se separan con una línea en blanco
  • Al final del script deja una línea en blanco
  • Generalmente se desaconsejan las sentencias compuestas (varias sentencias en la misma línea). Preferiblemente no escribir:
    if foo == ‘blah’: do_blah_thing() do_one(); do_two(); do_three()

Codificación de caracteres

Para Python 3.0 y superiores, se recomienda UTF-8 en lugar de Latin-1 (también conocida como ISO-8859-1), se escribe la siguiente línea al inicio del script:
# -*- coding: utf-8 -*-

Imports

Para utilizar las librerías estándar de python o de terceros debemos previamente importarlas al inicio del script, con la palabra reservada import seguida del nombre de la librería:
  • Normalmente los imports deberían colocarse en distintas líneas, por ejemplo:
    import os import sys
  • Los imports se colocan siempre en la parte superior del archivo, justo después de cualquier comentario o cadena de documentación del módulo, y antes de las variables globales y las constantes del módulo. Los imports deberían agruparse siguiendo el siguiente orden:
    • imports de la librería estándar
    • imports de proyectos de terceras partes relacionados
    • imports de aplicaciones locales/imports específicos de la librería
  • Deberías añadir una línea en blanco después de cada grupo de imports.

Comentarios

  • De una única línea, deben comenzar con un # y un espacio.
  • Multilínea empiezan y acaban con tres comillas dobles
    “”"Comentario de varias líneas
    bla bla bla
    otra línea
    “”"
    # Comentario de una sola línea

Documentación

Docstrings o cadenas de documentación es una literal de cadena de caracteres que se coloca como primer enunciado de un módulo, clase, método o función, y cuyo propósito es explicar su intención.
Siempre se utiliza “”" para abrir y cerrar el docstring aunque sean de una sola línea.
Escribe docstrings para todos los módulos, funciones, clases, y métodos públicos.

Como nombrar variables funciones o clases

  • minusculas_con_guiones para variables, funciones, métodos y atributos
  • minusculas_con_guiones oTODO_MAYUSCULAS para las constantes
  • PalabrasEnMayusculas para las clases
  • Atributos: interfaz, _interno, __privado

Ejercicio 1.1

Objetivo: ser consciente de la importancia de los espacios y líneas en blanco en nuestro código
  1. Copia este script en un archivo usando vim, o gedit, No uses todavía spyder, que te daría muchas pistas. (Repasa las comillas seguro que tienes que escribirlas de nuevo)
  2. Nómbralo como e1_1_pep8.py
  3. Ejecutalo en una consola con el comando: ~$python3 e1_1_pep8.py
  4. ¿Da algún error o aparentemente todo es correcto?
  5. Abre de nuevo el archivo, en el mismo editor que lo creaste, busca los errores de estilo y corrígelos
  6. ¿Cuántos errores has encontrado?
  7. Abre el archivo ya corregido en spyder, y observa si aún hay algún triangulo amarillo en el lateral izquierdo.
  8. ¿Cuántos errores has dejado sin corregir?

# -*- coding: utf-8 -*- import os,sys
def mifuncion( arg1 ,arg2 = 8):
“”" Esta función imprimirá sus dos parámetros, sólo el primero es obligatorio “”"
print (“Primer argumento=”,arg1)
print(“Segundo argumento=”,arg2)
#Mostrar archivo que se está ejecutando y en que directorio estamos
print( “El nombre de este script es:”,sys.argv[0 ])
print(“Estamos en el directorio:”, os.getcwd())
var1= 4
var2 =”FELIZ AÑO 2018″
mifuncion(var1,var2)
var3, var4 = (3,4)
mifuncion(var3)

Ejercicio 1.1 Solución

# -*- coding: utf-8 -*- import os
import sys
def mifuncion(arg1, arg2=8):
“”" Esta función imprimirá sus dos parámetros, sólo el primero es
obligatorio “”"
print(“Primer argumento=”, arg1)
print(“Segundo argumento=”, arg2)
# Mostrar archivo que se está ejecutando y en que directorio estamos
print(“El nombre de este script es:”, sys.argv[0])
print(“Estamos en el directorio:”, os.getcwd())
var1 = 4
var2 = “FELIZ AÑO 2018″
mifuncion(var1, var2)
var3, var4 = (3, 4)
mifuncion(var3)

Ejercicio 1.1 – Observaciones

  • En total había 21 errores de estilo, solo de espacios en blanco mal colocados y de líneas en blanco
  • Si te acostumbras a escribir código con un editor como spyder que te muestra rápidamente los errores que vas cometiendo, veras que pronto automáticamente escribes código en modo pythonic.
  • Algunas cosas que puedes ver en este sencillo código:
    • Como se importan librerías estándar con import
    • Como se crea y se llama a una función
    • Como se asignan valores a variables, incluso utilizando una tupla con dos valores para ser asignados a dos variables distintas: var3 y var4
    • Observa que el tipo de las variables no se declara y no es inmutable: el parámetro arg2, su valor por defecto es un entero, sin embargo llamamos a la función con la cadena var2

LATINCHAIN PLATFORM



news.latin-chain.com/
LatinChain Platform: Pi Hackathon winner 2021.
Welcome to LatinChain Ecosystem portal on Pi Network cryptocurrency ecosystem. Get utility usage bonus by using Mainnet and Testnet.


Understanding the LatinChain Ecosystem

Your gateway to decentralized applications on the Pi Network.


Welcome to the LatinChain Ecosystem portal. As a decentralized application (dApp) built on the Pi Network, our goal is to provide real utility and seamless interaction for the Pi community. Whether you are a developer, a pioneer, or a casual user, understanding the difference between our Mainnet and Testnet environments is crucial for maximizing your experience.



Staking Pi to Boost Rank

Did you know you can directly support the growth of LatinChain Mainnet?

By Staking Pi on our app within the Pi Browser, you help boost our ranking in the ecosystem directory. A higher rank means more visibility, bringing more Pioneers into our community and increasing the value of the network for everyone.

Support us today and help LatinChain reach the top!



Why Choose the Mainnet?

The LatinChain Mainnet (latinchain.pinet.com) is the live production environment where real value is exchanged. By accessing the Mainnet, you are interacting with the fully operational version of our blockchain application.

  • Real Utility: Every action contributes to the genuine activity of the network.
  • Verified Status: Users who choose to support the ecosystem via donations can unlock "Verified" status. This signals your commitment to the community.
  • Double Utility Bonus: Active usage on the Mainnet contributes to your Pi utility usage bonus.


The Role of the Testnet

The Testnet serves as our sandbox environment. It is designed for users who want to explore new features, test transaction flows, or understand the mechanics of the LatinChain token without using real Pi. It is the perfect training ground for new pioneers to get comfortable with Web3 interactions before moving to the Mainnet.



How the LatinChain Token Works

LatinChain is designed to foster a digital economy within the Pi Browser. By participating in either network, you are helping to stress-test and improve a growing financial ecosystem.



Select an option above to begin your journey.

The Evolution of Cryptocurrency: From Bitcoin's Genesis to Pi Network's Ecosystem (2008-nowadays)

The world of finance was forever changed in the aftermath of the 2008 global financial crisis. What started as an obscure proposal on a cryptography mailing list has transformed into a global technological revolution. Here is the journey of cryptocurrency from its inception to the present day.



The Genesis: Bitcoin and the Decentralized Dream (2008-2010)

In October 2008, an anonymous entity named Satoshi Nakamoto published a whitepaper titled "Bitcoin: A Peer-to-Peer Electronic Cash System." It introduced a revolutionary concept: a decentralized digital currency that required no central bank or administrator.

  • The Genesis Block: On January 3, 2009, the first block of the Bitcoin network was mined, setting the foundation for a new financial paradigm.
  • Proof of Work: This brilliant consensus mechanism solved the double-spending problem, ensuring complete trust in a trustless digital environment.



Programmable Money: Ethereum and the DeFi Explosion (2015-2021)

While Bitcoin proved the concept of digital scarcity, developers soon realized blockchain technology could do much more. In 2015, Ethereum launched, introducing "smart contracts"—self-executing code that lives directly on the blockchain.

  • Decentralized Finance (DeFi): Ethereum enabled the creation of lending platforms, decentralized exchanges, and automated market makers.
  • Mainstream Awareness: By 2021, the crypto market reached unprecedented heights, driven by global retail interest, digital art (NFTs), and the exciting promise of Web3.



Maturation and Institutional Adoption (2022-2024)

Following the euphoric highs of previous years, the industry entered a vital period of maturation. The global focus shifted from pure speculation to building robust, scalable infrastructure.

  • Layer 2 Solutions: New networks built on top of base blockchains made transactions significantly faster and cheaper.
  • Wall Street Entry: Major traditional financial institutions embraced Bitcoin ETFs, permanently cementing cryptocurrency as a legitimate and highly sought-after asset class.



The Accessibility Revolution: Pi Network (2025-nowadays)

Despite massive industry growth, a major barrier remained: traditional crypto mining was expensive and technically complex. Enter Pi Network, a visionary project designed to put cryptocurrency directly into the hands of everyday people. By nowadays, Pi Network has beautifully solidified its vision of creating a truly inclusive digital economy.

  • Mobile-First Innovation: Pi revolutionized accessibility by allowing users to mine directly from their smartphones without draining battery life or data.
  • Global Community: It successfully built one of the largest, most engaged, and widely distributed communities in the entire Web3 space.
  • Everyday Utility: With a robust ecosystem of decentralized applications (dApps) and an innovative native KYC solution, Pi Network empowers millions of everyday users to transact, build, and interact seamlessly.



Takeaway: The journey from 2008 to nowadays highlights a monumental shift from niche cryptography to universal accessibility, paving the way for a financial future that truly includes everyone.

Comments

Popular posts from this blog

Tech Industry Brief: Top Technology News From the Last 24 Hours (October 6, 2026)

Pi Network Apps published on Pi Network Ecosystem

Tech Brief (Last 24 Hours): Cloudflare's Open-Weight 'Clef' Models, Reddit Kills RSS & Public APIs, and Google's Gemini 4 Argon