可以将数值、字符串、列表、字典类型的对象赋值给变量
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
后面再详说这些函数
lambda 表达式常用场景:当某些功能代码只用一次的时候,可以用 lambda 代替