Python起手式 型別和物件

2021-08-17 06:18:07 字數 1751 閱讀 7883

1. 內建函式 id() 可以返回乙個物件的唯一標識,返回值為整型,用於比較該物件在記憶體中的位置,在python中,一切都是物件,比如建立乙個值為1的物件,a只是引用這個新創將物件的乙個名稱,將a賦值給b時,b就成了同一物件的另乙個名稱,a和b的唯一標識都是相同的,使用sys模組的getrefcount可以獲取引用計數,改變a並不會影響到b。

import sys

a=1b=1 #或者使用del 刪除物件

print(id(a))

print(id(b)) #刪除了物件將引發異常

print(sys.getrefcount(a))

b=2print(sys.getrefcount(a))

140274625986568

140274625986568

597596

2. 比較物件

嚴格小於    

<=

小於或者等於

>

大於》=

大於或者等於

==等於

!=不等於

is比較物件連個物件的身份

is not 

否定物件的身份

除了不同的數字型別,不同型別的物件永遠不會相等。

def cmp(a,b):

if a is b: #比較兩個物件的身份,也就是id()

print("a is b")

if a==b: #比較連個物件的值

print("a==b")

if type(a)==type(b): #比較連個物件的型別

print("type equal")

cmp(1,2)

type equal

3.引用和複製

在程式進行a==b的後,a和b就是引用了同乙個物件,修個其中乙個就會影響到另乙個物件,為避免這種情況,必須建立物件的副本而不是新的引用,對於列表和字典這樣的容器,可以使用兩種複製操作,淺複製和深複製,淺複製會建立乙個新的物件,但它包含的是對原始資料的引用

#深複製

import copy

a=[1,2]

b=copy.deepcopy(a)

b[0]=3

print(b)

print(a)

[3,2]

[1,2]

#淺複製
a=[1,2]

b=ab[0]=3

print(a)

[3,2]

3. python中所有物件都是第一類,意思是能夠使用識別符號命名所有物件都具有的相同狀態,也就是說能夠命名的所有物件都可以當錯資料處理

items={}

items["abs"]=abs;

print(items["abs"](-1))

將一行文字轉換為列表    

line="good,100,1.3"

types=[str,int,float]

fields=line.split(",")

print(fields)

result=[i(j) for i,j in zip(types,fields)]

print(result)

['good', '100', '1.3']

['good', 100, 1.3]

Python起手式 型別與物件2

none type none null物件 數字物件 int 整型float 浮點數complex 複數bool 布林型 true false 序列str 字串list 列表tuple 元組range range 函式建立整數範圍 對映dict 字典集合 set可變集合 frozenset 不可變集...

Python 起手式 檔案操作

一.開啟乙個檔案,並且讀出每一行的內容f open in.txt line f.readline while line print line,end line f.readline f.close open 函式返回乙個新的檔案物件,呼叫該物件可以執行各種檔案操作,readline 方法讀取一行的內...

Python 物件和型別

物件和型別 1.學生的屬性 姓名 性別 2.python中五種基本物件型別 字串 string str 或 整數 integer int 八進位制 025 十進位制 21 十六進製制 0x15 浮點數 float 21.21 2.1e2 布林數 boolean bool true false 複數 ...