python的匿名函数、闭包和偏函数及函数扩展

1.匿名函数

匿名函数:lambda表达式:通过一个表达式实现函数功能
基本语法:lambda 参数列表:表达式语句
参数列表:用来给表达式传递数据
表达式语句:计算表达式,计算结果会自动输出
注意事项:lambda表达式,主要是用来替代功能简单的函数的!提高代码的简洁性
不要滥用!大量使用lambda表达式会造成代码可读性的严重下降!

fn = lambda x, y: x + y
# 等价于
def fn2(x, y):
    return x + y

print(fn(1, 2))
print(fn2(11, 22))

2.闭包

闭包就是函数里面嵌套一个函数
因为函数的出现,导致变量出现了分化:全局变量、局部变量
全局变量:当前模块中任意地方都能访问!
局部变量:当前函数中可以操作
~全局变量-局部变量:变量-在函数外部调用访问:

def outer():
    msg = "这是一个局部变量"
    print("这是一个函数", msg)

    def inner():
        print("可以访问外部变量msg", msg)
        return msg

    return inner

3.偏函数

PYTHON中的偏函数,就是一个语法糖

def show2(name, msg):
    print(name, ": " , msg)

from functools import partial

s = partial(show2, msg="HI")

s("tom")
show2("jerry", "hello)

4.函数的扩展了解

1. 函数也是一个对象:函数有自己的内存地址
'''
# 函数的引用赋值
def show():
    print("函数执行中....落霞与孤鹜齐飞")


print(id(show)) # 1922539728544
print(show) # 

# 将函数的地址赋值给一个变量
a = show
# 通过变量也可以调用执行函数
a()
# import threading
# threading.current_thread().isAlive()
# self.isAlive = self.is_alive
'''

# 2. 函数的传值操作:设计模式:策略模式
def show(message):
    # show函数需要一个参数message,参数需要传递一个函数
    message()

def show_msg1():
    print("输出卧龙的 攻击 策略")

def show_msg2():
    print("输出凤雏的 防守 策略")

# 调用执行函数show,传递给函数的参数:也是一个函数
# show(show_msg1)
show(show_msg2)

你可能感兴趣的:(python的匿名函数、闭包和偏函数及函数扩展)