內置函數&匿名函數



1、數學運算類

函數名函數功能備註
abs(x)求絕對值1、參數可以是整型,也可以是複數2、若參數是複數,則返回複數的模
complex([real[, imag]])創建一個複數
divmod(a, b)分別取商和餘數注意:整型、浮點型都可以,返回值爲一個元組
float([x])將一個字符串或數轉換爲浮點數。如果無參數將返回0.0
int([x[, base]])將一個字符轉換爲int類型base表示進制
  1. >>> int('0xa',16)  

  2. 10  

  3. >>> int('10',8)  

  4. 8  

  5. >>> int('12',16)  

  6. 18  

long([x[, base]])將一個字符轉換爲long類型
pow(x, y[, z])返回x的y次冪 Equivalent to x**y (with two arguments) or x**y % z (with three arguments)
range([start], stop[, step])產生一個序列默認從0開始
round(x[, n])四捨五入n : 保留小數點後n位,默認爲0
sum(iterable[, start])對集合求和
oct(x)將一個數字轉化爲8進制
hex(x)將整數x轉換爲16進制字符串
chr(i)返回整數i對應的ASCII字符
bin(x)將整數x轉換爲二進制字符串
bool([x])將x轉換爲Boolean類型

2. 集合類操作

函數名稱函數功能備註
basestring()str和unicode的超類不能直接調用,可以用作isinstance判斷
format(value [, format_spec])格式化輸出字符串格式化的參數順序從0開始,如“I am {0},I like {1}”
unichr(i)返回給定int類型的unicode
enumerate(sequence [, start = 0])返回一個可枚舉的對象該對象的next()方法將返回一個tuple
iter(o[, sentinel])生成一個對象的迭代器,第二個參數表示分隔符
max(iterable[, args…][key])返回集合中的最大值
min(iterable[, args…][key])返回集合中的最小值
dict([arg])創建數據字典
list([iterable])將一個集合類轉換爲另外一個集合類
set()set對象實例化
frozenset([iterable])產生一個不可變的set
str([object])轉換爲string類型
sorted(iterable[, cmp[, key[, reverse]]])隊集合排序
tuple([iterable])生成一個tuple類型
xrange([start], stop[, step])xrange()函數與range()類似,但xrnage()並不創建列表,而是返回一個xrange對象它的行爲與列表相似,但是隻在需要時才計算列表值,當列表很大時,這個特性能爲我們節省內存

3. 邏輯判斷

函數名稱函數功能備註
all(iterable)集合中的元素都爲真的時候爲真特別的,若爲空串返回爲True
any(iterable)1、集合中的元素有一個爲真的時候爲真特別的,若爲空串返回爲False
cmp(x, y)如果x < y ,返回負數;x == y, 返回0;x > y,返回正數

4. 映射

函數名稱函數功能備註
callable(object)檢查對象object是否可調用1、類是可以被調用的2、實例是不可以被調用的,除非類中聲明瞭call方法
classmethod()註解,用來說明這個方式是個類方法類方法即可被類調用,也可以被實例調用,類方法類似於Java中的static方法,類方法中不需要有self參數
compile(source, filename, mode[, flags[, dont_inherit]])將source編譯爲代碼或者AST對象代碼對象能夠通過exec語句來執行或者eval()進行求值。
dir([object])1、不帶參數時,返回當前範圍內的變量、方法和定義的類型列表;2、帶參數時,返回參數的屬性、方法列表。3、如果參數包含方法dir(),該方法將被調用。當參數爲實例時。4、如果參數不包含dir(),該方法將最大限度地收集參數信息delattr(object, name) 刪除object對象名爲name的屬性
eval(expression [, globals [, locals]])計算表達式expression的值
execfile(filename [, globals [, locals]])用法類似exec(),不同的是execfile的參數filename爲文件名,而exec的參數爲字符串。
filter(function, iterable)構造一個序列,等價於[ item for item in iterable if function(item)]1、參數function:返回值爲True或False的函數,可以爲None2、參數iterable:序列或可迭代對象
getattr(object, name [, defalut])獲取一個類的屬性
globals()返回一個描述當前全局符號表的字典
hasattr(object, name)判斷對象object是否包含名爲name的特性
hash(object)如果對象object爲哈希表類型,返回對象object的哈希值
id(object)返回對象的唯一標識
isinstance(object, classinfo)判斷object是否是class的實例
issubclass(class, classinfo)判斷是否是子類
len(s)返回集合長度
locals()返回當前的變量列表
map(function, iterable, …)遍歷每個元素,執行function操作
memoryview(obj)返回一個內存鏡像類型的對象
next(iterator[, default])類似於iterator.next()
object()基類
property([fget[, fset[, fdel[, doc]]]])屬性訪問的包裝類,設置後可以通過c.x=value等來訪問setter和getter
reduce(function, iterable[, initializer])合併操作,從第一個開始是前兩個參數,然後是前兩個的結果與第三個合併進行處理,以此類推
reload(module)重新加載模塊
setattr(object, name, value)設置屬性值
repr(object)將一個對象變換爲可打印的格式
slice()

staticmethod聲明靜態方法,是個註解
super(type[, object-or-type])引用父類
type(object)返回該object的類型
vars([object])返回對象的變量,若無參數與dict()方法類似
bytearray([source [, encoding [, errors]]])返回一個byte數組1、如果source爲整數,則返回一個長度爲source的初始化數組;2、如果source爲字符串,則按照指定的encoding將字符串轉換爲字節序列;3、如果source爲可迭代類型,則元素必須爲[0 ,255]中的整數;4、如果source爲與buffer接口一致的對象,則此對象也可以被用於初始化bytearray.
zip([iterable, …])

5.IO操作

函數名稱函數功能備註
file(filename [, mode [, bufsize]])file類型的構造函數,作用爲打開一個文件,如果文件不存在且mode爲寫或追加時,文件將被創建。添加‘b’到mode參數中,將對文件以二進制形式操作。添加‘+’到mode參數中,將允許對文件同時進行讀寫操作1、參數filename:文件名稱。2、參數mode:’r’(讀)、’w’(寫)、’a’(追加)。3、參數bufsize:如果爲0表示不進行緩衝,如果爲1表示進行行緩衝,如果是一個大於1的數表示緩衝區的大小 。
input([prompt])獲取用戶輸入推薦使用raw_input,因爲該函數將不會捕獲用戶的錯誤輸入
open(name[, mode[, buffering]])打開文件
print打印函數
raw_input([prompt])設置輸入輸入都是作爲字符串處理

6. help()–幫助信息



&內置方法


 內置方法 說明
 __init__(self,...) 初始化對象,在創建新對象時調用
 __del__(self) 釋放對象,在對象被刪除之前調用
 __new__(cls,*args,**kwd) 實例的生成操作
 __str__(self) 在使用print語句時被調用
 __getitem__(self,key) 獲取序列的索引key對應的值,等價於seq[key]
 __len__(self) 在調用內聯函數len()時被調用
 __cmp__(stc,dst) 比較兩個對象src和dst
 __getattr__(s,name) 獲取屬性的值
 __setattr__(s,name,value) 設置屬性的值
 __delattr__(s,name) 刪除name屬性
 __getattribute__() __getattribute__()功能與__getattr__()類似
 __gt__(self,other) 判斷self對象是否大於other對象
 __lt__(slef,other) 判斷self對象是否小於other對象
 __ge__(slef,other) 判斷self對象是否大於或者等於other對象
 __le__(slef,other) 判斷self對象是否小於或者等於other對象
 __eq__(slef,other) 判斷self對象是否等於other對象
 __call__(self,*args) 把實例對象作爲函數調用

__init__():
__init__方法在類的一個對象被建立時,馬上運行。這個方法可以用來對你的對象做一些你希望的初始化。注意,這個名稱的開始和結尾都是雙下劃線。
代碼例子:

#!/usr/bin/python
# Filename: class_init.py
class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print 'Hello, my name is', self.name

p = Person('Swaroop')
p.sayHi()

輸出:
Hello, my name is Swaroop

   說明:__init__方法定義爲取一個參數name(以及普通的參數self)。在這個__init__裏,我們只是創建一個新的域,也稱爲name。注意它們是兩個不同的變量,儘管它們有相同的名字。點號使我們能夠區分它們。最重要的是,我們沒有專門調用__init__方法,只是在創建一個類的新實例的時候,把參數包括在圓括號內跟在類名後面,從而傳遞給__init__方法。這是這種方法的重要之處。現在,我們能夠在我們的方法中使用self.name域。這在sayHi方法中得到了驗證。


__new__():
__new__()在__init__()之前被調用,用於生成實例對象.利用這個方法和類屬性的特性可以實現設計模式中的單例模式.單例模式是指創建唯一對象嗎,單例模式設計的類只能實例化一個對象.


#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Singleton(object):
    __instance = None                       # 定義實例

    def __init__(self):
        pass

    def __new__(cls, *args, **kwd):         # 在__init__之前調用
        if Singleton.__instance is None:    # 生成唯一實例
            Singleton.__instance = object.__new__(cls, *args, **kwd)
        return Singleton.__instance

   


__getattr__()、__setattr__()和__getattribute__():
當讀取對象的某個屬性時,python會自動調用__getattr__()方法.例如,fruit.color將轉換爲fruit.__getattr__(color).當使用賦值語句對屬性進行設置時,python會自動調用__setattr__()方法.__getattribute__()的功能與__getattr__()類似,用於獲取屬性的值.但是__getattribute__()能提供更好的控制,代碼更健壯.注意,python中並不存在__setattribute__()方法.
代碼例子:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Fruit(object):
    def __init__(self, color = "red", price = 0):
        self.__color = color
        self.__price = price
        
    def __getattribute__(self, name):               # 獲取屬性的方法
        return object.__getattribute__(self, name)

    def __setattr__(self, name, value):
        self.__dict__[name] = value

if __name__ == "__main__":
    fruit = Fruit("blue", 10)
    print fruit.__dict__.get("_Fruit__color")       # 獲取color屬性
    fruit.__dict__["_Fruit__price"] = 5
    print fruit.__dict__.get("_Fruit__price")       # 獲取price屬性

   


__getitem__():
如果類把某個屬性定義爲序列,可以使用__getitem__()輸出序列屬性中的某個元素.假設水果店中銷售多鍾水果,可以通過__getitem__()方法獲取水果店中的沒種水果
代碼例子:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

class FruitShop:
     def __getitem__(self, i):      # 獲取水果店的水果
         return self.fruits[i]      

if __name__ == "__main__":
    shop = FruitShop()
    shop.fruits = ["apple", "banana"]
    print shop[1]
    for item in shop:               # 輸出水果店的水果
        print item,

輸出爲:
banana
apple banana

   


__str__():
__str__()用於表示對象代表的含義,返回一個字符串.實現了__str__()方法後,可以直接使用print語句輸出對象,也可以通過函數str()觸發__str__()的執行.這樣就把對象和字符串關聯起來,便於某些程序的實現,可以用這個字符串來表示某個類
代碼例子:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Fruit:      
    '''Fruit類'''               #爲Fruit類定義了文檔字符串
    def __str__(self):          # 定義對象的字符串表示
        return self.__doc__

if __name__ == "__main__":
    fruit = Fruit()
    print str(fruit)            # 調用內置函數str()出發__str__()方法,輸出結果爲:Fruit類
    print fruit                 #直接輸出對象fruit,返回__str__()方法的值,輸出結果爲:Fruit類

   


__call__():
在類中實現__call__()方法,可以在對象創建時直接返回__call__()的內容.使用該方法可以模擬靜態方法
代碼例子:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Fruit:
    class Growth:        # 內部類
        def __call__(self):
            print "grow ..."

    grow = Growth()      # 調用Growth(),此時將類Growth作爲函數返回,即爲外部類Fruit定義方法grow(),grow()將執行__call__()內的代碼
if __name__ == '__main__':
    fruit = Fruit()
    fruit.grow()         # 輸出結果:grow ...
    Fruit.grow()         # 輸出結果:grow ...

   


匿名函數

python 使用 lambda 來創建匿名函數。

所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。

  • lambda 只是一個表達式,函數體比 def 簡單很多。

  • lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。

  • lambda 函數擁有自己的命名空間,且不能訪問自有參數列表之外或全局命名空間裏的參數。

  • 雖然lambda函數看起來只能寫一行,卻不等同於C或C++的內聯函數,後者的目的是調用小函數時不佔用棧內存從而增加運行效率。

語法

lambda 函數的語法只包含一個語句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

如下實例:

#!/usr/bin/python3
 # 可寫函數說明sum = lambda arg1, arg2: arg1 + arg2;
 # 調用sum函數print ("相加後的值爲 : ", sum( 10, 20 ))print ("相加後的值爲 : ", sum( 20, 20 ))


轉載至:http://xukaizijian.blog.163.com/blog/static/170433119201111894228877/

http://blog.csdn.net/jinxiaonian11/article/details/53518354


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章