什麼是內置函數? 就是Python中已經寫好了的函數,可以直接使用 內置函數圖表: 以3.6.2為例 ...
什麼是內置函數?
就是Python中已經寫好了的函數,可以直接使用
內置函數圖表:
以3.6.2為例
內置函數分類:
一、反射相關
1.hasattr()
2.getattr()
3.setattr()
4.delattr()
二、基礎數據類型相關
1.和數字相關
(1)數據類型
a.bool()
把一個值轉換成布爾值
li = ['',[],1,12,0] for i in li: print(bool(i)) # False # False # True # True # False
b.int()
把一個值轉換成整型
num = input('Please input a number:') print(10 + int(num)) # Please input a number:20 # 30
c.float()
把一個整數或數字字元串轉換成帶小數點的數
print(float('123.5'),type(float('123.5'))) #123.5 <class 'float'> print(float(-50.2),type(float(-50.2))) #-50.2 <class 'float'>
d.complex()
返回一個複數
a = 1 + 2j b = 2 print(complex(a)) #(1+2j) print(complex(b)) #(2+0j) print(complex(2,3)) #(2+3j)
(2)進位轉換
a.bin()
將一個數以二進位字元串的方式表示
print(bin(2)) #0b10 print(bin(10)) #0b1010
b.oct()
把一個數轉換成八進位的字元串
print(oct(20),type(oct(20))) #0o24 <class 'str'> print(oct(8),type(oct(8))) #0o10 <class 'str'>
c.hex()
把一個數字轉換成十六進位的字元串
print(hex(10),type(hex(10))) #0xa <class 'str'> print(hex(28),type(hex(28))) #0x1c <class 'str'>
(3)數學運算
a.abs()
對一個數的值取絕對值,結果不改變原值
a = -5 print(abs(a)) #5
b.divmod()
返回一個以商和餘數組成的元祖
print(divmod(10,5),type(divmod(10,5))) #(2, 0) <class 'tuple'> print(divmod(4,9)) #(0, 4)
c.round()
將浮點值四捨五入
import math Pi = math.pi print(round(Pi,4)) #3.1416
d.pow()
一般情況下給函數兩個數可以計算次方,若給定三個數則在冪運算後再取餘
print(pow(2,3)) #8 print(pow(2,0.5)) #1.4142135623730951 print(pow(3,2,2)) #1
e.sum()
print(sum([2,2,3,5,6,2,4])) #24 print(sum([2,2,3,5,6,2,4],10)) #34 這裡只是先讓10進行sum的運算
f.min()
print(min(-1,-2,2,3)) #-2 print(min(-1,-2,2,3,key=abs)) #-1 print(min('aab','aaab','bc',key=len)) #bc
g.max()
print(max(-4,-2,2,3)) #3 print(max(-4,-2,2,3,key=abs)) #-4 print(max('aab','aaab','bc',key=len)) #aaab
2.和數據結構相關
(1)序列
<1>列表和元祖
a.list()
將一個元祖或者字元串轉化成一個列表
print(list('abcdefg')) #['a', 'b', 'c', 'd', 'e', 'f', 'g'] print(list((1,2,'l'))) #[1, 2, 'l']
b.tuple()
將一個列表轉化為元祖
print(tuple([1,2,3,'h','k'])) #(1, 2, 3, 'h', 'k')
<2>相關內置函數
a.reversed()
函數返回一個反轉的迭代器
l = [1,2,3,'h','k',True] l2 = reversed(l) #<list_reverseiterator object at 0x0000000001DD5470> print(l2) #不改變原列表並返回一個迭代器 for i in l2: print(i) # True # k # h # 3 # 2 # 1
b.slice()
l = ['a',1,2,3,4,8,'h','k'] sli = slice(2,7,2) #切片顧頭不顧尾 print(l[sli]) #[2, 4, 'h']
<3>字元串
a.str()
將對象轉化為適合人閱讀的格式
tu = (1,2,'h') dic = {'k1' : 1,'k2' : 2} li = [1,2,3,'h'] i = 123 print(str(tu),type(tu)) #(1, 2, 'h') <class 'tuple'> print(str(dic),type(dic)) #{'k1': 1, 'k2': 2} <class 'dict'> print(str(li),type(li)) #[1, 2, 3, 'h'] <class 'list'> print(str(i),type(i)) #123 <class 'int'>
b.format()
主要用於格式化輸出也可以用於數學方面的研究
value = 'ox123' tu = ('value1','value2','value3') print('get value->{0}'.format(value)) #get value->ox123 print('{0} {1} {2}'.format(*tu)) #value1 value2 value3 '''數字格式化''' a = 12.579 print('{:.2f}'.format(a)) #12.58 保留小數點的後兩位 print('{:+.2f}'.format(a)) #+12.58 帶符號的保留小數點的後兩位 print('{:-.2f}'.format(-a)) #-12.58 帶符號的保留小數點的後兩位 print('{:.0f}'.format(a)) #13 不帶小數返回並對結果四捨五入 print('{:.2%}'.format(a/100)) #12.58% 結果以百分比格式輸出 b = 1001 print('{:0>8d}'.format(b)) #00001001 數字補0(填充左邊寬度為8) print('{:*>8d}'.format(b)) #****1001 數字補*(填充左邊寬度為8) print('{:*<8d}'.format(b)) #1001**** 數字補*(填充右邊寬度為8) c = 10**10 print('{:,}'.format(c)) #10,000,000,000 結果以逗號的形式分隔 print('{:.2e}'.format(c)) #1.00e+10 結果以指數標準格式輸出 d = 7 print('{:>5d}'.format(d)) # 7 向右對齊 print('{:<5d}'.format(d)) #7 向左對齊 print('{:^5d}'.format(d)) # 7 中間對齊 e = 15 print('{:b}'.format(e)) #1111 返回二進位 print('{:d}'.format(e)) #15 返回十進位 print('{:o}'.format(e)) #17 返回八進位 print('{:x}'.format(e)) #f 返回十六進位 print('{:#x}'.format(e)) #0xf 返回帶格式輸出的十六進位小寫 print('{:#X}'.format(e)) #0XF 返回帶格式輸出的十六進位大寫
c.bytes()
主要用在網路編程、照片和視頻、爬取網頁等二進位文件的時候
print(bytes('Python爬蟲',encoding='utf-8')) #b'Python\xe7\x88\xac\xe8\x99\xab'
d.bytearray()
返回一個bytes數組
b = bytes('Python爬蟲',encoding='utf-8') #b'Python\xe7\x88\xac\xe8\x99\xab' print(bytearray(b)) #bytearray(b'Python\xe7\x88\xac\xe8\x99\xab')
e.memoryview()
在一個緩衝區中查看一個對象,返回值為一個元祖
v = memoryview(bytearray('abcdef','utf-8')) print(v[2]) #99 print(v[-1]) #102 print(v[1:5:2]) #<memory at 0x00000000024DE288> print(v[1:5:2].tobytes()) #b'bd'
f.ord()
以一個字元作為參數返回一個unicode值或者ascii值,返回值為一個對應的十進位整數
print(ord('a')) #97 print(ord('A')) #65 print(ord('az')) #TypeError 超過給定長度報錯
g.chr()
以一個十進位或十六進位的整數作為參數,數字範圍為0-1114111(16進位為0x10FFFF),返回值為對應的ASCII字元
print(chr(65)) #A print(chr(97)) #a print(chr(0x35)) #5
h.ascii()
返回一個ascii字元,如果找不到這個ascii字元則通過repr()使用\x,\u或\U編碼的字元
print(ascii(10)) #10 print(ascii('a')) #'a' print(ascii('中')) #'\u4e2d'
i.repr()
將對象轉化為供解釋器讀取的形式,返回一個string的格式
name = 'jane' print('hello %r'%name) #hello 'jane' print(repr('1')) #'1' print(repr(1)) #1
(2)數據集合
<1>字典
a.dict()
''' dict(mapping) -> new dictionary initialized from a mapping object's | (key, value) pairs | dict(iterable) -> new dictionary initialized as if via: | d = {} | for k, v in iterable: | d[k] = v | dict(**kwargs) -> new dictionary initialized with the name=value pairs | in the keyword argument list. For example: dict(one=1, two=2) '''
mapping為元素容器、iterable為可迭代的對象、**kwargs為關鍵字
這裡的主要語法:
'''映射函數創建字典''' dict1 = dict(zip(['key1','key2','key3','key4'],[1,2,3])) #{'key1': 1, 'key2': 2, 'key3': 3} print(dict1) '''關鍵字創建字典''' dict2 = dict(a = 1,b = 'b',c = None) print(dict2) #{'a': 1, 'b': 'b', 'c': None} '''可迭代創建字典''' dict3 = dict([('a',1),('b',None),('c','')]) print(dict3) #{'a': 1, 'b': None, 'c': ''}
<1>集合
a.set()
創建一個無序不重覆的元素集合,這裡的參數必須是可迭代對象
set1 = set([1,2,2,3,'a','a','b']) print(set1) #{1, 2, 3, 'a', 'b'}
b.frozenset()
返回一個凍結的集合,之後不能進行添加或修改任何元素
set1 = {1,2,3,'a'} set1 = frozenset(set1) print(set1,type(set1)) #frozenset({1, 2, 3, 'a'}) <class 'frozenset'> set1[0] = 'b' #TypeError: 'frozenset' object does not support item assignment
(3)相關內置函數
a.len()
返回該對象的長度
print(len('123')) #3 print(len([1,2,3,4,5,6])) #6
b.enumerate()
語法:
enumerate(sequence, [start=0])
sequence:必須是一個序列、迭代器或者其他支持迭代的對象
start:下標開始位置
names = ['Jane','Mike','Byes','Suke'] iterator = enumerate(names) #<enumerate object at 0x0000000001E9CA68> 獲得一個關於枚舉的迭代器 for i in iterator: print(i) # (0, 'Jane') # (1, 'Mike') # (2, 'Byes') # (3, 'Suke') iterator2 = enumerate(names) print(list(iterator2)) #[(0, 'Jane'), (1, 'Mike'), (2, 'Byes'), (3, 'Suke')] print(list(enumerate(names,start=5))) #[(5, 'Jane'), (6, 'Mike'), (7, 'Byes'), (8, 'Suke')]
和for迴圈相關:
for i,e in enumerate(range(4),2): print('i = {0},e = {1}'.format(i,e)) # i = 2,e = 0 # i = 3,e = 1 # i = 4,e = 2 # i = 5,e = 3
c.all()
如果給定一個可迭代對象中的元素都為True,則返回True,否則返回False
print(all([1,2,0])) #False print(all([1,2,False])) #False print(all([1,2,None])) #False print(all([1,2,()])) #False print(all([1,2,set()])) #False print(all([1,2,{}])) #False print(all([1,2,''])) #False print(all([1,2,2])) #True print(all([])) #True print(all({})) #True
d.any()
如果給定一個可迭代對象中的元素都為False,則返回False,否則返回True
print(any([1,2,0])) #True print(any([1,2,False])) #True print(any([1,2,None])) #True print(any([1,2,()])) #True print(any([1,2,set()])) #True print(any([1,2,{}])) #True print(any([1,2,''])) #True print(any(['',None,()])) #False print(any([])) #False print(any({})) #False
e.zip()
l1 = ['key1','key2','key3'] l2 = [1,2,3,4] zipped = zip(l1,l2) print(zipped) #<zip object at 0x00000000024EA7C8> print(dict(zipped)) #{'key1': 1, 'key2': 2, 'key3': 3}
l1 = ['key1','key2','key3'] for i in zip(*l1): print(i) # ('k', 'k', 'k') # ('e', 'e', 'e') # ('y', 'y', 'y') # ('1', '2', '3')
f.filter()
用於過濾序列,過濾掉不合格的元素,返回一個迭代器,不改變原來的值
語法:filter(function,iterable) function:篩選函數 iterable:可迭代的對象
def is_even(x): return x % 2 == 0 fiterator = filter(is_even,[1,2,2,3,4,5,6,7]) print(fiterator) #<filter object at 0x00000000006722E8> print(list(fiterator)) #[2, 2, 4, 6]
篩選含有字元串的元素:
def is_str(s): if type(s) == str and str(s).strip(): return True ret = filter(is_str,['h',1,'',None,2,'k','l']) print(list(ret)) ##['h', 'k', 'l']
g.map()
會根據提供的函數對指定序列做映射
執行前後元素個數不變,值可能發生改變
返回值是一個迭代器
l = [-2,-1,2,0] ret = map(abs,l) print(ret) #<map object at 0x0000000001DA2F60> print(list(ret)) #[2, 1, 2, 0]
h.sorted()
語法:sorted(iterable,key=None,reverse=False)
iterable:是一個可迭代對象
key:用於比較的元素
reverse:排序規則,reverse=False 升序(預設),反之降序
l = [-2,-2,1,6,-5,-2,4,3] print(sorted(l)) #[-5, -2, -2, -2, 1, 3, 4, 6] 升序排列 print(sorted(l,reverse=True)) #[6, 4, 3, 1, -2, -2, -2, -5] 降序排列 print(sorted(l,key=abs)) #[1, -2, -2, -2, 3, 4, -5, 6]
三、作用域相關
1.locals()
找到當前作用域下所有的變數對應關係,並以字典返回
2.globals()
找到全局作用域下所有的變數對應關係,並以字典返回
a = 1 b = 'hello' def func(): c = 3 print(locals()) #{'c': 3} print(globals()) #{'__name__': '__main__', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x002A5910>, # 'func': <function func at 0x00527CD8>, '__file__': 'C:/Users/Administrator/PycharmProjects/PYL/生成器/1.py', # '__spec__': None, '__cached__': None, 'a': 1, '__builtins__': <module 'builtins' (built-in)>, 'b': 'hello', # '__doc__': None, '__package__': None} func()
四、面向對象相關
1.定義特殊方法的裝飾器
a.classmethod()
b.property()
c.staticmethod()
2.判斷對象/類與類之間的關係
a.isinstance()
b.issubclass()
3.所有類的基類
a.object()
4.繼承相關