Python內(nèi)置函數(shù)和匿名函數(shù)

內(nèi)置函數(shù)

Python內(nèi)置了很多有用的函數(shù),我們可以直接調(diào)用。當(dāng)需要查詢某個函數(shù)的功能和說明時,可以通過查看官方文檔或者通過在Python shell中使用help(cmd)查看。

  1. 幾個常用的函數(shù):
    常用的內(nèi)置函數(shù)中文說明

    • abs() 求絕對值 >>> abs(-100)
    • max() 返回最大的值 >>>max(1,2,4,6,8)
    • int() 轉(zhuǎn)換為int類型 >>> int(10.12)
    • float() 轉(zhuǎn)換為浮點數(shù) >>> float('10.12')
    • str() 轉(zhuǎn)換為字符串 >>> str(100)
    • bool() 轉(zhuǎn)換為布爾,1為 True,空為False
    • hex() 轉(zhuǎn)換整數(shù)為16進制表示的字符串
    • all() 可迭代對象中所有的值都為真,則返回真,如果可迭代對象為空,返回真。 >>> all([]) 返回真
    • any() bool全為假的情況為假:None,空,0,F(xiàn)alse >>> any([]) 返回
    • globals() 查看全局作用域
    • locals() 查看局部作用域
    • pow() 取平方,并取余 >>> pow(3,2,2)
  2. 定義函數(shù)

    >>> def my_fun(x):
    ...     if x > 0:
    ...         return x
    ...     else:
    ...         return -x
    ... 
    >>> my_fun(9)
    9
    >>> my_fun(-8)
    8
    

    如果沒有return語句,函數(shù)執(zhí)行完畢后也會返回結(jié)果,只是結(jié)果為None。return None可以簡寫為return。

  3. 如果要調(diào)用另一個文件中的函數(shù),可以在文件開頭加上:from FILE_NAME import FUN_NAME

  4. 如果想定義一個什么事情都不做的空函數(shù)可以用pass這樣可以防止報錯(同理,也可以放在空語句中):

    def nop():
        pass
    

匿名函數(shù)

匿名函數(shù)沒有名字,函數(shù)體自帶return:

lambda x,y,z=1:x+y+z  # 將會自動返回冒號后面的值

匿名函數(shù)的應(yīng)用場景: 適用于一次使用,臨時使用的場景。

內(nèi)置函數(shù)和匿名函數(shù)的使用

內(nèi)置函數(shù)和匿名函數(shù)可以結(jié)合在一起,實現(xiàn)非常精巧的功能。
如:

# 比較字典中值的大小,并返回key的值
a={'tom':22,'boy':4,'coco':33,'dog':18}

方法一:交換字典key 和值的順序,直接進行比較:

#使用zip() 函數(shù)交換字典中的值
b=list(zip(a.values(),a.keys()))
print(b)
# 使用max(),取出key:
print(max(b)[1])

輸出結(jié)果:

[(22, 'tom'), (4, 'boy'), (33, 'coco'), (18, 'dog')]
coco
優(yōu)化之后就是:

# max() 自帶了遍歷功能,zip()會產(chǎn)生一個裝飾器,可省去list()
print(max(zip(a.values(),a.keys()))[1])  

方法二:結(jié)合max()參數(shù),使用匿名函數(shù),返回values

# 指定key的參數(shù),返回key值比較
print(max(a,key=lambda name:a[name]))

方法三: 使用sort()函數(shù),取值,排序

# reverse=True 表示反轉(zhuǎn)順序
print(sorted(a,key=lambda name:a[name],reverse=True)[0])

map

對列表信息進行改寫:

name=['a','b','c','d']

# map()得到的是一個迭代器,使用list遍歷
res=map(lambda x:x+'_df',name)
print(list(res))

# 也可以在匿名函數(shù)中做簡單的判斷
res1=map(lambda x:x if x=='a' else x+'xxx',name)
print(list(res1))

reduce

reduce() 用于合并一個序列,也可以以用于累加

#python3中先要導(dǎo)入模塊
from  functools import reduce
# 沒有指定初始值時,先取序列中的第一個值作為初始值
res=reduce(lambda x,y:x+y,range(101))
print(res)

輸出: 5050
也可以指定初始值100:

from  functools import reduce
res=reduce(lambda x,y:x+y,range(101),100)
print(res)

輸出: 5150

filter

filter()可以對數(shù)據(jù)進行過濾。

name = ['a_12', 'b_12', 'c_12', 'd']
res=filter(lambda s:s.endswith('12'),name)
print(list(res))

輸出:['a_12', 'b_12', 'c_12']

eval

eval可以使字符串以命令的方式運行:

cmd='print(x)'
eval(cmd,{'x':0},{'x'}:100) # 第一個表示全局變量,第二個參數(shù)表示局部變量,優(yōu)先選擇局部變量

輸出:100

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 前言 人生苦多,快來 Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,282評論 9 118
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,630評論 1 118
  • 計算機二級C語言上機題庫(南開版) 1.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平...
    MrSunbeam閱讀 6,478評論 1 42
  • 內(nèi)置函數(shù)Python解釋器內(nèi)置了許多功能和類型,總是可用的。他們是按字母順序列在這里。 abs(x)返回一個數(shù)的絕...
    uangianlap閱讀 1,272評論 0 0