El uso de funciones anidadas en Python

1.Funciones en Python

def testfunc():
    return "hello,good boy"
cpufc=testfunc#将一个函数赋值给一个变量
print(cpufc)
print(cpufc())#调用函数

La salida es:

<function testfunc at 0x000001E1940E85E8>
hello,good boy

2. Defina la función en la función

def testfunc():
    def func1():
        return "This is func1"
    def func2():
        return "This is func2"

    print(func1())
    print(func2())
    print("Now you are back in testfunc()")
testfunc()
This is func1
This is func2
Now you are back in testfunc()

testfunc1 () y testfunc2 () no son accesibles fuera de la función testfunc ().
Por ejemplo:
llamar a func1 () fuera de la función testfunc () reportará un error:

NameError: el nombre 'func1' no está definido

3. Devolver una función de una función

def testfunc(n):
    print("Now you are in testfunc()")
    def func1():
        return "This is func1"
    def func2():
        return "This is func2"
    return func1 if n==1 else func2
tt=testfunc(1)
print(tt)
print(tt())
#Now you are in testfunc()
#<function testfunc.<locals>.func1 at 0x000001FDE78EBCA8>
#This is func1

En la instrucción if / else, devuelva func1 y func2 en lugar de func1 () y func2 (). Cuando pones un par de paréntesis después, esta función se ejecutará; si no pones el paréntesis después, se puede pasar y se puede asignar a otras variables sin ejecutarla.
Al escribir tt = testfunc (1), se ejecutará testfunc () y se devolverá la función func1.
Al escribir tt () que es testfunc () (), la salida es: This is func1

4. Pasar una función como parámetro a otra función

def func1():
    return "This is func1"
def func2(func):
    print("This is func2")
    print(func)
func2(func1)
print("*"*10)
func2(func1())

# This is func2
# <function func1 at 0x0000020F9AC88048>
# **********
# This is func2
# This is func1

Supongo que te gusta

Origin blog.csdn.net/liulanba/article/details/114391274
Recomendado
Clasificación