Empezando N día
---- La parte más importante está aquí, ¡bienvenido a recolectar si lo desea! ----
-
El valor de retorno de la función
El valor de retorno son los datos transferidos desde el interior de la función al exterior. De forma predeterminada, los nuevos datos generados dentro de la función no se pueden utilizar fuera de la función
def func1(a, b): c = a + b print(c) n(1, 2) #3 ''' print(c) # NameError: name 'c' is not defined '''
¿Cómo determinar el valor de retorno de la función?
Cada función en Python tiene un valor de retorno. El valor de retorno depende de los datos detrás de la palabra clave de retorno que se encuentran cuando se ejecuta el cuerpo de la función. Si no se encuentra el retorno, el valor de retorno es Ninguno. Se espera que los datos como valor de retorno se coloquen después del retorno al final de la función. El valor de la expresión de llamada a la función es el valor de retorno de la función
def func1(a, b): print(a + b) c = func1(1, 20) # 没有遇到return print(f'函数返回值是:{c}') # 函数返回值是:None
El rol de retorno: cuando encuentre retorno, determinará el valor de retorno de la función y finalizará la función directamente, recibirá el valor de retorno fuera de la función y obtendrá el valor de la expresión de llamada de función fuera de la función para obtener el valor de retorno de la función
def func2(a, b): return a + b print(a + b) # 不会执行 c = func2(10, 2) print(f'函数返回值是:{c}') # 函数返回值是:12 def func3(a, b): return a + b, a * b c = func3(10, 2) print(f'函数返回值是:{c}') # 函数返回值是:(12, 20)
Básicamente, el valor devuelto es una tupla, pero puede usar múltiples variables para obtener múltiples elementos en la tupla
def func3(a, b): return a + b, a * b c, d = func3(10, 2) print(f'函数返回值是:{c}和{d}') # 函数返回值是:12和20
Ejercicio: defina una función que pueda encontrar la suma y el promedio de varios números
def sums(*args): if not args: return None, None return sum(args), sum(args) / len(args) sums1, mean1 = sums(1, 2, 3, 4, 56) print(f'它们的和是{sums1},它们的平均值是{mean1}')
Empacar y desempacar con *
# 打包 a, *b = 1, 2, 3, 4, 5 print(a, b) # 1 [2, 3, 4, 5] 通过*将b打包为列表 # 解包 b = [1, 2, 3, 4, 5] print(*b) # 1 2 3 4 5 通过*将b列表解包
-
Variable global
Las variables definidas fuera de funciones y clases son variables globales, y el alcance de las variables globales se puede utilizar en cualquier lugar desde el principio de la definición hasta el final del programa.
# 例如 a = 100 for i in range(1): print(f'循环内部{a}') # 循环内部100 def x(): a='0000000000' print(f'函数内部{a}') x() # 函数内部100 # 注意:这里的j和m 都是全局变量,因为它们都在函数和类的外面定义的 for j in range(3): m = 1 print(f"循环内部{j}和{m}") print(f"循环外部{j}和{m}") # 循环外部2和1 def x1(): print(f"函数内部{j}和{m}") x1() # 函数内部2和1
-
Variable local
Las variables definidas en la función son variables locales (las variables definidas en la clase no son variables locales sino atributos). El alcance es desde el principio de la definición hasta el final de la función
def func1(x, y=100): d = 123 # d,x,y 为局部变量 print(f'函数内部{d},{x},{y}') func1(1) # 函数内部123,1,100 # print(d,x,y) # NameError: name 'd' is not defined 不能在外部使用局部变量d
La memoria cambia durante la llamada a la función: cada vez que se llama a una función, el sistema abrirá automáticamente un espacio de memoria temporal en el área de la pila para guardar los datos (variables definidas) generados en la función. Cuando finaliza la llamada a la función, esta memoria Liberación automática. Ver los cambios en cada paso del proceso de ejecución (la URL tarda en abrirse)
http://pythontutor.com/visualize.html#mode=edit -
global: Defina variables globales en la función, que solo se pueden usar en el cuerpo de la función
# 定义一个全局变量 m = 100 n = 1 def func(): # 定义一个新的局部变量m m = 200 global n n = 100 # 将全局变量n的值变为100 n依然是全局变量 global p p = 10 # 在函数内部定义一个全局变量p print(f"局部变量m:{m},n:{n}") func() # 局部变量m:200 n:100 print(f"全局变量m:{m},使用global后的n:{n}") # 全局变量m:100,使用global后的n:100
-
no local: la reelaboración de la función en el cuerpo de la función modifica el valor de la variable local de primer nivel
def func5(): t = 1 s = 1 def func6(): nonlocal s s = 200 func6() print(f'函数中的变量t:{t},s:{s}') # 函数中的变量t:1,s:200 func5()
-
Función anónima
Una función anónima es esencialmente una función, y no necesita un nombre de función cuando está definida (en general, no se usará) y se usa a menudo cuando se llama a una función de orden superior con parámetros reales.
Sintaxis: lista de parámetros lambda: valor de retorno
Equivalente a: def a (lista de parámetros):
Devolver valor de retorno
def _(a, b): return max(a,b) re = _(1, 2) #获取函数的返回值 print(re) # 3 re=lambda m, n: m + n re1 = re(1, 3) print(re1) # 4 # 练习:写一个匿名函数,获取两个数中最大的那个数 a = lambda *args: None a1 = a(1, 50, 132, 4556) print(a1)
-
Las funciones son variables
Definir una función en Python significa definir una variable cuyo tipo es función y el nombre de la función es el nombre de la variable.
Las funciones pueden hacer lo que pueden hacer las variables ordinarias
a = lambda i: i * 2 print(f'a的类型{type(a)}') # a的类型<class 'function'> def b(x): return x * 2 print(f'b的类型{type(b)}') # b的类型<class 'function'> c = b # 不加括号是给变量c赋值,加括号是获取返回值 print(c(2)) # 4 list1 = [1, 2, 3, c(2), b(3)] # 将函数放入列表 print(list1) # [1, 2, 3, 4, 6] def func4(f): print(f(10, 20) * 2) func4(lambda *a: 12) def b(*x): return '*' a=b(123,2,5,6)*2 print(a) list2=[i if i < 10 else i for i in range(0,100,3)] print(list2) list2=[] for i in range(0,100,3): if i <10: list2.append(i) else: list2.append(i) print(list2)