1. 程式人生 > >函式--內建函式、匿名函式、

函式--內建函式、匿名函式、

一.內建函式。

二.匿名函式.

三、本節部分函式詳解.

 

一.內建函式。

作用域相關

 globals()——獲取全域性變數的字典
 locals()——獲取執行本方法所在名稱空間內的區域性變數的字典

 

 

 迭代器相關:

renge()  生成資料
next()   迭代器向下執行一次
iter()    獲取迭代器,內部實際使用的是__iter__()方法來獲取迭代器

 

 字串型別相關:

eval()  執⾏字串型別的程式碼. 並返回最終結果,有返回值的字串形式的程式碼用eval()
exec() 執⾏字串型別的程式碼,沒有返回值的字串形式的程式碼用exec() compile() 將字串型別的程式碼變異. 程式碼物件能夠通過exec語句來執⾏或者eval()進⾏求 值,很少用

 

 輸入輸出相關:

input()  獲取使用者輸入的內容
print()  列印輸出

 

 記憶體相關:

hash()  獲取到物件的雜湊值(int,str,bool,tuple)
id()    獲取到物件的記憶體地址

 

 檔案操作相關:

open()  用於開啟一個檔案,建立一個檔案控制代碼

 

 模擬相關:

__import__()   用於動態載入類和函式

 

 呼叫相關:

callable()  用於檢查一個物件是否是可呼叫的,如果返回True,object有可能呼叫失敗,但如何返回False,那呼叫絕對不會成功

 

 檢視內建屬性:

dir()    檢視物件的內建屬性,方法,訪問的是物件中的__idr__()方法

 

基礎資料型別相關:

數字相關:
        bool()  將給定的資料轉換成bool值. 如果不給值. 返回False
        int()     將給定的資料轉換成int值. 如果不給值, 返回0
        float()  將給定的資料轉換成float值. 也就是⼩數
        complex()  建立⼀個複數. 第⼀個引數為實部, 第⼆個引數為虛部. 或者第⼀個引數直接
⽤字串來描述複數
    進位制轉換:
        bin()    將給的引數轉換成⼆進位制
        otc()    將給的引數轉換成八進位制
        hex()    將給的引數轉換成⼗六進位制
    
數學運算:
        abs()            返回絕對值
        divmode()     返回商和餘數
        round()        四捨五入
        pow(a, b)    求a的b次冪, 如果有三個引數. 則求完次冪後對第三個數取餘
        sum()    求和
        min()    求最⼩值
        max()    求最⼤值

 

和資料結構相關:
    列表和元組:
        list()        將⼀個可迭代物件轉換成列表
        tuple()    將⼀個可迭代物件轉換成元組
        reversed()    將⼀個序列翻轉, 返回翻轉序列的迭代器
        slice()    列表的切片

 

字串相關:
        str()            將資料轉化成字串
        format()     與具體資料相關, ⽤於計算各種⼩數, 精算等

 

bytes()  把字串轉化成bytes型別
bytearray()    返回⼀個新位元組陣列. 這個數字⾥的元素是可變的, 並且每個元素的值得範圍是[0,256)
memoryview()  檢視bytes在記憶體中的情況
ord()    輸入字元找帶字元編碼的位置
chr()    輸入位置數字找出對應的字元
ascii()  是ascii碼中的返回該值 不是就返回\u...
repr()    返回⼀個物件的string形式,就是原封不動的輸出, 引號和轉義字元都不起作⽤
%r  原封不動的寫出來   name = 'taibai'  print('我叫%r' % name)

 

資料集合:
dict()  建立一個字典
set()   建立一個集合
frozenset()    建立一個凍結的集合,凍結的集合不能進行新增和刪除操作
其他相關:
len() 返回一個物件中的元素的個數
sorted()    對可迭代物件進行排序操作
enumerate()    獲取集合的列舉物件
    lst = ["alex","wusir","taibai"]
    for index,el in enumerate(lst):
        print(str(index)+"==>"+el)
all()  可迭代物件中全部都是True,結果才是True
any()   可迭代物件中有一個是True,結果就是True
zip()  函式用於將可迭代的物件作為引數,將物件總對應的元素打包成一個個元組,然後返回有這些元組組成的表,如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同.
filter()   過濾
map()   會根據提供的函式對指定序列做對映

 

二.匿名函式.

 匿名函式統意的名字是:  lambda

fn = lambda a,b :a+b  #定義一個很簡單的函式,複雜的函式不要用lambda
ret = fn(3,5)
print(ret)
print(func)
print(fn)  
 
#使用場景:配合著sorted,map,filter 一起使用

三、本節部分函式詳解。

sorted 排序函式,讓你自己取定義排序的規則

lst = [11,5,36,1,27,58]
s = sorted(lst)  #預設從小到大排序
print(s)

lst = ["胡一菲", "張偉", "關穀神奇", "曾小賢呂小布", "諾瀾"]
#按照字串長度排序
def func(s):
    return len(s)  #返回長度
執行流程:
把可迭代物件中的每一項拿出來,作為引數傳遞給後面key函式.函式返回數字,根據數字進行排序
s = sorted(lst,ky = func)
print(s)
print(sorted(lst,key=lambda s:len(s)))

 eval  函式是把字串型別的資料作為程式碼進行執行

s = "18+2"
ret = eval(s) # 執行字串型別的程式碼
print(ret)

s = "{'name':'alex', 'age':18, 'isMan':False}" # 字串
# 把字串型別的程式碼還原回字典, 列表, 元組
ret = eval(s) # 側重的有返回值
print(ret)
print(type(ret))

 

 exec execute 函式執行字串型別的程式碼,不能太長,不能太亂.

code = input("請輸入你要執行的程式碼")
exec(code) # 沒有返回值. 想要返回值用eval
print(a)   # pycharm報錯不一定準

 

 compile  函式編譯,把你要執行的程式碼先預編譯.通過exec和eval可以執行我們的程式碼

code = '''
for i in range(10):
    if i % 2 == 0:
        print(i)
'''

c = compile(code, "", "exec") # 預載入程式碼
# exec
exec(c) # 執行程式碼

# 可以使用complie寫一個程式設計大賽.

 map() 對映函式

lst = ["籃球", "打打檯球", "唱歌", "爬慌山", ""]
m = map(lambda s: "愛好:"+s , lst)
print(list(m))

lst = [1,5,78,12,16] # 計算每個數字的平方
print([i **2 for i in lst])
m = map(lambda i: i ** 2, lst)
print(list(m))

 

filter 過濾

lst = ["張無忌", "張翠山", "范冰冰", "金毛獅王", "李冰冰"]

過濾掉姓張的人
把可迭代物件開啟. 把內部元素一個一個的傳遞給前面的函式. 由這個函式決定此項是否保留
f = filter(lambda name : not name.startswith(""), lst)

print("__iter__" in dir(f)) # 可迭代物件
for el in f:
    print(el)