內置函數
現在python一共為我們提供了68個內置函數,講述過程:
一、其他中的12個
(一)執行 字符串 類型代碼的執行
1 eval執行有意義的字符串 ,有返回值
print(eval('1+2'))print(eval("print('美麗')")) #美麗
2 exec執行 有意義 的字符串,簡單的 流程控制 ,沒有返回值
exec('for i in range(5):print(i)') #0,1,2,3,4
注釋:
# exec和eval都可以執行 字符串類型的代碼
# eval有返回值 —— 有結果的簡單計算
# exec沒有返回值 —— 簡單流程控制
# eval只能用在你明確知道你要執行的代碼是什么
3 compile字符串執行 :編譯
ret='for i in range(5):print(i)' c=compile(ret,'','exec') #用exec執行,有返回值 exec(c)
ret='1+2+3+4'
c=compile(ret,'','eval') #''引號原本的功能是放
print(eval(c)) # 用eval執行,沒有返回值,所以需要打印
(二)輸入輸出
1 input
input('提示:')
2 print()
l='a' print(l) #a print(l,end='%%') # a%% end是print中默認的以換行做結尾,這里可以改為%%結尾 print(l,end='%%') #a%%a%% print(l,2,3,5,6,sep='%%') #a%%2%%3%%5%%6 sep是print中元素之間默認用空格隔開,這里可以改成%% print(l,2,3,5,6) #a 2 3 5 6 f=open('上課',mode='w',encoding='utf-8') #打開文件夾,之后通過句柄操作文件 l='mmmm' print(l,file=f) #print中file默認在控制臺打印,可以把file=f文件句柄,改成在文件中打印 f.close()
(三)內存相關
1 hash() #在程序的一次執行中,hash值只有一個,但是再次執行時,hash值就會改變
print(hash((0,2,3))) #-19文件執行的操作43780824
2 id()就是內存地址
print(id(1))
(四)文件操作相關(1)
1 open
f=open('上課') print(f.writable()) #False print(f.readable()) #True print(f.readline()) #把上課文件中的內容讀出來了:mmmm
(五)調用相關
1 callable 判斷是否可以被調用
print(callable(a)) #Flase print(callable(print)) #True print(callable(globals)) #globals 加上s
(六)模塊相關
1 import import time print(time.time()) #1515230362.92395 等同于以下例子 t=__import__('time') print(t.time()) #1515230362.92395
# 某個方法屬于某個數據類型的變量,就用.調用
# 如果某個方法不依賴于任何數據類型,就直接調用 —— 內置函數 和 自定義函數
(七)幫助
1 help 查看方法運用
# help(str)
(八)查看內置屬性
1 dir 查看變量的方法
print(dir([1,2]))
二、 基礎數據類型相關 38個
(一)和數據結構相關(24)
?1.1和數字相關
1 數據類型
bool int 整形 float # 浮點數(有限循環小數,無限循環小數) != 小數 :有限循環小數,無限循環小數,無限不循環小數 complex 復數,不能比較大小 實部+虛部 兩個部分都是浮點數 1+2j 4+5j
2 進制轉換
bin 二進制 print(bin(2)) #0b10 oct 八進制 print(oct(2)) #0o2 hex 十六進制 print(hex(2)) #0x2
3 數學運算
abs 取絕對值print(abs(-1))divmod 除余 print(divmod(9,6)) #(1, 3) 商1 余3 round 小數精確 print(round(2,445)) #2 print(round(2,56)) #2 sum 求和 q求和對象是可迭代的 sum(iterable,start) start開始加的值 錯誤寫法 print(sum(1,2)) print(sum([1,2,3,4])) #10 print(sum([1,2,3,4],10)) # 第一個數從10 開始加 min 求最小值 print(min(2,5,6,8)) #2 print(min(2,5,6,8,-0.5,key=abs)) #-0.5 max print(max(2,5,6,8,-1,-8,key=abs)) #8 pow 求冪運算pow(x,y,z) print(pow(2,3)) 2的3次方 print(pow(2,3,3)) #冪運算之后再取余2
(三)列表和元組 可以強轉
t=(1,2,3,4) print(list(t)) #[1, 2, 3, 4] print(tuple(t) #再轉回元組(1, 2, 3, 4)
?
1.2相關內置函數
1. reversed 反轉
reverse 反轉 l=[1,3,6,4] l.reverse() #反轉l print(l)
reversed 保留原列表,得到一個反向迭代器 l2=reversed(l) #生成器 print(l2) #<list_reverseiterator object at 0x018539D0> for i in l2:print(i) #4,6,3,1
?
2 slice 切片
t = (1,2,23,213,5612,342,43) t1=slice(0,5,2) print(t1) #slice(0, 5, 2) 切片 print(t[t1]) # (1, 23, 5612) 把l從索引0到5開始切片按照每隔2個值切片 化簡: print(t[slice(0,5,2)]) # (1, 23, 5612)
1.3字符串
3 format #格式化輸出
print('今天很{},我很{},是個{}'.format('美好','美麗','美女')) print(format('美麗','>20')) #把字符串以20個長度為標準,左靠齊 print(format('美麗','<20')) #把字符串以20個長度為標準,右靠齊 print(format('美麗','^20')) #把字符串以20個長度為標準,居中
4 bytes
需求把gbk編碼的轉換為utf-8,python是unicode編碼,需要先把'你好'轉為gbk 形式 print(bytes('美麗',encoding='GBK')) #等價于==print('美麗'.encode('gbk')) # #b'\xc4\xe3\xba\xc3'把unicode轉換為gbk的bytes類型 print((bytes('美麗',encoding='gbk')).decode('gbk').encode('utf-8')) #轉換成功 注釋:
網頁編程是二進制存儲 照片視頻也是二進制 html網頁爬取也是二進制
?
5.bytearray bytearray(s,encoding='utf-8') 轉換編碼,特點是可以根據字節碼改內容,但是你要提前 知道要改內容的號碼
b_bytes=bytearray('你好',encoding='utf-8') print(b_bytes) #'\xe4\xbd\xa0\xe5\xa5\xbd') print(b_bytes[0]) #228 print(b_bytes[1]) #189
?
6.memoryview 視覺展示,只是給我們看,不占用內存,但是要調用是時候還是會占用內存,用處比較少
memoryview(bytes('hello,eva',encoding='utf-8')
?
?7.ord字符按照unicode轉數字
print(ord('你')) #20320 print(ord('1')) #49 print(ord('A')) #65 print(ord('?')) #10084
?
8、chr數字按照unicode轉字符, 但是從65(A的數字對應65)開始才能轉換
print(chr(97)) #a print(chr(98)) # print(chr(65)) #A
?
9、ascii 字符在ascii碼中的內容就打印出來,不是就轉換成\u
print(ascii('你') #'\u4f60' print(ascii('A') ) #'A'
?
10、repr 用于%r格式化輸出 ,不同于print的是:會將打印內容的數據類型也一起打印出來
name='egg' print('你好%s'%name) #你好egg print('你好%r'%name) #你好'egg' print(repr('1')) #'1' print('1') #1 print(repr(1)) #1
?
1.4字符串
11.dict
12、set、
13、frozenset
14、len
15、enumerate枚舉
dic={'a':'b','c':'d'} for k,i in enumerate(dic,1):print(k,i)
?
1.5相關內置函數(8)
16、all 判斷是否有bool值是Flase的值,---一假均假---用中括號寫進要判斷的值,
print(all([' ','ni','你'])) #True
print(all(['','ni','你'])) #Flase
特殊情況 : print(all([])) #Ture
print(all([''])) #Flase
?
?17、any 判斷bool值是否有True的值-----一真均真
print(any([' ','ni','你'])) #True print(any(['','ni','你'])) #True print(all([''])) #Flase
?
?18、zip 返回一個迭代器,拉鏈功能
?
a=['a','b'] #列表 b=['c','d'] ret=zip(a,b) for i in ret: #('a', 'c')('b', 'd')print(i)
a={'a','b'} #字典 b={'c','d'} ret=zip(a,b) for i in ret:print(i) ##('a', 'c')('b', 'd')和上面效果一樣 #簡化: a=['a','b'] b=['c','d'] c=['e','f'] for i in zip(a,b,c): #('a', 'c', 'e')('b', 'd', 'f')print(i) #字典、列表、元祖混用拉鏈 a=['a','b','g'] #不是一一對應的話,自動去除多余的 b={'c','d']} #dict list tuple 都可以用zip 來拉鏈 c=('e','f']) for i in zip(a,b,c): #('a', 'c', 'e')('b', 'd', 'f')print(i)
?
19、filter filter()函數接收一個函數 f 和一個list,這個函數 f 的作用是對每個元素進行判斷,返回 True或 False,
filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。
?
def f(x):return x%2==0 g=filter(f,[1,3,5,6,7,8]) #filter 得到是一個迭代器 for i in g:print(i) #6 8 filter過濾的功能
def a(z):return z%2==1 #函數返回值為Ture,則放到新的迭代器中 ret=filter(a,[1,2,3,4,5,6]) #函數名不加括號,因為前面filter要來調用函數名,得到的ret是一個迭代器 for i in ret: #不調用不打印print(i) 功能解析:把可迭代的值傳給某個函數,函數來執行
def a(z):return z%2==0 ret=filter(a,[1,2,3,4,5,6]) for i in ret:print(i) 上面那個filter方法等于這個列表推導式的功能 c=[i for i in [1,2,3,4,5,6] if i%2==1] for i in c:print(i)
取出0到100中能夠開方的整數 from math import sqrt def num(s):if sqrt(s)%1==0:return True ret=filter(num,range(0,101)) for i in ret:print(i)
?
20、map
Python中的map函數應用于每一個可迭代的項,返回的是一個結果list。如果有其他的可迭代參數傳進來,
map函數則會把每一個參數都以相應的處理函數進行迭代處理。map()函數接收兩個參數,一個是函數,一個是序列,
map將傳入的函數依次作用到序列的每個元素,并把結果作為新的list返回。
?
#例題L = [1, 2, 3, 4, 5, 6, 7, 8]def l(a): return a**2g=map(l,L) #map后得到的也是迭代器print(list(g)) #[1, 4, 9, 16, 25, 36, 49, 64]
或者用for
for i in g: print(i)
?
注釋:
# 結論:filter()之后元素個數會發生改變,map()之后元素個數不會改變
# #filter只管篩選,不會改變原來的值 map值會改變
21、sorted 排序,有key,默認Flse 從小到大排序 reverse=True 從大到小排序
iterable:是可迭代類型;
key:傳入一個函數名,函數的參數是可迭代類型中的每一項,根據函數的返回值大小排序;
reverse:排序規則.reverse = True降序或者reverse = False升序,有默認值。
返回值:有序列表:
例 l=[2,1,5,7,-10] print(sorted(l,key=abs,reverse=True)) #[-10, 7, 5, 2, 1] 等同于sort l=[2,1,5,7,-10] l.sort(key=abs,reverse=True) print(l) #[-10, 7, 5, 2, 1] sort使用方法 l=[2,1,5,7,-10] l.sort() print(l) #[-10, 1, 2, 5, 7]
?
?三、匿名函數
?匿名函數:為了解決那些功能很簡單的需求而設計的一句話函數
#這段代碼 def calc(n):return n**n print(calc(10))#換成匿名函數 calc = lambda n:n**n print(calc(10))
?
?
?
?
?
?