1. 程式人生 > >python基礎---內置函數

python基礎---內置函數

python基礎 內置函數


內置函數

1、內置函數(工廠函數)

內置函數id()可以返回一個對象的身份,返回值為整數。這個整數通常對應與該對象在內存中的位置,但這與python的具體實現有關,不應該作為對身份的定義,即不夠精準,最精準的還是以內存地址為準。

is運算符用於比較兩個對象的身份

等號比較兩個對象的值

內置函數type()則返回一個對象的類型

常用內置函數:

abs() 取絕對值

print(abs(-1))
 
輸出:
1


all() 傳入一個可叠代對象,如果對象中的值都能取出返回True,否則返回False

print(all([1,2,‘a‘,None]))
print(all([])) 
輸出:
False
True


any() 傳入一個可叠代對象,如果對象中有至少一個值能取出來,返回True,否則返回Falsebool值為假的情況:None,空,0Flase

print(any([‘ ‘,None,False])) #True
print(any([‘‘,None,False])) #False
print(any([‘‘,None,False,1])) #True


bin() 二進制

oct() 八進制

hex() 十六進制

print(bin(10))
print(oct(10))
print(hex(10)) 
輸出:
0b1010
0o12
0xa


bytes() 把傳入對象轉為

bytes類型

unicode -----> encode -----> bytes

print(bytes(‘hello‘,encoding=‘utf-8‘))
 
輸出:
b‘hello‘


callable() 檢測傳入對象能否被執行(加括號執行),結果返回布爾值

print(callable(bytes))
print(callable(abs)) 
輸出:
True
True

chr() 對應ASCII編碼,根據十進制數字取出對應的字符

ord() 對應ASCII編碼,根據字符取出對應的十進制數字

print(chr(65)) #在ascii編碼中,65-90對應字母A-Z
print(chr(90))

print(ord(‘#‘)) 
輸出:
A
Z
35

面向對象中的重點內置函數

classmethod()

staticmethod()

property()


delattr()

hasattr()

setattr()

getattr()

數據類型都是內置函數

int() 整型數字

complex() 復數

float() 浮點數

str() 字符串

dict() 字典

list() 列表

tuple() 元組

set() 可變集合

forzenset() 不可變集合(集合裏的值固定不變)

dir() 查看模塊下能夠調取的屬性方法

import sys
# sys.path     #sys模塊下的屬性方法
# sys.argv
print(dir(sys)) 
輸出:
[‘__displayhook__‘, ‘__doc__‘, ‘__excepthook__‘ ......]  #sys模塊下方法

divmod() 傳入兩個參數,兩數相除,返回商和余數(適用於計算分頁數量)

print(divmod(10,3))
print(divmod(102,20)) 
輸出:
(3, 1)
(5, 2)

enumerate() 取出傳入的列表中的元素和索引

l=[‘a‘,‘b‘,‘c‘]
res=enumerate(l)
for i in res:
    print(i)
for index,item in enumerate(l):
    print(index,item) 
輸出:
(0, ‘a‘)
(1, ‘b‘)
(2, ‘c‘)
0 a
1 b
2 c

format()

#字符串可以提供的參數 ‘s‘ None
>>> format(‘some string‘,‘s‘)
‘some string‘
>>> format(‘some string‘)
‘some string‘
 
#整形數值可以提供的參數有 ‘b‘ ‘c‘ ‘d‘ ‘o‘ ‘x‘ ‘X‘ ‘n‘ None
>>> format(3,‘b‘) #轉換成二進制
‘11‘
>>> format(97,‘c‘) #轉換unicode成字符
‘a‘
>>> format(11,‘d‘) #轉換成10進制
‘11‘
>>> format(11,‘o‘) #轉換成8進制
‘13‘
>>> format(11,‘x‘) #轉換成16進制 小寫字母表示
‘b‘
>>> format(11,‘X‘) #轉換成16進制 大寫字母表示
‘B‘
>>> format(11,‘n‘) #和d一樣
‘11‘
>>> format(11) #默認和d一樣
‘11‘
 
#浮點數可以提供的參數有 ‘e‘ ‘E‘ ‘f‘ ‘F‘ ‘g‘ ‘G‘ ‘n‘ ‘%‘ None
>>> format(314159267,‘e‘) #科學計數法,默認保留6位小數
‘3.141593e+08‘
>>> format(314159267,‘0.2e‘) #科學計數法,指定保留2位小數
‘3.14e+08‘
>>> format(314159267,‘0.2E‘) #科學計數法,指定保留2位小數,采用大寫E表示
‘3.14E+08‘
>>> format(314159267,‘f‘) #小數點計數法,默認保留6位小數
‘314159267.000000‘
>>> format(3.14159267000,‘f‘) #小數點計數法,默認保留6位小數
‘3.141593‘
>>> format(3.14159267000,‘0.8f‘) #小數點計數法,指定保留8位小數
‘3.14159267‘
>>> format(3.14159267000,‘0.10f‘)#小數點計數法,指定保留10位小數
‘3.1415926700‘
>>> format(3.14e+1000000,‘F‘)  #小數點計數法,無窮大轉換成大小字母
‘INF‘
#g的格式化比較特殊,假設p為格式中指定的保留小數位數,先嘗試采用科學計數法格式化,得到冪指數exp,如果-4<=exp<p,則采用小數計數法,並保留p-1-exp位小數,否則按小數計數法計數,並按p-1保留小數位數
>>> format(0.00003141566,‘.1g‘)#p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留0位小數點
‘3e-05‘
>>> format(0.00003141566,‘.2g‘)#p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留1位小數點
‘3.1e-05‘
>>> format(0.00003141566,‘.3g‘)#p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留2位小數點
‘3.14e-05‘
>>> format(0.00003141566,‘.3G‘)#p=1,exp=-5 ==》 -4<=exp<p不成立,按科學計數法計數,保留0位小數點,E使用大寫
‘3.14E-05‘
>>> format(3.1415926777,‘.1g‘)#p=1,exp=0 ==》 -4<=exp<p成立,按小數計數法計數,保留0位小數點
‘3‘
>>> format(3.1415926777,‘.2g‘)#p=1,exp=0 ==》 -4<=exp<p成立,按小數計數法計數,保留1位小數點
‘3.1‘
>>> format(3.1415926777,‘.3g‘)#p=1,exp=0 ==》 -4<=exp<p成立,按小數計數法計數,保留2位小數點
‘3.14‘
>>> format(0.00003141566,‘.1n‘) #和g相同
‘3e-05‘
>>> format(0.00003141566,‘.3n‘) #和g相同
‘3.14e-05‘
>>> format(0.00003141566) #和g相同
‘3.141566e-05‘


globals() 查看全局作用域(內置、全局命名空間)

locals() 查看局部作用域

hash() 返回傳入對象的校驗值

print(hash(‘abcdefg123‘))
print(hash(‘abcdefg123‘)) 
輸出:
6531764118696325436
6531764118696325436

help() 查看註釋信息

給函數加文檔解釋,用到單引號,雙引號,三引號,使用#做註釋不會打印

id() 返回傳入對象的內存地址(id只是python解釋器實現的功能,只是反映了對象在內存的地址,但並不是真實的內存地址)

def func():pass
print(id(func))
print(func) 
輸出:
30424600
<function func at 0x0000000001D03E18>


isinstance() 判斷一個變量的類型(面向對象中會詳解)

x=1
print(type(x) is int)
print(isinstance(x,int)) #x=int(1) 
輸出:
True
True

max() 取最大值

min() 取最小值

只能同數據類型之間比較

pow() 做冪和取模運算(可以傳兩個或者三個參數)

print(pow(3,2,2)) #3**2%2
 
輸出:
1

repr() 把一個對象轉換成字符串類型

==str()

區別:前者是給python解釋器用的,後者是給用戶用的

reversed() 反轉傳入對象

l=[1,‘a‘,2,‘c‘]
print(list(reversed(l)))
print(l) 
輸出:
[‘c‘, 2, ‘a‘, 1]
[1, ‘a‘, 2, ‘c‘]

round() 傳入兩個參數,保留小數位數

print(round(3.456,2))
 
輸出:
3.46

slice() 切片(傳入三個參數,前兩個切片範圍,最後一個為步長)

sorted() 排序(把傳入對象從小到大進行排序,只能同數據類型)

l=[1,10,4,3,-1]
print(sorted(l))
print(sorted(l,reverse=True)) #使用reverse內置函數實現從大到小排序 
輸出:
[-1, 1, 3, 4, 10]
[10, 4, 3, 1, -1]

sum() 求和

print(sum([1, 2,3]))

print(sum(i for i in range(10))) 
輸出:
6
45

zip() 拉鏈,兩個對象的值一一對應

s=‘hellosssssssssssssssss‘
l=[1,2,3,4,5]

print(list(zip(s,l))) 
輸出:
[(‘h‘, 1), (‘e‘, 2), (‘l‘, 3), (‘l‘, 4), (‘o‘, 5)] #多出的不顯示

內置函數與匿名函數的結合:

匿名函數

應用於一次性的場景,臨時使用

a.沒有名字

b.函數體自帶return

練習:

取出薪資最高的人名:

# 方法一:使用內置函數
salaries={
‘egon‘:3000,
‘alex‘:100000000,
‘wupeiqi‘:10000,
‘yuanhao‘:2000
} 
print(max(zip(salaries.values(),salaries.keys()))[1])
 
輸出:
alex
 
# 方法二:內置函數與匿名函數結合
salaries={
‘egon‘:3000,
‘alex‘:100000000,
‘wupeiqi‘:10000,
‘yuanhao‘:2000
}

# lambda name:salaries[name]   #匿名函數

print(max(salaries,key=lambda name:salaries[name]))
print(min(salaries,key=lambda name:salaries[name])) 
輸出:
alex
yuanhao

薪資從低到高排序:

salaries={
‘egon‘:3000,
‘alex‘:100000000,
‘wupeiqi‘:10000,
‘yuanhao‘:2000
}
def get_value(name):
    return salaries[name]

print(sorted(salaries,key=get_value))
print(sorted(salaries,key=get_value,reverse=True)) 
輸出:
[‘yuanhao‘, ‘egon‘, ‘wupeiqi‘, ‘alex‘]
[‘alex‘, ‘wupeiqi‘, ‘egon‘, ‘yuanhao‘]

map() 映射

names=[‘alex‘,‘wupeiqi‘,‘yuanhao‘,‘yanglei‘,‘egon‘]

res=map(lambda x:x if x == ‘egon‘ else x+‘SB‘,names)
print(res)
print(list(res)) 
輸出:
<map object at 0x00000000021DCDD8>
[‘alexSB‘, ‘wupeiqiSB‘, ‘yuanhaoSB‘, ‘yangleiSB‘, ‘egon‘]

filter() 過濾(根據返回的布爾值,只留下返回True的值)

names=[‘alex_SB‘,‘wupeiqi_SB‘,‘yuanhao_SB‘,‘yanglei_SB‘,‘egon‘]
print(list(filter(lambda name:name.endswith(‘SB‘),names))) 
輸出:
[‘alex_SB‘, ‘wupeiqi_SB‘, ‘yuanhao_SB‘, ‘yanglei_SB‘]

reduce() 傳入兩個對象,把後一個對象當做初始值,使用for循環的方式操作兩個對象

需要先導入functools模塊

from functools import reduce

# 100以內的數字相加
print(reduce(lambda x,y:x+y,range(101),100))
print(reduce(lambda x,y:x+y,range(101))) 
輸出:
5150
5050


本文出自 “lyndon” 博客,請務必保留此出處http://lyndon.blog.51cto.com/11474010/1955311

python基礎---內置函數