Python內建函式 一

2021-07-11 20:15:19 字數 4985 閱讀 2971

abs()是乙個取絕對值的函式,使用起來相對比較簡單。

print abs(-1)結果1

[finished in

0.1s]

原始碼中對它的描述比較簡單是這麼介紹的:

abs(number) -> number

return the absolute value of the argument.

在入參中增加了型別的檢查,引數可以是負數也可以為正數。只會取絕對值,不會做取整。

print abs('a')

結果:traceback (most recent call last):

file "/users/svenweng/desktop/test.py", line 1, in

print abs('a')

typeerror: bad operand type for abs(): 'str'

all這個函式其實是乙個非常好用的函式。入參是乙個可迭代的物件,比如tuple、list。迭代物件中全部為true則返回true,否則返回false。

函式等價於:

def

all(iterms):

for iterm in iterms:

ifnot iterm:

return

false

return

true

怎麼理解這個true呢?其實就是python中bool型別的判斷,if條件成立,那麼就是true。所以可迭代物件中有這麼些元素會引發false:0、false、」。

不過有一點要特別注意:如果是空列表或者空tuple,返回的也是true。

print all()

結果:true

[finished in

0.1s]

any函式和上面的all有點類似。all函式表示引數中的可迭代物件只要存在判定為false的條件,就返回false。而any是引數中可迭代物件全部判定為false的時候返回false,其他時候則返回true。

入參帶有判定為false的引數

print any(['1',2,false])

結果:true

[finished in

0.1s]

入參全部為判定為false的引數

print any(['',0,false])

結果:false

[finished in

0.1s]

注意:any和all的入參都必須是可迭代物件。如果是其他型別則會報錯。

print any(0000)

結果:traceback (most recent call last):

file "/users/svenweng/desktop/test.py", line 1, in

print any(0000)

typeerror: 'int' object is

not iterable

注意:字串也是可迭代物件。

print all('abcd')

結果:true

[finished in

0.1s]

basestring是str和unicode的基礎類,不能夠被直接呼叫。檢視原始碼就能看到他們是繼承於basestring的。

注意:判斷型別是否為字串的時候,請使用isinstance(arg, basestring),而不要用str或者unicode

注意:python3中把所有的字串都統一為unicode了,所以在python3中沒有basestring這個方法。

print isinstance(u'hello', basestring)  # true

print isinstance('hello', basestring) # true

print isinstance(u'hello', str) # false

print isinstance('hello', unicode) # false

說實話,這個方法我並不是很理解如何運用到實際的程式設計中。

callable方法是用來判斷乙個物件是否可以呼叫。不理解的地方在於,如果返回true,仍然有可能是不能呼叫的。當然返回false時肯定不能呼叫的。我們來看幾個示例:

print callable('hello')  # false

print callable(abs) # true

print callable(basestring) # true

物件如果是乙個字串,那麼是不能呼叫的,如果是乙個函式,那麼是可以呼叫的。但是要注意,basestring是不能呼叫的,在示例中也返回了乙個true。

class

test:

defaaa

():return

0print callable(test)

結果:true

-------------------------

class

test:

defaaa

():return

0st = test()

print callable(st)

結果:false

從上面示例可以看出如果是直接判定乙個類,那麼返回的是true,如果把這個類例項化了,那麼就會返回false。

class

test:

def__call__

():return

0st = test()

print callable(st)

那麼如果在這個類加上了call這個函式,那麼就會返回true。

具體怎麼用可能我水平有限,不是很能理解。需要讀者自己理解了。

這個方法其實是乙個裝飾器,用來讓類中的函式變為類,不用例項化就可以直接呼叫。怎麼理解這個呢?看看下面的示例。

class

test:

defmytest

(self):

print

'test pass'

test.mytest()

結果:traceback (most recent call last):

file "/users/svenweng/desktop/test.py", line 6, in

test.mytest()

typeerror: unbound method mytest() must be called with test instance as first argument (got nothing instead)

這樣直接呼叫會報錯,需要你把這個類做一下例項化,然後才能呼叫這個函式。但是如果加上了乙個classmethod的裝飾器,就不一樣了。

class

test:

@classmethod

defmytest

(self):

print

'test pass'

test.mytest()

結果:test pass

cmp就是compare的縮寫,意思就是這個函式是用來比較大小。需要傳入兩個引數,既然是比較大小,一般傳入的是數值型別,比如int或者float。

print cmp(1, 2)  # -1

print cmp(2, 2) # 0

print cmp(3, 2) # 1

上面的示例可以看出,如果第乙個值比第二個小,則返回-1,相等,則返回0,如果大於,則返回。

注意:字串也是可以比較的。

print cmp('aaa', 'aa')  # 1

print cmp('aaa', 'aaa') # 0

print cmp('aaa', 'aaaa') # -1

字串的比較是一位一位的來比較的,如果第一位不相等,那麼就會直接返回結果.

print cmp('aaa', 'baaa')  # -1
示例中的第二個引數b已經大於第乙個引數的第一位a,那麼就直接返回結果了。

這個函式是用來取整除的結果和餘數。

一般來說我們要獲取整除的結果和餘數,會使用/和%。比如這樣:

print

5/3print

5%3結果:

12

如果用內建的divmod函式,則非常簡單就能獲取。

print divmod(5,3)  # (1, 2)
這個函式是我最喜歡用的函式之一。用來便利迭代物件中的序列和元素。怎麼理解這個函式呢?

沒接觸這個函式之前,我都是額外定義乙個引數來獲取迭代的序列。比如這樣:

testlist = ['a', 'b', 'c', 'd']

num = 0

for x in testlist:

print num, x

num += 1

結果:0 a

1 b2 c

3 d

但是使用enumerate就相對簡單了。

testlist = ['a', 'b', 'c', 'd']

for x,y in enumerate(testlist):

print x, y

結果:0 a

1 b2 c

3 d

5行**變成3行**。而且沒有重新生成乙個變數,效能上也有了提公升。

更詳細的介紹請看《python小知識——深度剖析獲取迭代序列》

python內建函式一

內建函式 1.abs number 用法 返回數字的絕對值 2.all iterable 用法 如果iterable的所有元素都是真值,就返回true,否則返回false 3.any iterable 用法 如果iterable的所有元素都是假值,就返回false,否則返回true 4.ascii ...

python 內建函式(一)

內建函式 abs python 官方文件描述如下 help abs help on built in function abs in module builtins abs x,return the absolute value of the argument.返回乙個數的絕對值,引數可以是整數 浮...

python內建函式 一

1.divmod a,b 返回乙個包含商和餘數的元組 a b,a b 2.all 用於判斷給定的可迭代引數 iterable 中的所有元素是否都為 true,如果是返回 true,否則返回 false 如果iterable的所有元素不為0 false或者iterable為空,all iterable...