標籤:裝飾器 技術 AC code 否則 .com 應該 init class
No1:
函數式編程:即函數可以作為參數傳遞,也可以作為傳回值
No2:
map()函數接收兩個參數,一個是函數,一個是Iterable,map將傳入的函數依次作用到序列的每個元素,並把結果作為新的Iterator返回
No3:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
No4:
排序
No5:
函數作為傳回值,每個傳回值函數式不一樣的(應該是對象地址不一樣)
No6:
返回閉包時牢記一點:返回函數不要引用任何迴圈變數,或者後續會發生變化的變數
原因就在於返回的函數引用了迴圈變數,但它並非立刻執行,所以迴圈變數都是最後一個值
解決方案
這樣f(i)就會立即執行
No7:
匿名函數
No8:
decorator在代碼運行期間動態增加功能的方式,稱之為“裝飾器”(Decorator)。
@log放到now()函數的定義處,相當於執行了語句:
now = log(now)
3層嵌套的效果是這樣的:
now = log(‘execute‘)(now)
No9:
偏函數:functools.partial的作用就是,把一個函數的某些參數給固定住(也就是設定預設值),返回一個新的函數,調用這個新函數會更簡單
No10:
一個.py檔案就稱之為一個模組(Module)
每一個包目錄下面都會有一個__init__.py的檔案,這個檔案是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空檔案,也可以有Python代碼,因為__init__.py本身就是一個模組,而它的模組名就是它所在的包名
系統內建了sys模組,自己的模組就不可命名為sys.py,否則將無法匯入系統內建的sys模組
No11:
模組調用
#!/usr/bin/env python3#可以讓這個hello.py檔案直接在Unix/Linux/Mac上運行# -*- coding:utf-8 -*-‘ a test module ‘#任何模組代碼的第一個字串都被視為模組的文檔注釋__author__ = ‘Wang Lei‘import sysimport greetdef test(): args = sys.argv if len(args)==1: print(‘Hello,world‘) elif len(args)==2: print(‘Hello,%s!‘ % args[1]) else: print(‘Too many arguments!‘) if __name__==‘__main__‘: #test() print(greet.greeting(‘wa‘))
#!/usr/bin/env python3# -*- coding:utf-8 -*-‘ a test module ‘__author__ = ‘Wang Lei‘def _private_1(name): return ‘Hello,%s‘ % namedef _private_2(name): return ‘Hi,%s‘ % namedef greeting(name): if len(name)>3: return _private_1(name) else: return _private_2(name)
運行結果
PS D:\wanglei\python> python hello.py
Hi,wa
No12:
安裝常用模組
anaclnda地址:https://www.anaconda.com/download/#windows
【python】函數式編程