1. 程式人生 > >python3 內建函式

python3 內建函式

目前已經知道

abs() 絕對值

chr() 獲得對應的asc碼

dict() 轉化成字典

float() 轉換成浮點數

format() 字串 賦值

getattr() 獲取物件屬性

hasattr() 判斷物件是否有對應屬性

id() 檢視物件id

input() 輸入值

int() 轉換成整型

len() 物件長度

list() 轉化成列表

max() 最大值

min() 最小值

open() 開啟檔案

ord() 獲得對應asc碼的索引

print() 列印物件

range() 生成可迭代物件

set() 轉為集合

setattr() 給物件設定屬性

str() 轉化為字串

sum() 求和

tuple() 轉為元組

type() 檢視型別

bool() 將引數轉為布林型別

delattr() 刪除物件屬性

all()

all() 函式用於判斷給定的可迭代引數 iterable 中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。

元素除了是 0、空、FALSE 外都算 TRUE。

all(iterable)

返回布林值

any()

any() 函式用於判斷給定的可迭代引數 iterable 是否全部為 False,則返回 False,如果有一個為 True,則返回 True。

元素除了是 0、空、FALSE 外都算 TRUE。

any(iterable)

返回布林值

ascii()

ascii() 函式類似 repr() 函式, 返回一個表示物件的字串, 但是對於字串中的非 ASCII 字元則返回通過 repr() 函式使用 \x, \u 或 \U 編碼的字元。 生成字串類似 Python2 版本中 repr() 函式的返回值。

ascii(object)

返回字串

bin()

bin() 返回一個整數 int 或者長整數 long int 的二進位制表示。

bin(x)

返回字串

bytearray()

bytearray() 方法返回一個新位元組陣列。這個數組裡的元素是可變的,並且每個元素的值範圍: 0 <= x < 256。

bytearray([source[, encoding[, errors]]])

bytes()

bytes 函式返回一個新的 bytes 物件,該物件是一個 0 <= x < 256 區間內的整數不可變序列。它是 bytearray 的不可變版本

bytes([source[, encoding[, errors]]])

callable()

callable() 函式用於檢查一個物件是否是可呼叫的。如果返回True,object仍然可能呼叫失敗;但如果返回False,呼叫物件ojbect絕對不會成功。

對於函式, 方法, lambda 函式, 類, 以及實現了 call 方法的類例項, 它都返回 True。

callable(object)

返回布林值

classmethod() 修飾符

classmethod 修飾符對應的函式不需要例項化,不需要 self 引數,但第一個引數需要是表示自身類的 cls 引數,可以來呼叫類的屬性,類的方法,例項化物件等。

class A(object):
​ bar = 1
​ def func1(self):
​ print ('foo')
​ @classmethod
​ def func2(cls):
​ print ('func2')
​ print (cls.bar)
​ cls().func1() # 呼叫 foo 方法

A.func2() # 不需要例項化

輸出結果:

func2

1

foo

compile()

compile() 函式將一個字串編譯為位元組程式碼。

compile(source, filename, mode[, flags[, dont_inherit]])

引數

  • source -- 字串或者AST(Abstract Syntax Trees)物件。。
  • filename -- 程式碼檔名稱,如果不是從檔案讀取程式碼則傳遞一些可辨認的值。
  • mode -- 指定編譯程式碼的種類。可以指定為 exec, eval, single。
  • flags -- 變數作用域,區域性名稱空間,如果被提供,可以是任何對映物件。。
  • flags和dont_inherit是用來控制編譯原始碼時的標誌

返回值

返回表示式執行結果。

complex()

complex() 函式用於建立一個值為 real + imag * j 的複數或者轉化一個字串或數為複數。如果第一個引數為字串,則不需要指定第二個引數。。

complex([real[, imag]])

返回一個複數

dir()

dir() 函式不帶引數時,返回當前範圍內的變數、方法和定義的型別列表;帶引數時,返回引數的屬性、方法列表。如果引數包含方法dir(),該方法將被呼叫。如果引數不包含dir(),該方法將最大限度地收集引數資訊。

dir([object])

返回模組的屬性列表

divmod()

python divmod() 函式把除數和餘數運算結果結合起來,返回一個包含商和餘數的元組(a // b, a % b)

divmod(a, b)

enumerate()

enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。

enumerate(sequence, [start=0])

例項:

>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>>list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
______________________________
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
...    print(i, seq[i])
... 
輸出
0 one
1 two
2 three

eval()

eval() 函式用來執行一個字串表示式,並返回表示式的值

eval(expression[, globals[, locals]])

引數

  • expression -- 表示式。
  • globals -- 變數作用域,全域性名稱空間,如果被提供,則必須是一個字典物件。
  • locals -- 變數作用域,區域性名稱空間,如果被提供,可以是任何對映物件。

返回表示式計算結果

exec()

exec 執行儲存在字串或檔案中的 Python 語句,相比於 eval,exec可以執行更復雜的 Python 程式碼。

exec(object[, globals[, locals]])

引數

  • object:必選引數,表示需要被指定的Python程式碼。它必須是字串或code物件。如果object是一個字串,該字串會先被解析為一組Python語句,然後在執行(除非發生語法錯誤)。如果object是一個code物件,那麼它只是被簡單的執行。
  • globals:可選引數,表示全域性名稱空間(存放全域性變數),如果被提供,則必須是一個字典物件。
  • locals:可選引數,表示當前區域性名稱空間(存放區域性變數),如果被提供,可以是任何對映物件。如果該引數被忽略,那麼它將會取與globals相同的值。

返回值為None

filter()

filter() 函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

該接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中。

filter(function, iterable)

返回列表

frozenset()

frozenset() 返回一個凍結的集合,凍結後集合不能再新增或刪除任何元素。

frozenset([iterable])

返回一個frozenset物件 如果不提供引數,預設生成空集合

globals()

globals() 函式會以字典型別返回當前位置的全部全域性變數。

globals()

返回全域性變數的字典

hash()

hash() 用於獲取取一個物件(字串或者數值等)的雜湊值。

hash(object)

返回物件的hash值

help()

help() 函式用於檢視函式或模組用途的詳細說明。

help(object)

返回物件的幫助資訊

hex()

hex() 函式用於將10進位制整數轉換成16進位制,以字串形式表示。

hex(x)

返回字串

isinstance()

isinstance() 函式來判斷一個物件是否是一個已知的型別,類似 type()。

isinstance(object, classinfo)

引數

  • object -- 例項物件。
  • classinfo -- 可以是直接或間接類名、基本型別或者由它們組成的元組。

返回布林值

issubclass()

issubclass() 方法用於判斷引數 class 是否是型別引數 classinfo 的子類。

issubclass(class, classinfo)

返回布林值

iter()

iter() 函式用來生成迭代器。

iter(object[, sentinel])

引數

  • object -- 支援迭代的集合物件。
  • sentinel -- 如果傳遞了第二個引數,則引數 object 必須是一個可呼叫的物件(如,函式),此時,iter 建立了一個迭代器物件,每次呼叫這個迭代器物件的next()方法時,都會呼叫 object。

返回迭代器物件

locals()

locals() 函式會以字典型別返回當前位置的全部區域性變數。

對於函式, 方法, lambda 函式, 類, 以及實現了 call 方法的類例項, 它都返回 True。

locals()

返回

以字典形式返回所有區域性變數

map()

map() 會根據提供的函式對指定序列做對映。

第一個引數 function 以引數序列中的每一個元素呼叫 function 函式,返回包含每次 function 函式返回值的新列表。

map(function, iterable, ...)

引數

  • function -- 函式,有兩個引數
  • iterable -- 一個或多個序列

返回 迭代器

例項:

>>>def square(x) :            # 計算平方數
...     return x ** 2
... 
>>> map(square, [1,2,3,4,5])   # 計算列表各個元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函式
[1, 4, 9, 16, 25]
 
# 提供了兩個列表,對相同位置的列表資料進行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]

memoryview()

memoryview() 函式返回給定引數的記憶體檢視物件(Momory view)。

所謂記憶體檢視物件,是指對支援緩衝區協議的資料進行包裝,在不需要複製物件基礎上允許Python程式碼訪問。

memoryview(obj)

返回元組列表

oct()

oct() 函式將一個整數轉換成8進位制字串。

oct(x)

返回字串

pow()

pow() 方法返回 (x的y次方) 的值。

#math 模組的pow方法
import math
math.pow( x, y )
# 內建的pow()
pow(x, y[, z])

函式是計算x的y次方,如果z在存在,則再對結果進行取模,其結果等效於pow(x,y) %z

注意:pow() 通過內建的方法直接呼叫,內建方法會把引數作為整型,而 math 模組則會把引數轉換為 float。

返回 xy(x的y次方) 的值。

property()

property() 函式的作用是在新式類中返回屬性值。也可以作為裝飾器

property([fget[, fset[, fdel[, doc]]]])

引數

  • fget -- 獲取屬性值的函式
  • fset -- 設定屬性值的函式
  • fdel -- 刪除屬性值函式
  • doc -- 屬性描述資訊

返回新式類屬性

reversed()

reversed 函式返回一個反轉的迭代器。

reversed(seq)

引數

  • seq -- 要轉換的序列,可以是 tuple, string, list 或 range。

返回一個反轉的迭代器

round()

round() 方法返回浮點數x的四捨五入值。

round( x [, n]  )

引數

  • x -- 數字表達式。
  • n -- 表示從小數點位數,其中 x 需要四捨五入,預設值為 0。

返回浮點數的四捨五入值

slice()

slice() 函式實現切片物件,主要用在切片操作函式裡的引數傳遞。

slice(stop)
slice(start, stop[, step])

引數

  • start -- 起始位置
  • stop -- 結束位置
  • step -- 間距

例項:

>>>myslice = slice(5)    # 設定擷取5個元素的切片
>>> myslice
slice(None, 5, None)
>>> arr = range(10)
>>> arr
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> arr[myslice]         # 擷取 5 個元素
[0, 1, 2, 3, 4]
>>>

sorted()

sorted() 函式對所有可迭代的物件進行排序操作。

sort 與 sorted 區別:

sort 是應用在 list 上的方法,sorted 可以對所有可迭代的物件進行排序操作。

list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函式 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。

sorted(iterable, key=None, reverse=False)  

引數

  • iterable -- 可迭代物件。
  • key -- 主要是用來進行比較的元素,只有一個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的一個元素來進行排序。
  • reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(預設)。

返回重新排序的列表

例項:

>>>example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]

staticmethod()

python staticmethod 返回函式的靜態方法。 裝飾器

該方法不強制要求傳遞引數,如下宣告一個靜態方法:

class C(object):
    @staticmethod
    def f(arg1, arg2, ...):
        ...

以上例項聲明瞭靜態方法 f,類可以不用例項化就可以呼叫該方法 C.f(),當然也可以例項化後呼叫 C().f()。

staticmethod(function)

super()

super() 函式是用於呼叫父類(超類)的一個方法。

super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序(MRO)、重複呼叫(鑽石繼承)等種種問題。

MRO 就是類的方法解析順序表, 其實也就是繼承父類方法時的順序表。

super(type[, object-or-type])

引數

  • type -- 類。
  • object-or-type -- 類,一般是 self

例項:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class FooParent(object):
    def __init__(self):
        self.parent = 'I\'m the parent.'
        print ('Parent')
    
    def bar(self,message):
        print ("%s from Parent" % message)
 
class FooChild(FooParent):
    def __init__(self):
        # super(FooChild,self) 首先找到 FooChild 的父類(就是類 FooParent),然後把類B的物件 FooChild 轉換為類 FooParent 的物件
        super(FooChild,self).__init__()    
        print ('Child')
        
    def bar(self,message):
        super(FooChild, self).bar(message)
        print ('Child bar fuction')
        print (self.parent)
 
if __name__ == '__main__':
    fooChild = FooChild()
    fooChild.bar('HelloWorld')

執行結果

Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.

var()

vars() 函式返回物件object的屬性和屬性值的字典物件。

vars([object])

返回

返回物件object的屬性和屬性值的字典物件,如果沒有引數,就列印當前呼叫位置的屬性和屬性值 類似 locals()。

zip()

zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的物件,這樣做的好處是節約了不少的記憶體。

我們可以使用 list() 轉換來輸出列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。

zip([iterable, ...])

例項:

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一個物件
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 轉換為列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素個數與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
 
>>> a1, a2 = zip(*zip(a,b))          # 與 zip 相反,*zip 可理解為解壓,返回二維矩陣式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>