1. 程式人生 > >萬惡之源 - Python內置函數一

萬惡之源 - Python內置函數一

位置 動態加載 進行 int 參數說明 inf 失敗 找到 刪除

內置函數

什麽是內置函數?就是python幫我們提供的一個工具,拿過直接用就行,比如我們的print,input,type,id等等.截止到python3.6.2版本

中一共提供了68個內置函數.他們就是python直接提供給我們的,有一些我們已經用過了.有一些還沒有用過.還有一我們需要學完面向對象才能繼續學習.今天我們認識一下python的內置函數

技術分享圖片

作用域相關

  locals() 返回當前作用域中的名字

  globals() 返回全局作用域中的名字

叠代器相關

  range() 生成數據

  next() 叠代器向下執行一次,內部實際使用了__next__()方法返回叠代器的下一個項目

  iter() 獲取叠代器,內部實際使用的是__iter__()方法來獲取叠代器

字符串類型代碼的執行

eval() 執行字符串類型的代碼,並返回最終結果

print(eval(‘2+8‘))
結果:
10

n = 8
print(eval(‘n + 10‘))
結果:
18

exec() 執行字符串類型的代碼 

exec(‘‘‘
for i in range(10):
    print(i)
‘‘‘)

# 我們按照python能夠識別的語法寫代碼,這次寫入的是字符串也可以執行


exec(‘‘‘ 

def func():
    print("444")

func()    

‘‘‘)

結果:
444  

compile() 將字符串類型的代碼變異,代碼對象能夠通過exec語句來執行或者eval()進行求值

‘‘‘
參數說明:

    1.resource  #辦法   要執行的代碼,動態代碼片段
    2.文件名,代碼存放的文件名,當傳入了第一個參數的時候,這個參數給空就可以了
    3.模式,取值有3個
        1.exec 一般放一些流程語句的時候
        2.eval resource只存放一個求值的表達式
        3.single resource存放的代碼有交互的時候.mode應為single
‘‘‘

code = ‘for i in range(10):print(i)‘

c1 = compile(code,‘‘,mode=‘exec‘)
exec(c1)   # 使用exec沒有返回值

code1 = ‘1+2+4‘
c2 =compile(code1,‘‘,mode=‘eval‘)

a = eval(c2) # 使用eval有返回值
print(a)

code = ‘s = input("請輸入內容");print(s)‘

c1 = compile(code,‘‘,mode=‘single‘)

exec(c1)  #使用exec沒有返回值

通過上邊的測試發現,只要是exec就沒有返回值,eval就是有返回值的,compile不怎麽常用  

輸入和輸出相關

  input() 獲取用戶輸入的內容

  print() 打印 輸出

內存相關

  hash() 獲取對象的哈希值(int.str,bool,tuple)

  id() 獲取到對象的內存地址

文件操作相關

  open() 用於打開一個文件,創建一個文件句柄

模塊相關

  __import__() 用於動態加載類和函數

幫助

  help() 函數用於查看函數或模塊用途的詳細說明

調用相關

  callable() 用於檢查一個對象是否是可調用的,如果返回True,object有可能調用失敗,要是返回False,那調用絕對就完犢子

查看內存屬性

  dir() 查看對象的內置屬性,方法,訪問的是對象的__dir__()方法

基礎數據類型相關

數字相關:  

  bool() 將給定的數據轉換成bool值,如果不給值.返回False

  int() 將給定的數據轉換成int值,如果不給值,返回0

 float() 將給定的數據轉換成float值,也就上次小數

  compilex() 創建一個復數,第一個參數為實部,第二個參數為虛部.或者第一個參數直接用字符串來描述復數

進制轉換:

  bin() 將給的參數轉換成二進制

  otc() 將給的參數轉換成八進制

  hex() 將給的參數轉換成十六進制

數字運算:

  abs() 求絕對值

  divmode() 返回商和余數

  round() 四舍五入

  pow(a,b) 求a的b次冪,如果有個三次參數,則求萬次冪後對第三方個數取余

  sum() 求和

  min() 求最小值

  max() 求最大值

數據結構相關

列表和元祖

  list() 將一個可叠代對象轉換成列表

  tuple() 將一個可叠代對象轉換成元祖

  reverse() 將一個序列反轉,返回反轉序列的叠代器

  slice() 列表的切片

a = ‘大家好我是武松‘
s1 = slice(1,8,2)
print(a[s1])

結果:

家我武

字符串相關:

  str() 將數據轉化成字符串

  format() 與具體數相關,用於計算各種小數,精算等

字符串

# 字符串
# print(format(‘meet‘,‘<20‘))   #左對齊
# print(format(‘meet‘,‘>20‘))   #右對齊
# print(format(‘meet‘,‘^20‘))   #居中

結果:
meet                
                meet
        meet        

數值

#數值
print(format(3,‘b‘))    # 二進制
print(format(97,‘c‘))   # 轉換成unicodezif
print(format(11,‘d‘))   #十進制
print(format(56))       #和d一樣
print(format(11,‘n‘))   #十進制
print(format(11,‘o‘))   #八進制

print(format(11,‘x‘))  # 十六進制(小寫字母)
print(format(11,‘X‘))  # 十六進制(大寫字母)

# 浮點數

print(format(1234567890,‘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‘)) # 小數點計數法,保留2位數
print(format(1.23456789e+1000,‘F‘)) # 小數點計數法

bytes() 把字符串轉換成bytes類型

s = ‘你好武大‘

bs = s.encode(‘utf-8‘)
print(bs)

結果:b‘\xe4\xbd\xa0\xe5\xa5\xbd\xe6\xad\xa6\xe5\xa4\xa7‘

s1 = bs.decode(‘utf-8‘)
print(s1)

結果: 你好武大

bs = bytes(s,encoding=‘utf-8‘)
print(bs)

結果: b‘\xe4\xbd\xa0\xe5\xa5\xbd\xe6\xad\xa6\xe5\xa4\xa7‘
把字符串編碼成utf-8

bytearray() 返回一個新字節數組,這個數字裏的元素是可變的,並且每個元素的值的範圍是0~256

ret = bytearray(‘meet‘,encoding=‘utf-8‘)
print(ret)
print(ret[0])

結果:
bytearray(b‘meet‘)
109

momoryview() 查看bytes的內存地址

s = memoryview(‘麻花藤‘.encode(‘utf-8‘))
print(s)

# 結果:
# <memory at 0x000001F332E0E288>

ord() 輸入字符找帶字符編碼的位置

print(ord(‘a‘))
print(ord(‘中‘))
print(ord(‘國‘))

結果:
97
20013
22269

對應的是當前編碼 

chr() 輸入位置數字找出對應的字符

print(chr(97))  # 找到對應位置的字符
print(chr(20013))  # 找到對應位置的字符

# 結果:
a
中

ascii() 是ascii碼中的返回值 不是就返回\u

print(ascii(‘a‘))  判斷字符串在不在ascii碼表中
print(ascii(‘中‘))  

結果:
‘a‘
‘\u4e2d‘     如果不存在就返回\u...

repr() 返回一個對象本質的形式

name = ‘alex‘
print(repr(name))   #返回這個對象本質的表示形式

結果:
‘alex‘

name = ‘我叫%r‘
print(name%‘meet‘)   %r 用的就是repr
結果:
我叫‘meet‘

數據集合

  dict() 創建一個字典

  set() 創建一個集合

  frozenset() 創建一個凍結的集合,凍結的集合不能進行添加和刪除操作

其他相關

  len() 返回一個對象的元素個數

  enumerate() 獲取枚舉對象

lst = [‘alex‘,‘wusir‘,‘taibai‘]

for i,k in enumerate(lst):
    print(‘這是序號‘,i)
    print(‘這是元素‘,k)

all() 可叠代對象中全部是True,結果才是True

lst = [1,2,3,4,True,0,False]
lst1 = [1,2,3,4,True]
print(all(lst))

print(all(lst1))

結果:
False
True

any() 可叠代對象中有一個是True,就是True 

lst = [1,2,3,4,True,0,False]
lst1 = [1,2,3,4,True]
print(any(lst))

print(any(lst1))

結果:
False
True

zip() 函數用於將可叠代的對象作為參數,將對象中對應的元素打包成一個個元祖,

然後返回由這些元祖組成的內容,如果各個叠代器的元素個數不一致,則按照長度最短的返回

lst1 = [1,2,3]
lst2 = [‘a‘,‘b‘,‘c‘,‘d‘]
lst3 = (11,12,13,14,15)

for i in zip(lst1,lst2,lst3):
    print(i)

結果:
(1, ‘a‘, 11)
(2, ‘b‘, 12)
(3, ‘c‘, 13) 

lambda之後講解

sorted() 對可叠代對象進行排序

filter() 過濾 

map() 會根據提供的函數對指定的序列做映射

參看質料

  https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac  

萬惡之源 - Python內置函數一