Python进阶(31)—函数的一些重要特性与lambda表达式

◎知识点

  1. 函数的一些重要特性

  2. lambda表达式


◎脚本练习

▽ 函数的一些重要特性

"""
    在python中,一切皆为对象。所以,函数也是对象,从而函数可以被赋值给变量
"""

def add(num1, num2):
    return num1 + num2

print(add)  # <function add at 0x104eabb80>

f = add
print(f(1, 2))  # 3

"""
    一个函数可以作为另一个函数的实参
"""

def eval_square(x):
    return x * x

result = map(eval_square, [1, 2, 3, 4])
print(list(result)) # [1, 4, 9, 16]

"""
    一个函数可以作为另一个函数的返回值
"""

def do_sth():
    return add

print(do_sth()(1, 2))   # 3

"""
    一个函数可以嵌套定义在另一个函数中
"""

def outer():
    def inner():
        print("This is inner")
    return inner

outer()()   # This is inner


▽ lambda表达式

"""
定义函数的语法格式:
    def 函数名([形式参数1, 形式参数2, ..., 形式参数n]):
        函数体
        
    当函数体中只有一行return语句时,函数的定义可以用一个lambda表达式来代替,其语法格式为:
    lambda [形式参数1, 形式参数2, ..., 形式参数n]: 关于形式参数的表达式
    
    与定义函数的语法格式相比,lambda表达式:
    (1) 没有函数名
    (2) 没有关键字def
    (3) 没有小括号
    (4) 关于形式参数的表达式相当于函数的返回值
    
    lambda表达式就是匿名简化版的函数
"""

def add(num1, num2):
    return num1 + num2

print(add(1, 2))    # 3

print((lambda num1, num2: num1 + num2)(1, 2))   # 3

"""
    在python中,一切皆为对象。所以,lambda表达式也是对象,从而lambda表达式可以被赋值给变量
"""

le = lambda num1, num2: num1 + num2
print(le(1, 2)) # 3

"""
    因为lambda表达式是匿名简化版的函数,所以,lambda表达式可以作为函数的实参
"""

result = map(lambda x: x * x, [1, 2, 3, 4])
print(list(result)) # [1, 4, 9, 16]

"""
    因为lambda表达式是匿名简化版的函数,所以,lambda表达式可以作为函数的返回值
"""

def do_sth():
    return lambda num1, num2: num1 + num2

print(do_sth()(1, 2))   # 3

◎脚本地址:


anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5493.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注