日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python語法速查: 1. 數據類型與內置函數

系統 1699 0

?

? (1)常用內置數據類型

分類 類型名稱 描述
數字 int 整數
float 浮點數
complex 復數
bool 布爾值
序列 str 字符串(不可變序列)
list 列表
tuple 元組(不可變序列)
range 整數范圍(不可變序列)
bytes 字節數組(不可變序列)
bytearray 可變字節數組
映射 dict 字典
集合 set 可變集合
frozenset 不可變集合
None NoneType 空對象,它沒有任何屬性

?

?

? (2)類型檢查常用方法

用法 類型 描述 舉例
id( 實例 ) 內置函數 返回一個對象的身份(整數)

id(a)

type( 實例 ) 內置函數 返回一個對象實例的類型 type(a)
is 運算符 比較2個對象是否同一身份

a is b

type(a) is str

type(a) is type(b)?? # a與b是否同一類型

isinstance( 實例, 類名 ) 內置函數 入參對象是否是入參類的實例

isinstance(s, list) # s是否為列表

isinstance(f, Foo) ? # f是否為Foo類的實例

?

?

? (3)常用內置函數

名稱 簡述 用法 舉例或說明
數學運算
abs() 返回一個數的絕對值 abs( x ) abs(a)
pow() x的y次方運算,將結果對z取模 pow( x, y[,z] )

pow(2,3,3) # 結果為2

round() 將x按10的負n次取四舍五入 round( x[, n=0] ) 舍入規則見下詳述
divmod() 將a除以b的商和余數作為元組返回 divmod( a, b )

divmod(10,3) # 結果為(3,1)

內置數據類型實例生成
int() 根據入參數字或字符串,生成整數實例 int( x[, base=10] ) base默認為10, 詳見下例
float() 根據入參數字或字符串,生成浮點數實例 float( x )

float(3) # 結果為3.0

complex() 生成復數實例 complex( r[, i] ) 較少用到
bool() 生成布爾值實例 bool( [x] ) 不帶入參時默認返回False
list() 生成列表實例 list( [iter] ) iter須是可迭代對象
dict() 生成字典實例 dict( [m] ) 詳見下述
tuple() 生成元組實例 tuple( [iter] ) iter須是可迭代對象
str() 生成字符串實例 str( [object] ) 入參object的__str__方法
range() 創建range實例

range( stop )

range( start, stop [,step] )

range對象可以用迭代、也可用切片訪問
set() 生成集合實例 set( [iter] ) iter須是可迭代對象
frozenset() 生成不可變集合實例 frozenset( [iter] ) iter須是可迭代對象
slice() 生成切片對象

slice( stop )

slice( start, stop [,step] )

較少直接使用

bytes() 生成不可變字節數組實例 bytes( [source [,encoding [,errors]]] ) 詳見下述
bytearray() 生成可變字節數組實例 bytearray( [source [,encoding [,errors]]] ) 用法同上,內容可變
memoryview() 生成memoryview實例 memoryview( obj ) 較少用到
object() 生成一個基類實例 object() 較少用到
編碼與解碼
hex() 將數值x用16進制字符串表示 hex( x )

hex(16) # 結果為'0x10'

oct() 將數值x用8進制字符串表示 oct( x )

oct(16) # 結果為'0o20'

bin() 將數值x用2進制字符串表示 bin( x )

bin(8) # 結果為'0b1000'

ord() 將單字符轉換成utf-8數值 ord( c )

ord('a') # 結果為97

ord('數') # 結果為25968

chr() 將數值x轉換成單字符字符串 chr( x )

chr(97) # 結果為'a'

chr(25968) # 結果為'數'

ascii() 像repr()那樣顯示對象,非ASCII字符顯示為轉義序列 ascii( object ) 較少用到
序列操作
len() 返回s中包含的項數 len( s ) s可以是:列表、元組、字符串、集合、字典
min() 如果只有1個參數s,返回s中各項的最小值。如果有多個參數,返回各個參數中的最小值。 min( s[, args, ...] )

s可以是可迭代對象

min([1,3,5]) # 結果為1

min(1,3,5,7) # 結果為1

max() 如果只有1個參數s,返回s中各項的最大值。如果有多個參數,返回各個參數中的最大值。 max( s[, args, ...] )

s可以是可迭代對象

min([1,3,5]) # 結果為5

min(1,3,5,7) # 結果為7

sum() 計算可迭代對象iter中所有項的和,initial為累加初始值,默認為0。只能用于數值計算。 sum( iter[ ,initial] )

sum([1,2,3]) # 結果為6

sum([1,2,3], 10) # 結果為16

迭代操作
all() 若可迭代對象iterable中的所有值都為True,則返回True。 all( iter )

all([0,1,2,3]) # 結果為False

any() 若可迭代對象iterable中的任意值為True,則返回True。 any( iter )

any([0,1,2,3]) # 結果為True

enumerate() 根據入參迭代器,產生一個新迭代器,其中每個元素為一個元組:內含一個計數值和原迭代出的值。 enumerate( iter[ ,start=0] )

for i,x in enumerate(['a','b'])

????pass

???? # 結果迭代出(0,'a'), (1,'b')

zip() 產生一個新迭代器,第n個元素為一個(s1[n], s2[n], ...)的元組,其長度為最短的一個迭代器長度。 zip( [s1 [, s2 [, ...]]] )

a = [1,2,3]

b = ['x','y']

for t in zip(a, b)

????pass

???? # 迭代結果為(1,'x'), (2,'y')

sorted() 根據入參迭代器的內容排序,創建有序列表 sorted( iter, *, key=None, reverse=False ) 詳見下述
reversed() 產生一個迭代器,將入參序列的所有元素位置顛倒(注意:跟sorted()完全不同) reversed( seq )

for x in reversed([1,2,'a']):

????pass

???? # 迭代結果為 'a', 2, 1

filter() 產生一個迭代器,其內容是對入參iter中的每個元素使用func函數進行過濾,只有func返回True的才被加入新迭代器。 filter( func, iter )

a = [1,2,3,4,5,6,7,8]

filter(lambda x:x%2==1, a)

# 迭代器中內容為 1,3,5,7

map() 產生一個迭代器,其每一項是將函數func應用到iter中的每一項返回的結果。若入參有多個iter迭代器,則相應的函數func應有多個入參。 map( func, iter, ... )

map(lambda x:x*2, [1,3,5,7])

# 迭代器中內容為 2,6,10,14

iter() 返回一個可生成object中各項的迭代器。 iter( object[ ,sentinel] )

較少直接使用

next() 返回迭代器iter中的下一項。 next( iter[ ,default] )

較少直接使用

對象實例操作
id() 返回object的唯一整數標識符(這是一個內存位置)。 id( object )

結果為一個整數,較少直接使用

type() 當單參數調用時,返回入參object的類型。當三參數調用時,創建一個新type對象(一般用于元類)。

type( object )

type( name, bases, dict )

type(1) # 結果為

type('a') # 結果為

isinstance() 如果object是clsinfo類的一個實例,則返回True。clsinfo可以是一個含多個類的元組。 isinstance( object, clsinfo )

# 設有一個名為Foo的自定義類

f = Foo()

isinstance(f, Foo) # True

isinstance(f, (Foo,list)) # True

isinstance([1,2], (Foo,list)) # True

isinstance(f, (list,tuple) # False

repr() 返回object的字符串表示形式。 repr( object ) 一般在類內部的__repr__()方法會定義本對象的字符串表示形式。
dir() 返回object對象的屬性名(含方法名)列表,若object是一個模塊,則返回其內部定義的符號列表。 dir( object ) 如果類內部定義了__dir__屬性,則返回此值。
hasattr() 若name是object的屬性名,則返回True hasattr( object, name )

入參name是一個字符串

getattr() 返回對象的name屬性的值,若無此屬性,則default是可選的返回值,否則引起AttributeError。 getattr( object, name [,default] )

a = getattr(obj, 'p1')

# 效果同 a = obj.p1

setattr() 設置對象的屬性 setattr( object, name, value )

setattr(obj, 'p1', a)

# 效果同 obj.p1 = a

delattr() 刪除對象的屬性 delattr( object, name )

delattr(obj, 'p1')

# 效果同 del obj.p1

hash() 返回對象的整數散列值。一般可變對象不會定義散列值,除非類內部定義了__hash__()方法。 hash()

hash('abc') # 結果為526986374

hash(3.14) ?# 結果為1846836513

callable() 檢查一個對象是否是可調用的。但有時即便返回 True,object 仍然可能調用失敗。 callable( object ) 對于函數、方法、lamdba表達式、類、實現了__call__()方法的類實例,它都返回True。
類操作
staticmethod() 創建在類中使用的靜態方法。 staticmethod( func ) 一般通過@staticmethod裝飾器隱式調用該函數
classmethod() 創建在類方法。 classmethod( func ) 一般通過@classmethod裝飾器隱式調用該函數
issubclass() 如果class是clsinfo的子類,或class是基于抽象基類clsinfo注冊的,則返回True。clsinfo可以是一個含多個類的元組。 issubclass( class, clsinfo )

issubclass(Foo, BaseFoo) # 結果為 True

issubclass(Foo, (BaseFoo,list) # 結果為 True

super()

返回一個代理對象,提供可以調用基類中的方法的手段。type是當前子類名,object一般是self。

在Python3中,在子類方法中可以省略type和object參數,直接簡寫成:super()

super( type [,object] )

class B(A):

??def foo(self):

???? # 調用基類A的foo方法

????super(B,self).foo()

???? # 在Python3中可簡寫成:

???? # super().foo()

property() 創建一個虛擬屬性。fget, fset, fdel分別為自定義的屬性讀取、設置、刪除方法,doc為文檔字符串。 property( fget=None, fset=None, fdel=None, doc=None )

class C:

??def __init__(self):

????self._x = 'c'

??def gx(self):

????return self._x

??x=property(fget=gx, doc='a')

??# 定義了一個只讀的屬性x

域操作
globals() 返回代表當前全局作用域的所有符號的字典。 globals()

globals()

locals() 返回代表當前局部作用域的所有符號的字典。 locals()

locals()

var() 返回object的所有屬性和屬性值的字典對象,如果沒有入參,則相當于調用locals() var( [object] )

vars(obj)

輸入輸出與文件操作
input() 顯示prompt提示信息,并讀取一行輸入,將讀入內容不作任何修改作為字符串返回。(Python3中取消了原raw_input()函數) input( [prompt] )

>>> input('pls ipt:')

pls ipt: 123

# 返回結果為:'123'

print() 打印一系列值到屏幕上。入參中可設置:多個顯示對象之間的分隔符、換行符、輸出設備、強制刷新等,一般不用修改。 print( *objects, sep=' ', end='\n', file=sys.stdout, flush=False )

一般用于調試用

open() 打開文件并返回一個新文件對象。 open( file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None )

在文件操作章節詳細描述

雜項
eval() 計算入參表達式expr的值,expr是一個字符串或代碼對象。globals和locals參數可指定操作時的全局和局部命名空間映射對象。 eval( expr, globals=None, locals=None )

x = 1

eval('x+1') # 結果為2

exec() 執行Python語句,入參code可以是字符串、文件或代碼對象。globals和locals參數可指定操作時的全局和局部命名空間映射對象。 exec( code[, globals[, locals]] )

x = 1

code = """s = x + 1

print(s)"""

exec(code) # 結果為2

exec(code, {'x':10}) # 結果為11

format() 按照format_spec中的格式將value轉換為有格式的字符串,該操作調用value.__format__()方法。 format( value[, format_spec] )

一般在格式化字符串時被隱式調用

help() 調用內置的幫助系統。object可以是字符串(表示模塊名、類名、函數名、方法名、關鍵字、文檔主題名稱),如果是其他類型的對象,則會出現與該對象有關的幫助界面。 help( [object] )

help('math')

compile() 將source對象編譯為代碼對象,結果可被用于eval()和exec()函數。 compile( source, filename, mode, flags=0, dont_inherit=False, optimize=-1 )

若不是開發框架的話,一般用不到

breakpoint() Python3.7中新增的內置函數,用來設置程序運行時的斷點,程序運行到該函數時自動進入調試器。這是個方便函數,可以讓你很方便地進入Pdb調試器(不用再顯式導入調試模塊等)。 breakpoint( *args, **kws ) 在需要設置斷點的地方直接調用breakpoint()即可

?

?

?

● round(x[, n])

說明:

在Python3中,當被舍入數字為5且為第1位小數時,舍入規則如下:若被舍入數字的前一個數為偶數,則朝0方向進行四舍五入;否則遠離0,正負數都遵循這個規則。其它位的四舍五入不適用此規則,依舊按照普通數學規則進行。

舉例:

              >>> round(2.5) 
              
                ?# 結果為2
              
              
>>> round(-2.5) 
              
                # 結果為2
              
              
>>> round(3.5) 
              
                ?# 結果為4
              
              
>>> round(-3.5) 
              
                # 結果為4
              
            

返回索引

?

?

?

● int(x[, base])

說明:

x可以是數字或字符串,base是入參的轉換進制基數,可以是2、8、16、16等,轉換結果總是10進制整數。

舉例:

              >>>  int('100')
              
                ?# 結果為100
              
              
>>>  int('100', 10)
              
                ?# 結果為100
              
              
>>>  int('100', 16)
              
                ?# 結果為256
              
              
>>>  int('100', 2)
              
                ?# 結果為4
              
            

返回索引

?

?

?

● dict([m])

說明:

入參m若是字典,則dict(m)就創建一個m淺復制。若m不是字典,則必須能夠產生(key, value)形式的迭代值。也可用關鍵字創建字典,見下例。

舉例:

              >>>  dict('a'=1, 'b'=2)
              
                ?# 結果為{'a':1, 'b':2}
              
              
>>>  dict()
              
                ?# 結果為空字典{}
              
            

返回索引

?

?

?

● bytes([source [,encoding [,errors]]])

說明:

生成不變字節數組,入參source為原始輸入字符串,入參encoding指定要使用的字符編碼方式。

舉例:

              >>> x = bytes()  
              
                ?# 結果為空字節數組 b''
              
              
>>> x = b''  
              
                ?# 結果同上
              
              
>>> x = bytes('abc')  
              
                ?# 結果為 b'abc'
              
              
>>> x = bytes('ab數字', 'utf-8') 
              
                ?# 結果為 b'ab\xe6\x95\xb0\xe5\xad\x97' 
              
            

返回索引

?

?

?

● sorted(iter, *, key=None, reverse=False)

說明:

根據iter迭代器中的各項值的內容進行排序(從小到大),創建有序列表,一般只能對數字或字符串進行排序。key是個單參數函數,可以對元素在被排序前進行預處理,將一些常規來說不能排序的元素預處理成可排序的數字或字符串。reverse是個標志位,用以指出是否逆序(從大到小)排序。(注意:Python3最新版本中已廢除了cmp參數)

舉例:

              >>>  sorted([1,7,3,5]) 
              
                ?# 結果為[1,3,5,7]
              
              
>>>  sorted([1,7,3,5], reverse=True) 
              
                ?# 結果為[7,5,3,1]
              
              
>>>  sorted(['c','b','a'])
              
                ?# 結果為['a','b','c']
              
              
>>>  sorted([('b',2),('a',1)], key=lambda x:x[1])
              
                ?# 結果為[('a',1),('b',2)]
              
              
>>>  
              
                # 上例說明:入參列表中的元素為元組,一般不能排序。但這里用lambda生成了一個匿名函數,對元素進行預處理,取出每個元素元組中的數字,然后用這個數字作為排序依據,給sorted()函數進行排序
              
            

返回索引

?

?

?

?

?

?

返回標題

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 舞钢市| 德庆县| 柳州市| 健康| 项城市| 湾仔区| 天津市| 阳泉市| 长丰县| 静海县| SHOW| 九龙县| 息烽县| 阜阳市| 周至县| 电白县| 青州市| 巩留县| 东源县| 吉林市| 习水县| 滦南县| 武鸣县| 大荔县| 志丹县| 佛坪县| 彝良县| 共和县| 太谷县| 家居| 镇安县| 县级市| 灵山县| 南投市| 河西区| 红安县| 益阳市| 铅山县| 宁晋县| 巴中市| 湖口县|