[python] 之 函数简介
函數(shù)是對(duì)程序邏輯進(jìn)行結(jié)構(gòu)化或過程化的一種編程方法,詳細(xì)的說明請(qǐng)參考《python學(xué)習(xí)手冊(cè)》,不能及時(shí)詳細(xì)解釋,望見諒!。
一、創(chuàng)建函數(shù)
1.1 def語(yǔ)句
def function(args):
"documentation"
function_body_suite
1.2 聲明、定義與參數(shù)
聲明指定義了函數(shù)名和參數(shù)(名),未定義函數(shù)主體代碼塊
定義指定義函數(shù)主體代碼塊
參數(shù)主要包含位置參數(shù),默認(rèn)參數(shù),非關(guān)鍵字參數(shù)(*args),關(guān)鍵字參數(shù)(**kargs),且在創(chuàng)建函數(shù)時(shí),必須遵循這個(gè)順序。非關(guān)鍵字參數(shù)(*args),關(guān)鍵字參數(shù)(**kargs)在創(chuàng)建函數(shù)中使用,可收集參數(shù);在調(diào)用中使用,可解包參數(shù)。謹(jǐn)記默認(rèn)可變參數(shù)陷阱。
1.3 前向引用
python中,函數(shù)不存在前向引用的規(guī)則(誰先定義無影響,甚至是無順序的嵌套),只需要滿足在調(diào)用前定義即可
def foo()
print('foo')
bar()
def bar()
print('bar')
foo()
1.4 屬性
通過句點(diǎn)屬性標(biāo)識(shí)法進(jìn)行訪問和添加屬性,函數(shù)的屬性與函數(shù)對(duì)象有關(guān),和函數(shù)的作用域無關(guān)
1.5 內(nèi)嵌函數(shù)
在函數(shù)體內(nèi)創(chuàng)建另一個(gè)函數(shù)
1.6 函數(shù)裝飾器
@decorator(dec_opt_args)
def function(args):
"doc"
body_suite
#for example
@g
@f
def foo():
pass
foo = g(f(foo))
1.7 偏函數(shù)
from functools import partial
add1 = partial(add, 1) ?# add1(x) = add(1, x)
baseTwo = partial(int,base=2) #將參數(shù)base=2,固定為int函數(shù)的固定參數(shù)。
1.8 閉包 函數(shù)
如果在一個(gè)內(nèi)部函數(shù)里,對(duì)在外部作用域(但不是在全局可作用域)的變量進(jìn)行引用,那么這個(gè)內(nèi)部函數(shù)就是一閉包,并具有記憶性。
1.9 遞歸
如果函數(shù)包含了對(duì)其自身的調(diào)用,該函數(shù)就是遞歸函數(shù)
def factorial(n):
if n == 1 or n == 0:
return 1
else:
return (n*factorial(n-1))
1.10 函數(shù)式編程
lambda [arg1 [, arg2, ...]]:expr
lambda表達(dá)式返回可調(diào)用的函數(shù)對(duì)象。
1.11 內(nèi)建函數(shù)
map(),filter(),reduce()均創(chuàng)建了迭代語(yǔ)境,類似與for
map(func, seqs)遍歷序列中的每一個(gè)元素,并通過func函數(shù)處理,返回所有值組成的列表
filter(func, seqs)遍歷序列中的每一個(gè)元素,保留函數(shù)返回為布爾真的元素,將所有的值添加到一個(gè)列表中并返回
reduce(func, seqs)取出序列的前兩個(gè)元素,傳入二元函數(shù)func來獲得一個(gè)單一的值,然后將該值同下一個(gè)元素,再次傳入二元函數(shù)func,一次運(yùn)算處理序列,直至結(jié)束。
轉(zhuǎn)載于:https://www.cnblogs.com/xiaofeiIDO/p/6009667.html
總結(jié)
以上是生活随笔為你收集整理的[python] 之 函数简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二次作业+105032014098
- 下一篇: 《Python程序设计》——1.2 程序