Python Crash Course, de 0 a 100 con Python
Tags: python, tutorial, devops, spanish
Published: 2023-04-11 13:50:35

{% embed https://www.youtube.com/watch?v=siQvDvRPbS4 %}

Hoy os dejo todo el código del videotutorial de Python en esta comunidad. Así que si me queréis seguir, comentar, darle a like, etc. me haréis un favor(Tanto aquí como en Youtube, Linkedin, etc.)(Sí, soy mu pesao).

## Estructuras de datos

Lo primero que hemos hecho ha sido trabajar con variables y estructuras de datos. Python tiene los típicos tipos básicos Integer, Float, Boolean y Strings pero donde realmente destaca es por su soporte nativo a listas, tuplas y diccionarios:

```
mylist = [ "java", "go", "php", "python", "nodejs" ]

print( "" )
print( "Listas" )
print( "===============================================================" )
print( "mylist: %s" % mylist )
print( "Intervalo 1 a 4: %s" % mylist[1:4] )
print( "Intervalo 1 al final: %s" % mylist[1:] )
print( "Intervalo posición 2 empezando por atrás al final: %s" % mylist[-2:] )

mylist.append( "rust" )
mylist.remove( "php" )
mylist.append( 4 )

print( "Añado 'rust', quito 'php', añado 4: %s" %mylist )

# Las tuplas son como las listas pero inmutables. Su principal ventaja es el poco espacio que ocupan en memória

mytupla = ( "java", "go", "php", "python", "nodejs" )

print( "" )
print( "Tuplas" )
print( "===============================================================" )
print( "mytupla: {0}".format(mytupla) )

# Diccionarios

print( "" )
print( "Diccionarios" )
print( "===============================================================" )
mydict = { "hello": "world", "mylist": mylist, "mytupla": mytupla }

print( "mydict: {0}".format(mydict) )
print( "Valor de 'hello': {0}({1})".format(mydict['hello'], type(mydict['hello'])) )
```

## Estructuras de control: condicionales y bucles

Después de ver las estructuras de datos hemos visto como crear condicionales y bucles:

```
# bucles
print( "" )
print( "Bucles" )
print( "===============================================================" )

for x in mydict:
    print( "keys: {0}".format(x) )

for x, y in mydict.items():
    print( "{0} = {1}".format(x, y) )    

for x in mydict.values():
    print( "values: {0}".format(x) )    

for x in range(1,5):
    print( "Rango: {0}".format(x) )    

count = 0
while count < 5:
    print( "Condición: {0}".format(count) )
    count += 1

# condicionales
print( "" )
print( "Condicionales" )
print( "===============================================================" )

for x in mytupla:
    print( "Procesando: {0}".format(x) )

    if x == "go":
        print( " Es Go!!!!!!!!!!!!!!!!!!!!!!!!!" )
    else:
        print( " No es go" )
```

## Estructuración del código: Funciones, lambdas y classes

```
# Funciones y lambdas
def my_function( myparam ):
    print( "El parámetro de mi función es: {0}".format( myparam ) )

    return "ok"

print( "" )
print( "funciones" )
print( "===============================================================" )
my_function( mylist )

print( "" )
print( "lambdas" )
print( "===============================================================" )
mylamda = lambda x,y:x+y
print( "El resultado de 2+5={0}".format( mylamda(2,5) ) )

# Classes
print( "" )
print( "Condicionales" )
print( "===============================================================" )

class Vehiculo:
    def __init__(self, ruedas):
        self.ruedas = ruedas

coche = Vehiculo( 4 )
print( coche )
print( vars(coche) )
```

## Módulos

Los módulos nos permiten organizar el código y para ilustrar su funcionamiento hemos creado un fichero llamado 'mymodule.py' con una variable y una función:

```
mymodulevar = { "customer_id":12, "total": 15000 }

def mymodulefunc():
    print( "Module func" )
```

Después hemos creado un segundo fichero en python y hemos hecho uso de sus recursos:

```
import mymodule

mymodule.mymodulefunc()

x = dir(mymodule)

print(x)
```

## Bonus Track: Script Ejecutable

Finalmente, hemos visto como podíamos crear un script ejecutable con python simplemente creando un archivo y añadiendo en su cabecera `#!/usr/bin/env python3` y dándole permisos de ejecución con `chmod +x myfichero`.

También hemos usado el módulo 'argparse' que nos ofrece el API de Python para parsear argumentos. El código del script es el siguiente:

```
#!/usr/bin/env python3
import argparse

parser = argparse.ArgumentParser(description="PaaS deployment tool.", formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-r', '--repository', required=True, help="Gitlab repository URL.") 
parser.add_argument('-e', '--environment', choices=["dev","pre", "pro"], default="dev", required=False, help="Environment.") 
parser.add_argument('action', nargs="?", choices=["deploy"], default="deploy", help="Openshift project name.") 

args = vars( parser.parse_args() )

print( "" )
print( "Argumentos:" )
print( "  %s" % args )
print( "" )
```

¡Esto es todo amigos! Espero que lo disfrutéis.