day 12 內建函式,裝飾器,遞迴函式
內建函式
內建函式:python給咱們提供了一些他認為你會經常用到的函式,68種
內建函式 | ||||
abs() | dict() | help() | min() | setattr() |
all() | dir() | hex() | next() | slice() |
any() | divmod() | id() | object() | sorted() |
ascii() | enumerate() | input() | oct() | staticmethod() |
bin() | eval() | int() | open() | str() |
bool() | exec() | isinstance() | ord() | sum() |
bytearray() | filter() | issubclass() | pow() | super() |
bytes() | float() | iter() | print() | tuple() |
callable() | format() | len() | property() | type() |
chr() | frozenset() | list() | range() | vars() |
classmethod() | getattr() | locals() | repr() | zip() |
compile() | globals() | map() | reversed() | __import__() |
complex() | hasattr() | max() | round() | |
delattr() | hash() | memoryview() | set() |
1.1作用域相關
locals :函式會以字典的型別返回當前位置的全部區域性變數。
globals:函式以字典的型別返回全部全域性變數。
程式碼示例1.2其他相關
1.2.1 字串型別程式碼的執行 eval,exec,complie
eval:執行字串型別的程式碼,並返回最終結果。
View Codeexec:執行字串型別的程式碼。
View Codecompile:將字串型別的程式碼編譯。程式碼物件能夠通過exec語句來執行或者eval()進行求值。
View Code有返回值的字串形式的程式碼用eval,沒有返回值的字串形式的程式碼用exec,一般不用compile。
1.2.2 輸入輸出相關 input,print
input:函式接受一個標準輸入資料,返回為 string 型別。
print:列印輸出。
View Code1.2.3記憶體相關 hash id
hash:獲取一個物件(可雜湊物件:int,str,Bool,tuple)的雜湊值。
View Codeid:用於獲取物件的記憶體地址。
View Code1.2.3檔案操作相關
open:函式用於開啟一個檔案,建立一個 file 物件,相關的方法才可以呼叫它進行讀寫。
1.2.4模組相關__import__
__import__:函式用於動態載入類和函式 。
1.2.5幫助
help:函式用於檢視函式或模組用途的詳細說明。
View Code1.2.6呼叫相關
callable:函式用於檢查一個物件是否是可呼叫的。如果返回True,object仍然可能呼叫失敗;但如果返回False,呼叫物件ojbect絕對不會成功。
View Code1.2.7檢視內建屬性
dir:函式不帶引數時,返回當前範圍內的變數、方法和定義的型別列表;帶引數時,返回引數的屬性、方法列表。如果引數包含方法__dir__(),該方法將被呼叫。如果引數不包含__dir__(),該方法將最大限度地收集引數資訊。
View Code1.3 迭代器生成器相關
range:函式可建立一個整數物件,一般用在 for 迴圈中。
next:內部實際使用了__next__方法,返回迭代器的下一個專案。
View Codeiter:函式用來生成迭代器(講一個可迭代物件,生成迭代器)。
View Code1.4 基礎資料型別相關
1.4.1數字相關(14)
資料型別(4):
bool :用於將給定引數轉換為布林型別,如果沒有引數,返回 False。
int:函式用於將一個字串或數字轉換為整型。
View Codefloat:函式用於將整數和字串轉換成浮點數。
complex:函式用於建立一個值為 real + imag * j 的複數或者轉化一個字串或數為複數。如果第一個引數為字串,則不需要指定第二個引數。。
View Code
進位制轉換(3):
bin:將十進位制轉換成二進位制並返回。
oct:將十進位制轉化成八進位制字串並返回。
hex:將十進位制轉化成十六進位制字串並返回。
View Code
數學運算(7):
abs:函式返回數字的絕對值。
divmod:計算除數與被除數的結果,返回一個包含商和餘數的元組(a // b, a % b)。
round:保留浮點數的小數位數,預設保留整數。
pow:求x**y次冪。(三個引數為x**y的結果對z取餘)
View Codesum:對可迭代物件進行求和計算(可設定初始值)。
min:返回可迭代物件的最小值(可加key,key為函式名,通過函式的規則,返回最小值)。
max:返回可迭代物件的最大值(可加key,key為函式名,通過函式的規則,返回最大值)。
View Code1.4.2和資料結構相關(24)
列表和元祖(2)
list:將一個可迭代物件轉化成列表(如果是字典,預設將key作為列表的元素)。
tuple:將一個可迭代物件轉化成元祖(如果是字典,預設將key作為元祖的元素)。
View Code相關內建函式(2)
reversed:將一個序列翻轉,並返回此翻轉序列的迭代器。
slice:構造一個切片物件,用於列表的切片。
View Code字串相關(9)
str:將資料轉化成字串。
format:與具體資料相關,用於計算各種小數,精算等。
View Codebytes:用於不同編碼之間的轉化。
View Codebytearry:返回一個新位元組陣列。這個數組裡的元素是可變的,並且每個元素的值範圍: 0 <= x < 256。
View Codememoryview
View Codeord:輸入字元找該字元編碼的位置
chr:輸入位置數字找出其對應的字元
ascii:是ascii碼中的返回該值,不是就返回/u...
View Coderepr:返回一個物件的string形式(原形畢露)。
View Code資料集合(3)
dict:建立一個字典。
set:建立一個集合。
frozenset:返回一個凍結的集合,凍結後集合不能再新增或刪除任何元素。
相關內建函式(8)
len:返回一個物件中元素的個數。
sorted:對所有可迭代的物件進行排序操作。
View Code
enumerate:列舉,返回一個列舉物件。
View Codeall:可迭代物件中,全都是True才是True
any:可迭代物件中,有一個True 就是True
View Codezip:函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同。
View Codefilter:過濾·。
View Codemap:會根據提供的函式對指定序列做對映。
View Code裝飾器
裝飾器: 裝飾器的本質是閉包,而且裝飾器其實就是一個函式
裝飾器:在不改變原函式呼叫方式上,給原函式增加一些額外的功能。登入驗證,寫日誌,執行效率等時候使用
開放封閉原則:
對外擴充套件開放
為什麼要對擴充套件開放呢?
我們說,任何一個程式,不可能在設計之初就已經想好了所有的功能並且未來不做任何更新和修改。所以我們必須允許程式碼擴充套件、新增新功能。
對內修改封閉 (不允許修改函式)
就像我們剛剛提到的,因為我們寫的一個函式,很有可能已經交付給其他人使用了,如果這個時候我們對其進行了修改,很有可能影響其他已經在使用該函式的使用者
裝飾器完美的遵循了這個開放封閉原則。
遞迴函式