2 python學習需要注意的點
關鍵字lambda
表示匿名函式,冒號前面的x
表示引數。冒號後面只能有乙個表示式,不寫return
,返回值就是該表示式的結果。可以不必定義函式名,直接建立乙個函式物件。返回函式的時候,也可以返回匿名函式。下面的**是乙個例子:
myabs =
lambda x :
-x if x <
0else x
myabs(-2
)
輸出如下:
2
python的函式不但可以返回int
、str
、list
、dict
等資料型別,還可以返回函式!
比如,定義乙個函式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 表示式...