De la entrada al encarcelamiento ------- función (dos)

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)
    

Supongo que te gusta

Origin blog.csdn.net/weixin_44628421/article/details/109034426
Recomendado
Clasificación