1. 程式人生 > >Python對資料型別的處理

Python對資料型別的處理

Python物件的概念

Python中,萬物皆物件,所有的操作都是針對物件的,那什麼是物件,5是一個int物件,‘oblong’是一個str物件,異常也是一個物件,抽象一點是,人,貓,狗也是一個物件
那對於一個物件,它就有包括兩方面的特徵:
屬性:去描述它的特徵
方法: 它所具有的行為
所以,物件=屬性+方法 (其實方法也是一種屬性,一種區別於資料屬性的可呼叫屬性)
把具有相同屬性和方法的物件就可以歸為一類,即Classl。類就好比是一張藍圖,使用一個類可以建立多個物件例項 ,即人,貓,狗都屬於哺乳動物類

類是物件的抽象化,物件是類的例項化。類不代表具體的事物,而物件表示具體的事物

類也是有屬性和方法的。

資料型別也是物件

實際上Pyhton在面向物件程式設計時,才會有物件這個概念,而在面向過程型程式設計時,我們討論最多的就是資料型別。
Python提供的基本資料型別主要有:布林型別、整型、浮點型、字串、列表、元組、集合、字典等… …
資料型別也可以看做是一個”類“
每一種資料型別都是一個物件,也具有其自己的屬性和方法

Python中的None與 NULL(即空字元)的區別

None是Python的特殊型別,NoneType物件,它只有一個值None.
它不支援任何運算也沒有任何內建方法。
None和任何其他的資料型別比較永遠返回False。
None有自己的資料型別NoneType。
你可以將None複製給任何變數,但是你不能建立其他NoneType物件。

  • 是不同的一種資料型別:
>>>type(None)
<class 'NoneType'>

表示該值是一個空物件,空值是Python裡一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。

>>>type('')
<class ''str'>

你可以將None賦值給任何變數,也可以將任何變數賦值給一個None值的物件

  • 判斷的時候 均是False
>>> ff=None
>>> if ff:
    print('ff is define'
) 執行結果:無列印!
  • 屬性不同
    使用dir()函式返回引數的屬性、方法列表。如果引數包含方法dir(),該方法將被呼叫。如果引數不包含dir(),該方法將最大限度地收集引數資訊。
dir(None)
['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
dir('')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

python 中is和= = 的區別

Python中的物件包含三要素:id、type、value,其中id用來唯一標識一個物件,type標識物件的型別,value是物件的值。
is判斷的是a物件是否就是b物件,是通過id來判斷的;
==判斷的是a物件的值是否和b物件的值相等,是通過value來判斷的。

python中的not代表什麼

在python中not是邏輯判斷詞,用於布林型True和False,not True為False,not False為True.

pythond對變數是否為None的判斷

python對變數是否為None的判斷,有三種主要的寫法:
第一種是if x is None
第二種是 if not x:
第三種是if not x is None(這句這樣理解更清晰if not (x is None)) 。
在Python中 None, False, 空字串”“, 0, 空列表[], 空字典{}, 空元組()都相當於False 。

<strong>not None == not False == not '' == not 0 == not [] == not {} == not ()</strong>  

foo is None 和 foo == None的區別

>>> class foo(object):
    def __eq__(self, other):
        return True

>>> f = foo()
>>> f == None
True
>>> f is None
False

>>> list1 = [1, 2, 3]
>>> list2 = [1, 2, 3]
>>> list1==list2
True
>>> list1 is list2
False

另外:

(ob1 is ob2) 等價於 (id(ob1) == id(ob2))