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