lunes, 25 de diciembre de 2023

ODOO (IX) :Introducción a Python

 1. Introducción a Python

No es un lenguaje tipado, cosa que puede provocar numerosos errores tipo "runtime"

Vemos algunas instrucciones

# Asignación
mivar=1

# Reasdignación
mivar="hola"

# Condiciones. Cuidado con olvidarse la indentanción
if var1 = 1 : print ("Verdadero")
else : 
   print("Falso")

#Captura de errores
try : c = 2 / 0
except NameError: print ("Error", NameError)

2. Decoradores

Son funciones que modifican a otras funciones y se utilizan mucho en Odoo

Veamos como se define una función simple

# Definición de la función
def add_one(num):
        print("incrementando 1 ...")
return num + 1 # Llamada a la función resultado = add_one(1) print(resultado) # Debe salir 2

Se pueden definir funciones que acepten funciones como parametros , por ejemplo

# Definición de la función que utiliza una función como parámetro
def complex_func (func, param):
	print("llamando a la primera funcion ...")
	return func(param)
	
# Llamada a la función
final_value1= complex_func(add_one, 5)  # devuelve 6
print (final_value1)

Una función también puede devolver funciones

# Definición de la función que devuelve otra función
def other_func (func, param):
	print("other_function is called")
    
	def inner_function():
    		print("inner_function is called")
      
	return inner_function
	
# Llamada a la función
returned_function = other_function()
returned_function()

Vamos a crear una función que añade 4 al resultado de otra función

# Definición de la función que utiliza una función como parámetro
def add4_func (func, param):
	print("llamando a la primera funcion ...")
	return func(param) + 4
	
# Llamada a la función
final_value2= add4_func(add_one, 5)  # devuelve 10
print (final_value2)

Veamos un ejemplo de actuación sin decoradores y a continuación con decoradores. Observar como se pasan los parámetros en ambos casos. 

#Definicón de función sin decorador
def myFun(*args):
    str=""
    for ele in args:
        str += ele
    print (str)
    
		
#Llamada función sin decorador
myDecorator (2,6) (myFun) ("uno, ", "dos, ","tres ","y ", "cuatro." )


#Definición de función con decorador
@myDecorator(10,20)
def myFun2(*args):
    str=""
    for ele in args:
        str += ele
    print (str)

#Llamada a función con decorador		
print (myFun2("cinco, ","seis ", "y ","siete."))

Los decoradores también se pueden encadenar. En este caso el ejemplo es de geeksforgeeks

# Prueba de encadenamiento de decoradores
def decor1(func): 
    def inner(): 
        x = func() 
        return x * x 
    return inner 
 
def decor(func): 
    def inner(): 
        x = func() 
        return 2 * x 
    return inner 
 
@decor1
@decor
def num(): 
    return 10

# Ahora se cambia el orden de encadenamiento
@decor
@decor1
def num2():
    return 10
   
print(num()) 
print(num2())

3. Clases


4. Librerías útiles

- Web scraping.

- ORM









No hay comentarios :

Publicar un comentario