可以将数值、字符串、列表、字典类型的对象赋值给变量
number = 123 string = "hello" list = [1, 2, 3] dict = {'name': 'tom', 'age': 12}
可以将数值、字符串、列表、字典类型的对象作为参数传递给函数
print(123) print("hello") print([1, 2, 3]) print({'name': 'tom', 'age': 12})
可以将数值、字符串、列表、字典类型的对象作为函数的返回值
def return_number(): return 123 def return_string(): return "hello" def return_list(): return [1, 2, 3] def return_dict(): return {'name': 'tom', 'age': 12}
将函数作为第一类对象,函数具有和数值、字符串、列表、字典等类型的对象具有相同的地位
def max(a, b): if a > b: return a else: return b var = max print(var(1, 2)) # 输出结果 2
def func(): print("function") def pass_func(data): print("pass func") data() pass_func(func) # 输出结果 pass func function
def func(): print("function") def return_func(): print("pass func") return func # 等价 var = func var = return_func() var()
将函数作为第一类对象,是一种重要的抽象机制,极大的提升了程序的灵活性
代码结构完全相同,只是条件判断不同
# 重复性代码解决方法 list = [1, -1, 2, -2, 3, -3] def print_positive(list): for item in list: if item > 0: print(item) def print_negative(list): for item in list: if item < 0: print(item) print_positive(list) print_negative(list) # 输出结果 1 2 3 -1 -2 -3
# 重复性代码解决方法 list = [1, -1, 2, -2, 3, -3] def positive(x): return x > 0 def negative(x): return x < 0 def test(list, select_fun): for item in list: if select_fun(item): print(item) test(list, positive) test(list, negative) # 输出结果 1 2 3 -1 -2 -3
lambda args: expression
expression 只允许是一条表达式,所以使用很受限
lambda x:x>2
等价函数写法
def select_positive(x): return x > 0
def test(list, select_fun): for item in list: if select_fun(item): print(item) list = [1, -1, 2, -2, 3, -3] test(list, lambda x: x > 0) test(list, lambda x: x < 0) # 输出结果 1 2 3 -1 -2 -3
使用 Python 内置的 map 函数时,通常会用到 lambda 表达式
map(function, list)
list = [1, 2, 3] def test(x): x += 5 return x list1 = map(test, list) for i in list1: print(i) # 输出结果 6 7 8
list = [1, 2, 3] list1 = map(lambda x: x + 5, list) for i in list1: print(i) # 输出结果 6 7 8
f = lambda a, b: a if a > b else b print(f(1, 2)) # 输出结果 2 # lambda 表达式等价写法 def test(a, b): if a > b: return a else: return b
f = lambda x: x if x > 0 else 0 def test(f, x): if f(x): print("正数") else: print("负数") test(f, 1) test(f, -1) # 输出结果 正数 负数 # lambda 表达式等价写法 def func(x): if x > 0: return x else: return 0
f = lambda a, b, c: a * b * c def test(a, b, c): a += 1 b += 2 c += 3 return f(a, b, c) print(test(1, 2, 3)) # 输出结果 48 # 等价写法 def test(a, b, c): return a * b * c
后面再详说这些函数