1. 內置函數 什麼是內置函數? 就是python給你提供的,拿來直接⽤的函數,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68個內置函數。他們就是python直接提供給我們的,有 ⼀些我們已經⽤過了,有⼀些還沒有⽤過,還有⼀些需要學完了⾯向對象才能繼續學 ...
1. 內置函數
什麼是內置函數? 就是python給你提供的,拿來直接⽤的函數,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68個內置函數。他們就是python直接提供給我們的,有 ⼀些我們已經⽤過了,有⼀些還沒有⽤過,還有⼀些需要學完了⾯向對象才能繼續學習的,今天我們就認識⼀下python的內置函數。 作⽤域相關:locals():返回當前作⽤域中的名字 globals():返回全局作⽤域中的名字迭代器相關:
range():⽣成數據 next():迭代器向下執⾏⼀次, 內部實際使⽤了__next__()⽅法返回迭代器的下⼀個項⽬ iter():獲取迭代器, 內部實際使⽤的是__iter__()⽅法來獲取迭代器字元串類型代碼的執⾏:
eval():執⾏字元串類型的代碼. 並返回最終結果
print(eval("2+2")) # 4 n = 8 print(eval("2+n")) # 10 def func(): print(666) eval("func()") # 666
exec():執⾏字元串類型的代碼
exec(""" for i in range(10): print(i) """) exec(""" def func(): print("我是周傑倫") func() """)
compile():將字元串類型的代碼變異,代碼對象能夠通過exec語句來執⾏或者eval()進⾏求值
''' 參數說明: 1. resource 要執⾏的代碼, 動態代碼⽚段 2. ⽂件名, 代碼存放的⽂件名, 當傳⼊了第⼀個參數的時候, 這個參數給空就可以了 3. 模式, 取值有3個, 1. exec: ⼀般放⼀些流程語句的時候 2. eval: resource只存放⼀個求值表達式. 3. single: resource存放的代碼有交互的時候. mode應為single ''' code1 = "for i in range(10): print(i)" c1 = compile(code1, "", mode="exec") exec(c1)有返回值的字元串形式的代碼⽤eval(),沒有返回值的字元串形式的代碼⽤exec(),⼀般很少⽤到compile()。 輸入和輸出相關:
code2 = "1+2+3" c2 = compile(code2, "", mode="eval") a = eval(c2) print(a)
code3 = "name = input('請輸⼊你的名字:')" c3 = compile(code3, "", mode="single") exec(c3) print(name)
input():獲取⽤戶輸入的內容 print():列印輸出記憶體相關:
hash():獲取到對象的哈希值(int, str, bool, tuple) id():獲取到對象的記憶體地址⽂件操作相關:
open():⽤於⼝打開⼀個⽂件,創建⼀個⽂件句柄模塊相關:
__import__():⽤於動態載入類和函數幫助:
help():函數⽤於查看函數或模塊⽤途的詳細說明調⽤相關:
callable():⽤於檢查⼀個對象是否是可調⽤的,如果返回True,object有可能調⽤失敗,但如果返回False,那調⽤絕對不會成功查看內置屬性:
dir():查看對象的內置屬性,⽅法,訪問的是對象中的__dir__()⽅法基礎數據類型相關: 數字相關:
bool():將給定的數據轉換成bool值,如果不給值,返回False int():將給定的數據轉換成int值,如果不給值, 返回0 flfloat():將給定的數據轉換成flfloat值,也就是⼩數 complex():創建⼀個複數,第⼀個參數為實部,第⼆個參數為虛部,或者第⼀個參數直接⽤字元串來描述複數進位轉換:
bin():將給的參數轉換成⼆進位 otc():將給的參數轉換成八進位 hex():將給的參數轉換成⼗六進位數學運算:
abs():返回絕對值 divmode():返回商和餘數 round():四捨五入 pow(a, b):求a的b次冪,如果有三個參數,則求完次冪後對第三個數取餘 sum():求和 min():求最⼩值 max():求最⼤值和數據結構相關: 列表和元組:
list():將⼀個可迭代對象轉換成列表 tuple():將⼀個可迭代對象轉換成元組 reversed():將⼀個序列翻轉, 返回翻轉序列的迭代器 slice():列表的切片
st = "⼤家好, 我是麻花藤" s = slice(1, 5, 2) print(st[s])字元串相關:
str():將數據轉化成字元串
format():與具體數據相關, ⽤於計算各種⼩數, 精算等
# 字元串 print(format('test', '<20')) # 左對⻬ print(format('test', '>20')) # 右對⻬ print(format('test', '^20')) # 居中 # 數值 print(format(3, 'b')) # ⼆進位 print(format(97, 'c')) # 轉換成unicode字元 print(format(11, 'd')) # ⼗進位 print(format(11, 'o')) # ⼋進位 print(format(11, 'x')) # ⼗六進位(⼩寫字⺟) print(format(11, 'X')) # ⼗六進位(⼤寫字⺟) print(format(11, 'n')) # 和d⼀樣 print(format(11)) # 和d⼀樣 # 浮點數 print(format(123456789, 'e')) # 科學計數法. 預設保留6位⼩數 print(format(123456789, '0.2e')) # 科學計數法. 保留2位⼩數(⼩寫) print(format(123456789, '0.2E')) # 科學計數法. 保留2位⼩數(⼤寫) print(format(1.23456789, 'f')) # ⼩數點計數法. 保留6位⼩數 print(format(1.23456789, '0.2f')) # ⼩數點計數法. 保留2位⼩數 print(format(1.23456789, '0.10f')) # ⼩數點計數法. 保留10位⼩數 print(format(1.23456789e+10000, 'F')) # ⼩數點計數法.
bytes():把字元串轉化成bytes類型
s = "你好" bs = s.encode("UTF-8") print(bs) s1 = bs.decode("UTF-8") print(s1) bs = bytes(s, encoding="utf-8") # 把字元串編碼成UTF-8 print(bs)
bytearray():返回⼀個新位元組數組。這個數字⾥的元素是可變的,並且每個元素的值得範圍是[0,256)
ret = bytearray('alex',encoding='utf-8') print(ret[0]) print(ret)
memoryview():查看bytes在記憶體中的情況
# 查看bytes位元組在記憶體中的情況 s = memoryview("麻花藤".encode("utf-8")) print(s)
ord():輸入字元找帶字元編碼的位置 chr():輸入位置數字找出對應的字元 ascii():是ascii碼中的返回該值 不是就返回\u...
# 找到對應字元的編碼位置 print(ord('a')) print(ord('中')) # 找到對應編碼位置的字元 print(chr(97)) print(chr(20013)) # 在ascii中就返回這個值. 如果不在就返回\u... print(ascii('a')) print(ascii('好'))
repr():返回⼀個對象的string形式
# repr 就是原封不動的輸出, 引號和轉義字元都不起作⽤ print(repr('⼤家好,\n \t我叫周傑倫')) print('⼤家好我叫周傑倫')數據集合:
# %r 原封不動的寫出來 name = 'taibai' print('我叫%r' % name)
dict():創建⼀個字典 set():創建⼀個集合 frozenset():創建⼀個凍結的集合,凍結的集合不能進⾏添加和刪除操作其他相關:
len():返回⼀個對象中的元素的個數 sorted():對可迭代對象進⾏排序操作(講完lamda後再講這個) enumerate():獲取集合的枚舉對象
lst = ["alex", "wusir", "taibai"] for index, el in enumerate(lst): print(str(index)+"==>"+el)
all():可迭代對象中全部是True,結果才是True any():可迭代對象中有⼀個是True,結果就是True
print(all([1,2,True,0])) print(any([1,'',0]))
zip():函數⽤於將可迭代的對象作為參數,將對象中對應的元素打包成⼀個個元組,然後返回由這些元組組成的開了表,如果各個迭代器的元素個數不⼀致,則返回列表⻓度與最短的對象相同
l1 = [1,2,3,] l2 = ['a','b','c',5] l3 = ('*','**',(1,2,3)) for i in zip(l1,l2,l3): print(i)
fifilter():過濾(講完lamda) map():會根據提供的函數對指定序列做映射(lamda)