能夠將數值、字符串、列表、字典類型的對象賦值給變量express
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})
能夠將數值、字符串、列表、字典類型的對象做爲函數的返回值spa
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}
將函數做爲第一類對象,函數具備和數值、字符串、列表、字典等類型的對象具備相同的地位code
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()
將函數做爲第一類對象,是一種重要的抽象機制,極大的提高了程序的靈活性對象
代碼結構徹底相同,只是條件判斷不一樣blog
# 重複性代碼解決方法 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 表達式 string
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
後面再詳說這些函數it