python內建函數(二)

來源:互聯網
上載者:User

標籤:

python內部提供了很多內建函數。下面讓我們從a-z開始學習python的內建函數


1.1

callable(object)

如果object參數是可以調用的對象(callable),則返回true,否則就返回false。

a = 123

def fun():

print("hello")

print(callable(a))

print(callable(fun()))

輸出的結果是:

False

hello

False

func()是可以調用的對象,所以返回true,但是變數a不是,所以返回false


1.2

chr(i)

返回unicode代碼是i的字元

print(chr(97))

輸出的結果是:a

i的有效只範圍是0~1114111,超過範圍會報錯。


1.3

classmethod(function)

把類函數當作類的一個方法返回。類方法第一個參數是指明類,跟類中函數一樣,第一個參數是指明類執行個體。類方法修飾符採用下面的格式來使用:


class C:


@classmethod


def f(cls, arg1, arg2, ...):


...


從上面格式來看,@classmethod是函數在前置的一個修飾符,可以查看語言參考手冊。經過類方法修飾符的函數,可以直接通過類來調用,比如C.f()方式;也可以通執行個體的方式來調用,比如C().f()方式,但這個執行個體在這個函數裡被忽略掉了,沒起到什麼作用。如果類方法修飾符的函數,在繼承類時,衍生類別作為第一個參數傳遞給這個函數,也就是cls等於衍生類別。


 


類方法修飾符定義的函數與C++或JAVA裡靜態函數是不一樣的,如果要相似的功能,需要使用另外一個修飾符staticmethod。


classmethod設計的目的是什麼呢?其實與Python物件導向編程有關的,因為Python不支援多個的參數重載建構函式,比如在C++裡,建構函式可以根據參數個數不一樣,可以寫多個建構函式。Python為瞭解決這個問題,採用classmethod修飾符的方式,這樣定義出來的函數就可以在類對象執行個體化之前調用這些函數,就相當於多個建構函式,解決多個建構函式的代碼寫在類外面的問題。


與修飾符staticmethod的區別是類方法有一個型別參數,而靜態方法沒有。靜態方法主要用來解決全域函數的範圍的問題,而類方法是解決多個建構函式的問題,因此應用場境不一樣。

1.3這個函數的說明引用來自csdn:http://blog.csdn.net/caimouse/article/details/41016797


1.4

complex([real[,imag])

大多數有語言基礎的應該都很瞭解這個complex不管入門哪種語言,感覺剛開始都回去寫一個複數類

complex([real[,imag]])

返回一個複數,並且格式是:

real + imag * j

當然,你可以把一個字串或者一個數字轉換為一個複數,如果第一個參數real就是一個字串,那麼這個字串就會被理解成複數。並且不需要第二個參數

complex就會立即執行。字串只能是第一個參數,第二個參數絕不可能是字串的。當你傳入的參數是字串,這個字串一定不能包含空格,否則會報錯

請看幾個執行個體:

print(complex(1,2))

輸出的結果是:(1+2j)

print(complex(1))

輸出的結果是:(1+0j)

print(complex(‘1+2j‘))

輸出的結果是:(1+2j)

print(complex(‘1 + 2j‘))

報錯:ValueError: complex() arg is a malformed string


1.5

delattr(object,name)

函數的參數包括一個obj和一個字串,字串必須是obj的屬性,這個函數刪除指定的屬性。

class example:

pass

a = example()

setattr(a,‘ok‘,‘hello‘)

print(‘before--a.ok:‘,a.ok)

delattr(a,‘ok‘)

print(‘after--a.ok:‘,a.ok)

看看輸出的結果:

before--a.ok: hello

Traceback (most recent call last):

  File "D:\Python\xode\try.py", line 7, in <module>

    print(‘after--a.ok:‘,a.ok)

AttributeError: ‘example‘ object has no attribute ‘ok‘

顯然,a的‘ok‘屬性被刪除。


1.6

dir([object])

參數object可選,當沒有參數時,返回當前範圍內的列表名;有參數的時候,試圖返回該對象的有效屬性列表

如果這個對象有一個方法名:__dir__(),這個方法將被調用並且返回其屬性列表。如果對象沒有提供__dir__()

,這個函數會試圖去從對象的__dict__屬性收集資訊。

這是python3.4.3文檔給出的例子:

>>> import struct

>>> dir()   # show the names in the module namespace

[‘__builtins__‘, ‘__name__‘, ‘struct‘]

>>> dir(struct)   # show the names in the struct module 

[‘Struct‘, ‘__all__‘, ‘__builtins__‘, ‘__cached__‘, ‘__doc__‘, ‘__file__‘,

 ‘__initializing__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘,

 ‘_clearcache‘, ‘calcsize‘, ‘error‘, ‘pack‘, ‘pack_into‘,

 ‘unpack‘, ‘unpack_from‘]

>>> class Shape:

...     def __dir__(self):

...         return [‘area‘, ‘perimeter‘, ‘location‘]

>>> s = Shape()

>>> dir(s)

[‘area‘, ‘location‘, ‘perimeter‘]



1.7

divmod(a,b)

需要兩個數字參數,並且返回一系列由這兩個參數整除而產生的商和餘數

對於不同的操作符,運用二進位算術運算子

1.對於整數integers,這個函數的運算結果是(a//b,a%b)

2.對於浮點數float,這個函數的運算結果是(q,a%b),其中q = math.floor(a/b)

幾個執行個體:

print(divmod(15,4))

運算的結果是:(3, 3)

print(divmod(15.2,4))

運算的結果是:(3.0, 3.1999999999999993)

print(divmod(15.2,0))

ZeroDivisionError: float divmod()


1.8

enumerate(iterable,start = 0)

返回一個枚舉(enumerate)對象,iterable必須是一個可以迭代的對象,

people = [‘girl‘,‘boy‘,‘man‘,‘woman‘]

print(list(enumerate(people)))

返回的結果是:

[(0, ‘girl‘), (1, ‘boy‘), (2, ‘man‘), (3, ‘woman‘)]

如果這樣

print(list((enumerate(people,start = 5))))

返回的結果是:

[(5, ‘girl‘), (6, ‘boy‘), (7, ‘man‘), (8, ‘woman‘)]

可以看出第二個參數start是開始枚舉開始的序號。預設是0。



1.9

eval(expression, globals=None, locals=None)

參數是一個字串,和可選的全域和本地,如果提供了全域這個參數,那麼

全域參數必須是一個字典對象。如果提供本地參數,本地必須是映射對象。

x = 1

print(eval(‘x+1‘))

輸出是:2


江蘇南京   鐘志遠  904727147

python內建函數(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.