你也可以使用以下函數(shù)的方式來(lái)訪問(wèn)屬性:
- getattr(obj, name[, default]) : 訪問(wèn)對(duì)象的屬性贞铣。
- hasattr(obj,name) : 檢查是否存在一個(gè)屬性想括。
- setattr(obj,name,value) : 設(shè)置一個(gè)屬性忌傻。如果屬性不存在,會(huì)創(chuàng)建一個(gè)新屬性浸卦。
- delattr(obj, name) : 刪除屬性。
Python內(nèi)置類屬性
__dict__
: 類的屬性(包含一個(gè)字典,由類的數(shù)據(jù)屬性組成)
__doc__
:類的文檔字符串
__name__
: 類名
__module__
: 類定義所在的模塊(類的全名是'__main__
.className'般贼,如果類位于一個(gè)導(dǎo)入模塊mymod中,那么className.__module__
等于 mymod)
__bases__
: 類的所有父類構(gòu)成元素(包含了以個(gè)由所有父類組成的元組)
abs() 求絕對(duì)值
exp: abs(x)
x 是 整型all(iterable)
判斷iterable可迭代對(duì)象中所有元素都是True,(元素除0奥吩,空哼蛆,None,F(xiàn)alse外)any(iterable)
判斷可迭代對(duì)象iterable 中任意一個(gè)元素是True,則返回True.basestring()
basestring() 方法是 str 和 unicode 的超類(父類)圈驼,也是抽象類人芽,因此不能被調(diào)用和實(shí)例化,但可以被用來(lái)判斷一個(gè)對(duì)象是否為 str 或者 unicode 的實(shí)例绩脆,isinstance(obj, basestring) 等價(jià)于 isinstance(obj, (str, unicode))萤厅。bin()
bin() 返回一個(gè)整數(shù) int 或者長(zhǎng)整數(shù) long int 的二進(jìn)制表示橄抹。bool()
轉(zhuǎn)換成布爾值(True, False)bytearray()
方法返回一個(gè)新字節(jié)數(shù)組(bytearray()).
>>> bytearray([1,2])
bytearray(b'\x01\x02')
8.callable()
1. 方法用來(lái)檢測(cè)對(duì)象是否可被調(diào)用,可被調(diào)用指的是對(duì)象能否使用()括號(hào)的方法調(diào)用惕味。
2. 可調(diào)用對(duì)象楼誓,在實(shí)際調(diào)用也可能調(diào)用失敗名挥;但是不可調(diào)用對(duì)象疟羹,調(diào)用肯定不成功。
3. 類對(duì)象都是可被調(diào)用對(duì)象禀倔,類的實(shí)例對(duì)象是否可調(diào)用對(duì)象榄融,取決于類是否定義了__call__方法。
對(duì)于函數(shù)救湖、方法愧杯、lambda 函式、 類以及實(shí)現(xiàn)了 __call__ 方法的類實(shí)例, 它都返回 True鞋既。
- chr(i) i -- 可以是10進(jìn)制也可以是16進(jìn)制的形式的數(shù)字力九。
返回一個(gè)與acsii碼對(duì)應(yīng)的字符。
>>>print chr(0x30), chr(0x31), chr(0x61) # 十六進(jìn)制
0 1 a
>>> print chr(48), chr(49), chr(97) # 十進(jìn)制
0 1 a
- classmethod()
classmethod 修飾符對(duì)應(yīng)的函數(shù)不需要實(shí)例化邑闺,不需要 self 參數(shù)跌前,但第一個(gè)參數(shù)需要是表示自身類的 cls 參數(shù),可以來(lái)調(diào)用類的屬性陡舅,類的方法抵乓,實(shí)例化對(duì)象等。
class A():
bar = 1
def __init__(self):
pass
def func1(self):
print("func1")
@classmethod
def foo(cls):
print("this is foo ")
print(cls.bar)
cls().func1() # 先實(shí)例化再調(diào)用
A.foo()
- cmp(x, y) 比較x,y兩個(gè)數(shù)值表達(dá)式蹭沛,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1臂寝。
Python 3.X 的版本中已經(jīng)沒(méi)有 cmp 函數(shù),如果你需要實(shí)現(xiàn)比較功能摊灭,需要引入 operator 模塊咆贬,適合任何對(duì)象,包含的方法有:
operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
operator.__lt__(a, b)
operator.__le__(a, b)
operator.__eq__(a, b)
operator.__ne__(a, b)
operator.__ge__(a, b)
operator.__gt__(a, b)
調(diào)用:
>>> import operator
>>> operator.eq(1,2)
False
>>> operator.__lt__(1,2)
True
>>> operator.__eq__(1,2)
False
compile()
compile() 函數(shù)將一個(gè)字符串編譯為字節(jié)代碼帚呼。
不詳細(xì)介紹complxe()
complex() 函數(shù)用于創(chuàng)建一個(gè)值為 real + imag * j 的復(fù)數(shù)或者轉(zhuǎn)化一個(gè)字符串或數(shù)為復(fù)數(shù)掏缎。如果第一個(gè)參數(shù)為字符串,則不需要指定第二個(gè)參數(shù)煤杀。
>>> complex(1) # 數(shù)字
(1 + 0j)
>>> complex("1") # 當(dāng)做字符串處理
(1 + 0j)
# 注意:這個(gè)地方在"+"號(hào)兩邊不能有空格眷蜈,也就是不能寫成"1 + 2j",應(yīng)該是"1+2j"沈自,否則會(huì)報(bào)錯(cuò)
>>> complex("1+2j")
(1 + 2j)
delattr(object, name)
刪除對(duì)象中 name
delattr(x, 'foobar') 相等于 del x.foobar酌儒。dict() 函數(shù)用于創(chuàng)建一個(gè)字典。
dir([object])
dir() # 獲得當(dāng)前模塊的屬性列表.
dir([ ]) # 查看列表的方法.divmod(x,y)
返回一個(gè)包含商和余數(shù)的元組(a // b, a % b)枯途。
>>> divmod(7,3)
(2, 1)
>>> a = divmod(7,3)
>>> a[0]
2
>>> a[1]
- enumerate() 枚舉
enumerate(sequence, [start=0])
第二個(gè)參數(shù)忌怎,默認(rèn)枚舉從0 開始.
用for in enumerate()的好處就是在 第二個(gè)參數(shù)上.
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下標(biāo)從 1 開始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
- eval() 執(zhí)行的是一個(gè)字符串表達(dá)式
eval() 函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式籍滴,并返回表達(dá)式的值。
eval(expression[, globals[, locals]])
>>> eval("1+2")
3
>>> eval("n+2")
4
>>> eval("n==6")
False
>>> eval("pow(2,3)")
8
- execfile()
execfile() 函數(shù)可以用來(lái)執(zhí)行一個(gè)文件榴啸。
execfile(filename[, globals[, locals]])
- file() 函數(shù)用于創(chuàng)建一個(gè) file 對(duì)象孽惰,它有一個(gè)別名叫 open(),更形象一些鸥印,它們是內(nèi)置函數(shù)秒啦。
>>>f = file('test.txt')
>>> f.read()
'RUNOOB1\nRUNOOB2\n'
>>>f.close()
- filter() 篩選返回一個(gè)新列表
filter() 函數(shù)用于過(guò)濾序列乔夯,過(guò)濾掉不符合條件的元素郎哭,返回由符合條件元素組成的新列表著淆。
filter(function, iterable)
float() 轉(zhuǎn)換成浮點(diǎn)數(shù)
float() 函數(shù)用于將整數(shù)和字符串轉(zhuǎn)換成浮點(diǎn)數(shù)。formate() 格式化
frozenset() 不可變的集合
set 值是不重復(fù)的.
>>> set('zxczxce')
set(['x', 'c', 'z', 'e'])
>>> frozenset('zxczxce')
frozenset(['x', 'c', 'z', 'e'])
- hash() 用于獲取一個(gè)對(duì)象(字符串或者數(shù)值等)的哈希值璃弄。
hash() 函數(shù)可以應(yīng)用于數(shù)字要销、字符串和對(duì)象,不能直接應(yīng)用于 list夏块、set、dictionary纤掸。
hash()用途:
如果程序(字符)在傳輸過(guò)程中被修改hash值即發(fā)生變化脐供,如果沒(méi)有被修改,則 hash 值和原始的 hash 值吻合
- hex() 函數(shù)用于將10進(jìn)制整數(shù)轉(zhuǎn)換成16進(jìn)制借跪,以字符串形式表示政己。
>>> hex(10)
'0xa'
>>> type(hex(10))
<type 'str'>
id() 函數(shù)用于獲取對(duì)象的內(nèi)存地址。
issubclass() 方法用于判斷參數(shù) class 是否是類型參數(shù) classinfo 的子類掏愁。
issubclass(class, classinfo)
- iter() 函數(shù)用來(lái)生成迭代器歇由。
iter(object[, sentinel])
>>> x = lambda x: [x for x in range(x)]
>>> for i in iter(x(4)):
... print(i)
...
0
1
2
3
- globals(), locals()
直接調(diào)用
locals()
globals()
- long() 函數(shù)將數(shù)字或字符串轉(zhuǎn)換為一個(gè)長(zhǎng)整型。
class long(x, base=10) # 默認(rèn)是十進(jìn)制
- map()
map(function, iterable, ...)
第一個(gè)參數(shù) function 以參數(shù)序列中的每一個(gè)元素調(diào)用 function 函數(shù)果港,返回包含每次 function 函數(shù)返回值的新列表沦泌。
>>> x = lambda x: [x for x in range(x)]
>>> map(x,[2,3])
[[0, 1], [0, 1, 2]]
oct() 函數(shù)將一個(gè)整數(shù)轉(zhuǎn)換成8進(jìn)制字符串。
ord() 返回對(duì)應(yīng)的 ASCII 數(shù)值辛掠,或者 Unicode 數(shù)值谢谦,如果所給的 Unicode 字符超出了你的 Python 定義范圍,則會(huì)引發(fā)一個(gè) TypeError 的異常萝衩。
pow() 方法返回 xy(x的y次方) 的值回挽。
property() 函數(shù)的作用是在新式類中返回屬性值。
class property([fget[, fset[, fdel[, doc]]]])
##定義一個(gè)可控屬性值 x
class C(object):
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
class Parrot(object):
def __init__(self):
self._voltage = 100000
@property
def voltage(self):
"""Get the current voltage."""
return self._voltage
##property 的 getter,setter 和 deleter 方法同樣可以用作裝飾器:
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
- range()
range(start=0, stop[, step])
參數(shù)說(shuō)明:
start: 計(jì)數(shù)從 start 開始猩谊。默認(rèn)是從 0 開始千劈。例如range(5)等價(jià)于range(0, 5);
stop: 計(jì)數(shù)到 stop 結(jié)束牌捷,但不包括 stop墙牌。例如:range(0涡驮, 5) 是[0, 1, 2, 3, 4]沒(méi)有5
step:步長(zhǎng),默認(rèn)為1憔古。例如:range(0遮怜, 5) 等價(jià)于 range(0, 5, 1)
- reduce() 函數(shù)會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。
reduce(function, iterable[, initializer])
>>> x = lambda x,y:x*y
>>> reduce(x,[2,3,4])
24
>>> x = lambda x,y:x+y
>>> reduce(x,[2,3,4])
9
- reload() 用于重新載入之前載入的模塊鸿市。
>>>import sys
>>> sys.getdefaultencoding() # 當(dāng)前默認(rèn)編碼
'ascii'
>>> reload(sys) # 使用 reload
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('utf8') # 設(shè)置編碼
>>> sys.getdefaultencoding()
'utf8'
>>>
- repr()
repr() 函數(shù)將對(duì)象轉(zhuǎn)化為供解釋器讀取的形式锯梁。即返回一個(gè)對(duì)象的字符串形式。
>>> repr(frozenset({1,2,3}))
'frozenset([1, 2, 3])'
>>> dict = {'x':1, 'y':2}
>>> dict
{'y': 2, 'x': 1}
>>> repr(dict)
"{'y': 2, 'x': 1}"
- reverse() 函數(shù)用于反向列表中元素焰情。
list.reverse()
該方法沒(méi)有返回值陌凳,但是會(huì)對(duì)列表的元素進(jìn)行反向排序。
round() 方法返回浮點(diǎn)數(shù)x的四舍五入值内舟。
slice() 函數(shù)實(shí)現(xiàn)切片對(duì)象合敦,主要用在切片操作函數(shù)里的參數(shù)傳遞。
不常用sorted(iterable, cmp=None, key=None, reverse=False)
python staticmethod 返回函數(shù)的靜態(tài)方法验游。
該方法不強(qiáng)制要求傳遞參數(shù)充岛,如下聲明一個(gè)靜態(tài)方法:
class C(object):
@staticmethod
def f(arg1, arg2, ...):
...
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class C(object):
@staticmethod
def f():
print('runoob');
C.f(); # 靜態(tài)方法無(wú)需實(shí)例化
cobj = C()
cobj.f() # 也可以實(shí)例化后調(diào)用
unichr() 函數(shù) 和 chr()函數(shù)功能基本一樣, 只不過(guò)是返回 unicode 的字符耕蝉。
vars() 函數(shù)返回對(duì)象object的屬性和屬性值的字典對(duì)象崔梗。
vars([object])
返回對(duì)象object的屬性和屬性值的字典對(duì)象,
如果沒(méi)有參數(shù)垒在,就打印當(dāng)前調(diào)用位置的屬性和屬性值 類似 locals()蒜魄。
- xrange()
xrange() 函數(shù)用法與 range 完全相同,所不同的是生成的不是一個(gè)數(shù)組场躯,而是一個(gè)生成器谈为。
xrange則不會(huì)直接生成一個(gè)list,而是每次調(diào)用返回其中的一個(gè)值
>>> x = xrange(10)
>>> x
xrange(10)
>>> x[2]
2
>>> x[0]
0
>>> x[9]
9
>>> y = range(10)
>>> y
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
所以xrange做循環(huán)的性能比range好踢关,尤其是返回很大的時(shí)候伞鲫。盡量用xrange吧,除非你是要返回一個(gè)列表耘成。
- zip() 打包函數(shù)
zip([iterable, ...])
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包為元組的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素個(gè)數(shù)與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 與 zip 相反榔昔,*zipped 可理解為解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]
- import() 函數(shù)用于動(dòng)態(tài)加載類和函數(shù) 瘪菌。
如果一個(gè)模塊經(jīng)常變化就可以使用__import__()
來(lái)動(dòng)態(tài)載入撒会。