-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path00_funciones.py
105 lines (65 loc) · 2.95 KB
/
00_funciones.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# FUNCIONES
""" PARA QUÉ SIRVEN
- tenemos un input
- la función realiza lo que tenga que hacer
- obtenemos un output
este proceso puede ser llamado después desde cualquier parte del programa, lo
que evita que tengamos código repetido varias veces
SINTAXIS -> función que recibe argumentos (inputs) y devuelve datos (outputs):
def function_name(inputs):
return output
recibir y devolver datos es algo opcional, pero es lo más común
por convenio, en Python se dejan dos líneas en blanco después de la definición
de una función hasta la siguiente línea de código
"""
# FUNCIÓN SIN RECIBIR NI DEVOLVER DATOS
# definición de la función
def greeting():
print("Hello world!")
# llamada a la función -> OBLIGATORIO para que se ejecute
greeting() # Hello World!
# otro ejemplo
def print_hundred():
for num in range(1, 101):
print(num)
print_hundred() # imprime los números del 1 al 100 (incluidos)
# FUNCIÓN QUE RECIBE DATOS PERO NO DEVUELVE NINGUNO
def greet_user(name):
print(f"Hello {name.title()}!")
greet_user("Naia") # Hello Naia!
# otro ejemplo
def auth(email, password):
if email == "[email protected]" and password == "123456":
print("You are authorized!")
else:
print("Sorry! You are not authorized...")
auth("[email protected]", "123456") # You are authorized
auth("[email protected]", "123456789") # Sorry! You are not authorized...
auth("[email protected]", "sfsefsfd") # Sorry! You are not authorized...
# FUNCIÓN QUE RECIBE Y DEVUELVE DATOS
def return_full_name(first, last):
return f"{first} {last}" # devuelve el nombre completo
def greet_somebody(name):
print(f"Hi {name}!") # imprime el saludo
full_name = return_full_name("Naia", "Larrea") # full_name = "Naia Larrea"
greet_somebody(full_name) # Hi Naia Larrea!
# FUNCIONES ANIDADAS ('NESTED FUNCTIONS')
""" CUÁNDO USAR NESTED FUNCTIONS?
si creas un programa con una función que va a tener que ser llamada en algún
otro momento a lo largo del programa, es mejor no usar nested functions
si solo vas a usar esa función para que sea llamada desde una única función,
entonces sí debería ser una nested function (como en el ejemplo)
SIGUIENDO EL EJEMPLO ANTERIOR, probablemente solo queramos usar la función que
devuelva el nombre completo para el saludo a esa persona, por ello, podemos
meter esa función dentro de la otra y llamarla desde ahí
la función 'hija', la que está dentro, puede acceder a las variables de la
función en la que se encuentra
"""
# definición de la función 'madre'
def nested_greeting(first, last):
# definición de la función 'hija'
def nested_full_name():
return f"{first} {last}"
# imprime el saludo llamando a la función hija para obtener el 'full name'
print(f"Hi {nested_full_name()}!")
nested_greeting("Naia", "Larrea") # Hi Naia Larrea!