Python知識點 函式式程式設計

2021-09-25 16:17:44 字數 4183 閱讀 9814

2 python學習需要注意的點

關鍵字lambda表示匿名函式,冒號前面的x表示引數。冒號後面只能有乙個表示式,不寫return,返回值就是該表示式的結果。可以不必定義函式名,直接建立乙個函式物件。返回函式的時候,也可以返回匿名函式。下面的**是乙個例子:

myabs =

lambda x :

-x if x <

0else x

myabs(-2

)

​輸出如下:

2
​python的函式不但可以返回intstrlistdict等資料型別,還可以返回函式!

​比如,定義乙個函式f(),我們讓它返回乙個函式g,可以這樣寫:

deff(

):print

('call f()...'

)defg(

):# 定義函式g

print

('call g()...'

)return g # 返回函式g()

​上述**中在函式f()內部又定義了乙個函式g()。由於函式g()也是乙個物件,函式名g()就是指向函式g()的變數,所以,最外層函式f()可以返回變數g(),也就是函式g()本身.呼叫函式f(),我們會得到f()返回的乙個函式:

x = f(

)# 呼叫f()

​輸出如下:

call f().

..

​在函式內部定義的函式和外部定義的函式是一樣的,只是他們無法被外部訪問:

defg(

):# 定義函式g

print

('call g()...'

)deff(

):print

('call f()...'

)return g # 返回函式g()

​將g()的定義移入函式f()內部,防止其他**呼叫g()

deff(

):print

('call f()...'

)defg(

):# 定義函式g

print

('call g()...'

)return g # 返回函式g()

​像這種內層函式引用了外層函式的變數(引數也算變數),然後返回內層函式的情況,稱為閉包closure。閉包的特點是返回的函式還引用了外層函式的區域性變數。所以,要正確使用閉包,就要確保引用的區域性變數在函式返回後不能變。

int()函式可以把字串轉換為整數。當僅傳入字串時,int()函式預設按十進位制轉換:

int

('98'

)

輸出如下:

98
函式還提供額外的base引數,預設值為10。如果傳入base引數,就可以做n 進製的轉換:

int

('100'

, base =

8)

輸出如下:

64
functools.partial就是建立乙個偏函式的,可使用下面的**建立乙個新的函式:

import functools

int2 = functools.partial(

int, base =2)

int2(

'1000'

)

輸出如下:

8
functools.partial可以把乙個引數多的函式變成乙個引數少的新函式,少的引數需要在建立時指定預設值,函式呼叫的難度就降低了。

使用reduce(),需要匯入functools包下的reduce

from functools import

reduce

reduce()函式接收的引數是乙個函式f和乙個list,f必須接收兩個引數。reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。

下面是乙個函式f:

def

f(x, y)

:return x + y

呼叫reduce(f, [1, 3, 5, 7, 9])時,reduce函式將做如下計算:

先計算頭兩個元素:f(1, 3),結果為4;

再把結果和第3個元素計算:f(4, 5),結果為9;

再把結果和第4個元素計算:f(9, 7),結果為16;

再把結果和第5個元素計算:f(16, 9),結果為25。

reduce()還可以接收第3個可選引數,作為計算的初始值。如果把初始值設為100,計算:reduce(f, [1, 3, 5, 7, 9], 100),結果將變為125,因為第一輪計算是:計算初始值和第乙個元素:f(100, 1),結果為101。

filter()函式接收乙個函式f和乙個list。函式f的作用是對每個元素進行判斷,返回 true或 false。filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。

要從乙個list[1, 4, 6, 7, 9, 12, 17]中刪除偶數,保留奇數,首先,要編寫乙個判斷奇數的函式:

def

is_odd

(x):

return x %2==

1

然後利用filter()函式過濾掉偶數:

list

(filter

(is_odd,[1

,4,6

,7,9

,12,17

]))

輸出如下:

[1,

7,9,

17]

利用filter(),可以完成很多有用的功能。例如,刪除none或者空字串。下面的**是乙個判斷字串是否為空的函式:

def

is_not_empty

(s):

return s and

len(s.strip())

>

0

然後輸入:

list

(filter

(is_not_empty,

['test'

,none,''

,' '

,'end'])

)

輸出為:

[

'test'

,'end'

]

1、空值為none而不是null;

2、true或者false首字母要大寫;

3、print()會依次列印每個字串,遇到逗號,的話,會輸出乙個空格。下面的**是乙個例子:

print

('a'

,'b'

)

輸出如下:

a b
4、python把0、空字串』'和none看成 false,其他數值和非空字串都看成true。

python知識點 函式的使用 1

目錄def 是python中關鍵字主要用來定義函式的 makefrinds 是函式名 是傳參 冒號是表示咱們這個語句寫完了 def makefrinds print 找mm要手機號 print 找mm一起吃法 print 交朋友完成 函式名加小括號就可以呼叫了 寫法 函式名 例如 makefrind...

最全C 知識點 函式

1 函式操作 int fact int val int main 4 陣列引用形參 int k 10 print k void print int arr 10 for auto elem arr cout elem endl 5 傳遞多維陣列 int matrix 10 10個指標構成的陣列 in...

Python 知識要點 函式

函式是python為了 最大程度的重用和最小化 冗餘而提供的最基礎的程式結構。語法 def arg1,arg2,argn 任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。函式的第一行語句可以選擇性地使用文件字串 用於存放函式說明。函式內容以冒號起始,並且縮排。return 表示式...