Python學習筆記 Python物件

2021-09-07 12:45:39 字數 4897 閱讀 6437

標準型別操作符

標準型別的內建函式

標準型別的分類

不支援的型別

首先來理解乙個通俗的含義,什麼是物件?事實上物件不管在什麼語言裡面,比方c++,python裡面都是指一塊有型別的記憶體。物件裡面存放著對應的資料

全部的python物件都有三個特性:身份型別

-身份:每個物件都有唯一的乙個身份id來標識自己,就像該物件在記憶體中的儲存位址一樣,是唯一的。不可共用的。不論什麼物件的身份識別符號都能夠用內建函式id()來得到

x=1

print id(x)

#執行結果:163449008

number1 = 1

str1 = 'hello world'

print type(number1)

print type(str1)

#執行結果

##

物件屬性: 某些物件有屬性,值或者相關聯的可執行**。最常見的屬性是函式和方法

之前提到過,物件通過型別來推斷自己能夠執行那些操作,那麼型別就是用來儲存這些操作最佳場所,所以相對於字串來說,用乙個物件來描寫敘述乙個型別更為適合。

type()內建函式返回乙個type物件,僅僅只是這個物件被以字串的形式展現出來

print type(10)

print type(type(10))

#執行結果:

##

全部型別物件的型別都是type,它也是全部型別的根和全部python標準類的預設元類。

none僅僅有乙個值,它不支援不論什麼運算。沒有不論什麼內建方法。

每個物件天生具有true或者false值。

以下物件的布林值是false:

物件值的比較會直接返回乙個bool物件,各種型別的物件的比較方法也不同。,數字型別的依據數值的大小和符號比較,字串依照字串行進行比較等等

在python裡面,一般都是首先在記憶體中建立乙個物件,然後再將這個物件的引用賦值給變數。通過引用對物件進行操作。

x = 3.14

# 建立乙個3.14浮點型物件,並將引用賦值給變數x

在很多情況下,乙個物件的引用會傳給對個變數,為了檢測兩個變數是否同一時候指向同乙個變數,我們能夠用內建函式id()來比較兩個變數指向物件的id是否相等。或者使用is或者is not來比較兩個變數是否指向同乙個物件

舉個栗子:

x = 3.14

y = x

print id(x) == id(y)

print x is y # 和 id(x) == id(y) 一樣

print x is

not y # 和 id(x) != id(y) 一樣

執行結果:

true

true

false

舉個栗子:

x = 3.14

y = 1.0 + 2.14

print x is y # 儘管數值同樣,可是並不指向同乙個物件

執行結果:

false

當多個布林條件須要通手機進行推斷時,python為我們提供了以下幾個語句

操作符功能

and邏輯與

or邏輯或

not邏輯非

除了操作符,python還提供了一些內建函式用於這些基本資訊:

函式功能

cmp(obj1 , obj2)

比較兩個物件是否相等

repr(obj)

返回乙個物件的字串表示

str(obj)

以可讀性良好的為目的返回乙個物件的字串表示

type(obj)

返回物件的型別,返回的型別是乙個型別物件

type()內建函式是用來返回乙個物件的型別的

print type(1)

print type('hello world')

執行結果:

cmp(obj1 , obj2)是用來比較兩個物件的

返回結果

比較情形

正整數obj1 > obj2

0obj1 = obj2

負整數obj1 < obj2

上面比較返回的數值能夠理解為obj1 - obj2返回的結果

舉個栗子:

x, y = 1, 2

print cmp(x, y)

# 執行結果: -1

str1, str2 = 'xyz', 'abc'

print cmp(str1, str2)

# 執行結果: 1

上面的兩個內建函式str(obj)repr(obj)都是返回乙個物件的字串。可是這兩個內建函式又有所不同:

總的來說。就是repr(obj)是對python比較友好str(obj)是對使用者比較友好 , 可是很多情況下strrepr的輸出都是一樣的

print str(1)

print repr(1)

#執行結果:

#1#1

type(obj)能夠返回隨意python物件的型別,而不僅侷限於標準型別

舉個栗子:

對於標準型別

print type('')

#執行結果:

print type({})

#執行結果:

對於自己定義型別

class

foo:

pass

foo = foo()

class

bar(object):

pass

bar = bar()

print type(foo)

#執行結果 :

print type(foo)

#執行結果 :

print type(bar)

#執行結果 :

print type(bar)

#執行結果 :

假設如今我們須要確定乙個物件的型別,我們能夠採用以下的語句進行推斷:

#方式1

if type(num) == type(0):...

#方式2

import types

if type(num) == types.inttype:...

#方式3

if type(num) is types.inttype:... # 由於在執行時僅僅有乙個物件來表示整形型別

#方式4

from types import inttype

if type(num) is inttype:...

#方式5

if isinstance(num , int):...

有三種不同的模型能夠幫助我們對基本型別進行分類:

儲存模型裡面我們依照型別的物件能夠儲存多找個物件分為兩類:

分類python型別

標量存型別

數值(全部數值型別) 。字串(全部是文字。由於python沒有字元型別)

容器型別

列表 , 元組 , 字典

python裡面型別分為能夠更改是不能夠更改兩種型別,執行更改的物件同意他們的值發生變化。而不可更改的物件則不同意他們的值進行更改

分類python型別

可變型別

列表,字典

不可變型別

數字。字串 。元組

什麼?數字和字串是不能夠更改的?那以下這個更改又是怎麼回事?

str1 = 'hello world'

str1 = 'hello moto'

不錯,上面的變數的值的確發生了改變,可是變數不代表物件。第一次賦值是將'hello world'的引用賦值給str1,而第二僅僅賦值語句則是將'hello moto'的引用賦值給str1,兩個字串物件'hello world''hello moto'的值是沒有發生改變的!

在訪問模型中共同擁有三種訪問方式:直接訪問,順序對映

分類python型別

直接訪問

數字順序訪問

字串, 元組, 列表

對映訪問

字典

python裡面有一些常見可是不支援的型別:

Python學習筆記 1 1 2 認識Python

一.課程目標 二.詳情解讀 1.初識pythonpython語言是一種高階程式語言,它於1991年由吉多.範羅蘇姆 guido van rossum 發明。目前主要應用於web開發 gui開發 網路爬蟲 資料科學 人工智慧等領域。python官方 python語言也是一種多正規化程式語言,即物件導向...

Python學習筆記 一手漂亮的Python函式

使用類和函式定義模型 函式是抽象和封裝的基本方法之一 重構函式 命名合理 具有單一功能 包含文件注釋 返回乙個值 不超過 50 行 冪等函式,盡可能是純函式 函式太長 重構 refactor 冪等函式 idempotent function 可測試性 可維護性 在函式程式設計中,如果函式是冪等函式且...

python學習方法 十二種學習Python的方法

python學習方法 python是地球上最流行的程式語言之一。它被世界各地的開發商和製造商所接受。大多數linux和macos計算機都預裝了python版本,現在,即使是少數windows計算機 商也正在安裝python。也許您參加聚會遲到了,您想學習但不知道該去 這12個資源將幫助您入門,並逐步...