自學Python3.3-函數分類(內置函數補充)

自學Python之路-Python基礎+模塊+面向對象
自學Python之路-Python網絡編程
自學Python之路-Python併發編程+數據庫+前端
自學Python之路-djangohtml

自學Python3.3-函數分類(內置函數補充)

內置函數,自定義函數,匿名函數前端

內置函數(python3.x)

1、做用域相關

1.1 globals()  返回全局做用域內全部python

1.2 locals() 返回當前做用域內全部
算法

  • 函數功能返回當前做用域內的局部變量和其值組成的字典,與globals函數相似(返回全局變量)
  • 可用於函數內
  • 返回的字典集合不能修改

2、迭代器/生成器相關 

2.1 next()     next(迭代器) #相等於 迭代器.__next__()數據庫

  • 函數必須接收一個可迭代對象參數,每次調用的時候,返回可迭代對象的下一個元素。若是全部元素均已經返回過,則拋出StopIteration異常。
  • 函數能夠接收一個可選的default參數,傳入default參數後,若是可迭代對象還有元素沒有返回,則依次返回其元素值,若是全部元素已經返回,則返回default指定的默認值而不拋出StopIteration 異常。

2.2  iter()    迭代器 = iter(可迭代的) #相等於 迭代器 = 可迭代的.__iter__()django

  • 函數功能返回一個迭代器對象。
  • 當第二個參數不提供時,第一個參數必須是一個支持可迭代協議(即實現了__iter__()方法)的集合(字典、集合、不可變集合),或者支持序列協議(即實現了__getitem__()方法,方法接收一個從0開始的整數參數)的序列(元組、列表、字符串),不然將報錯。
  • 當第二個參數sentinel提供時,第一個參數必須是一個可被調用對象。建立的迭代對象,在調用__next__方法的時候會調用這個可被調用對象,當返回值和sentinel值相等時,將拋出StopIteration參數必須是一個可被異常, 終止迭代。

 

2.3  range()    迭代器 = iter(可迭代的) #相等於 迭代器 = 可迭代的.__iter__()編程

  • range函數用於生成一個range對象,range類型是一個表示整數範圍的類型。 
  • 能夠直接傳入一個結束整數來初始化一個range類型,默認起始值爲0(包含0).結束整數能夠大於0,也能夠小於等於0,可是小於等於0的時候生成的range對象實際是不包含任何元素的。
  • 能夠傳入一個起始整數和一個結束整數來初始化一個range類型,生成的range類型包含起始整數(包含),和結束整數(不包含)之間的全部整數。
  • 傳入了起始整數和結束整數,還能夠同時傳入一個步進值來初始化一個range類型,生成的range類型包含起始整數(包含),和結束整數(不包含)之間的以步進值篩選後的整數。
  • 初始化range類型時起始整數和結束整數,遵循的是左臂右開原則,即包含起始整數,但不包含結束整數。
  •  range接收的參數都必須是整數,不能是浮點數等其它數據類型。
  • range其實是一個不可變的序列類型,能夠對它進行取元素、切片等序列操做,可是不能對其中元素修改值。
range(10)
range(1,11)
range(1,11,2)  

 range是一個可迭代的,但不是迭代器。python3.x

 

3、和反射相關 

 

4、和麪向對象相關

 

5、和基礎數據類型相關(其中包含兩類:和數字相關、和數據結構相關)

數字——數據類型相關:bool,int,float,complex緩存

數字——進制轉換相關:bin,oct,hex網絡

數字——數學運算:abs,divmod,min,max,sum,round,pow

序列——列表和元組相關的:list和tuple

序列——相關內置函數:reversed,slice

序列——字符串相關的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr

數據集合——字典:dict

數據集合——集合:set,frozenset

相關內置函數:len,sorted,enumerate,all,any,zip,filter,map

6、 其餘的

6.1  字符串類型代碼的執行

6.1.1  eval() 將字符串類型的代碼執行並返回結果

print(eval('1+2+3+4'))

6.1.2  exec()將自字符串類型的代碼執行

print(exec("1+2+3+4"))
exec("print('hello,world')")

6.1.3  compile  將字符串類型的代碼編譯。代碼對象可以經過exec語句來執行或者eval()進行求值。

參數說明: 

  • 參數source:字符串或者AST(Abstract Syntax Trees)對象。即須要動態執行的代碼段。  
  • 參數 filename:代碼文件名稱,若是不是從文件讀取代碼則傳遞一些可辨認的值。當傳入了source參數時,filename參數傳入空字符便可。  
  • 參數model:指定編譯代碼的種類,能夠指定爲 ‘exec’,’eval’,’single’。當source中包含流程語句時,model應指定爲‘exec’;當source中只包含一個簡單的求值表達式,model應指定爲‘eval’;當source中包含了交互式命令語句,model應指定爲'single'。

流程語句使用exec()

簡單求值表達式用eval()

6.2 輸入輸出相關

6.2.1 input() 輸入

6.2.2 print() 輸出

def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    file:  默認是輸出到屏幕,若是設置爲文件句柄,輸出到文件
    sep:   打印多個值之間的分隔符,默認爲空格
    end:   每一次打印的結尾,默認爲換行符
    flush: 當即把內容輸出到流文件,不做緩存
    """

 

f = open('tmp_file','w')
print(123,456,sep=',',file = f,flush=True)

舉例子:打印進度條

import time
for i in range(0,101,2):  
     time.sleep(0.1)
     char_num = i//2      # 打印多少個'*'
     per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
     print(per_str,end='', flush=True)  # \r 能夠把光標移動到行首但不換行  

6.3 內存相關

6.3.1 id(o) o是參數,返回一個變量的內存地址

6.3.2 hash(o) o是參數,返回一個可hash變量的哈希值,不可hash的變量被hash以後會報錯。hash函數會根據一個內部的算法對當前可hash變量進行處理,返回一個int數字。

                                        每一次執行程序,內容相同的變量hash值在這一次執行過程當中不會發生改變。

 

6.4 文件操做相關

open()  打開一個文件,返回一個文件操做符(文件句柄)

操做文件的模式有r,w,a,r+,w+,a+ 共6種,每一種方式均可以用二進制的形式操做(rb,wb,ab,rb+,wb+,ab+),能夠用encoding指定編碼.

6.5 模塊操做相關

 __import__導入一個模塊

import time  # 導入時間模塊

6.6 幫助

在控制檯執行help()進入幫助模式。能夠隨意輸入變量或者變量的類型。輸入q退出

或者直接執行help(o),o是參數,查看和變量o有關的操做。

6.7 和調用相關

callable(o),o是參數,看這個變量是否是可調用。若是o是一個函數名,就會返回True。

  • 方法用來檢測對象是否可被調用,可被調用指的是對象可否使用()括號的方法調用;
  • 可調用對象,在實際調用也可能調用失敗;可是不可調用對象,調用確定不成功;
  • 類對象都是可被調用對象,類的實例對象是否可調用對象,取決於類是否認義了__call__方法。
def func():pass
print(callable(func))  #參數是函數名,可調用,返回True
print(callable(123))   #參數是數字,不可調用,返回False

6.8 查看參數所屬類型的全部內置方法

dir()默認查看全局空間內的屬性,也接受一個參數,查看這個參數內的方法或變量。

print(dir(list))  #查看列表的內置方法
print(dir(int))  #查看整數的內置方法

.....

相關文章
相關標籤/搜索