標準型別操作符
標準型別的內建函式
標準型別的分類
不支援的型別
首先來理解乙個通俗的含義,什麼是物件
?事實上物件不管在什麼語言裡面,比方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)
是對使用者比較友好 , 可是很多情況下str
和repr
的輸出都是一樣的
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個資源將幫助您入門,並逐步...