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('max = %d' % var(1, 2))
def func(): print('Inside func') def pass_func(data): print('Inside pass_func') data() pass_func(func)
def func(): print('Inside func') def return_func(): print('Inside return_func') return 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)
list = [1, -1, 2, -2, 3, -3] def select_positive(x): return x > 0 def select_negative(x): return x < 0 def select(list, select_function): for item in list: if select_function(item): print(item) select(list, select_positive) select(list, select_negative)
在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
lambda x: x > 0
该函数等价于函数 select_positive,如下所示:
def select_positive(x): return x > 0
在前面的小节中,将函数作为参数,编写程序实现打印正数和负数。下面使用 lambda 表达式重写这个程序:
list = [1, -1, 2, -2, 3, -3] def select(list, select_function): for item in list: if select_function(item): print(item) select(list, lambda item: item > 0) select(list, lambda item: item < 0)
map 函数接收两个参数 function 和 list,function 是一个函数,list 是一个可以被遍历的序列,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的序列返回。
list = [1, 2, 3] list2 = map(lambda x: x * 2, list) for item in list2: print(item) list10 = map(lambda x: x + 10, list) for item in list10: print(item)
http://www.imooc.com/wiki/pythonlesson1/pythonlambda.html