Python 3 函式混淆知識點及例項詳解

2021-09-19 16:46:21 字數 3623 閱讀 5489

內嵌函式和閉包

匿名函式lambda

三目表示式

random函式

a=[1,2,3]

a="runoob"

在python中,型別屬於物件,變數沒有型別,上邊**[1,2,3]是list型別,「runoob」是字串型別,但是變數a沒有型別,他僅僅是乙個物件的引用(乙個指標),可以指向list物件或是其他物件。

數字、字串和元組是不可變物件,列表,字典等可變。

def changeint(a):

a=10

b=2changeint(b)

print(b)

#輸出為2

#例項中有 int 物件 2,指向它的變數是 b,在傳遞給 changeint 函式時,按傳值的方式複製了變數 b,a 和 b 都指向了同乙個 int 物件,在 a=10 時,則新生成乙個 int 值物件 10,並讓 a 指向它。

呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。下例會列印預設的age,如果age沒有被傳入:

def

printinfo

(name, age =35)

:"列印任何傳入的字串"

print

("name: "

, name)

輸出一串文字 n次 。 這裡的文字是必須引數,次數是可選引數,且次數有預設值

def

zifu

(str

,count=5)

:print

(str

*count)

zifu(

'bhfg'

,count=

3)

輸出斐波拉楔數列的前20項

def feibo(num):

if num<=1:

return 1

else:

return feibo(num-1)+feibo(num-2) #使用迭代

for i in range(21):

print(feibo(i),end=' ')

def

functionname

([formal_args,

]*var_args_tuple )

:#加了*星號的變數名會存放所有未命名的變數引數

"函式_文件字串"

function_suite

return

[expression]

# 可寫函式說明

defprintinfo

( arg1,

*vartuple )

:"列印任何傳入的引數"

print

("輸出: "

)print

(arg1)

for var in vartuple:

print

(var)

return

;# 呼叫printinfo 函式

printinfo(10)

;printinfo(70,

60,50)

;#輸出:

10#輸出:

7060

50

python中的函式定義是可以巢狀的,就是可以在函式內部再建乙個函式。內部的函式就為:內嵌函式

閉包:內部函式使用外部函式的區域性變數,那麼我們就稱內部函式為閉包

def

fun():

out_string =

'大魚'

deftext_combine

(string2)

:#因為out_string為外部函式的區域性變數,所以這個內部函式就是閉包

print

(out_string+string2)

#連線兩個string並輸出

text_combine(

'ai'

)fun(

)#輸出

大魚ai

lambda函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。

lambda argument_list引數列表 : expression
filter(function, iterable可迭代物件)
num_list=[0,1,2,3,4,5,6,7,8,9]

print(list(filter(lambda x: x % 3 == 0,num_list))) #篩選出能被3整除的數

[0, 3, 6, 9]
map(function函式, iterable, ...乙個或多個序列)
num_list=[0,1,2,3,4,5,6,7,8,9]

a=list(map(lambda x: x+4,num_list)) #將列表中的所有函式加一

print(a)

[4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

值得注意的是,這裡的filter()、map()函式返回的都是迭代器(引用的意思), 不能直接讀取 ,需要使用list進行轉換。

嘗試filter() 、map() 結合lambda的用法,例如找出1-100內的所有的偶數、奇數,並將其逐一對應相乘。

l=

for i in range(1,101):

a=list(filter(lambda x:x%2==0,l)) #這裡一定要加list,否則返回的就是位址

b=list(filter(lambda x:x%2!=0,l))

c=list(map(lambda x,y:x*y,a,b)) #map實現一一對應關係

print(c)

條件為真時的結果 if 判段的條件 else 條件為假時的結果 :print(x if(x>y) else y)

num=int(input('請輸入乙個0-9之間的數字:')) 

print('輸入正確。'if num>=0 and num<=9 else "請輸入乙個0-9")

import random

print( random.randint(1,10) ) # 產生 1 到 10 的乙個整數型隨機數

print( random.random() ) # 產生 0 到 1 之間的隨機浮點數

print( random.uniform(1.1,5.4) ) # 產生 1.1 到 5.4 之間的隨機浮點數,區間可以不是整數

print( random.choice('tomorrow') ) # 從序列中隨機選取乙個元素

print( random.randrange(1,100,2) ) # 生成從1到100的間隔為2的隨機整數

a=[1,3,5,6,7] # 將序列a中的元素順序打亂

random.shuffle(a)

print(a)

python3小知識點

a a 3 a 3,b c a.extend d 6 a 3,b c d 6 format 698.25 698.2 format 698.26 698.3 把型別物件當作函式一樣呼叫執行 class a def call 根據檔名自動匯入模組,和re模組是一樣的,模組中有什麼方法就可以使用m直接呼...

python3 語法 知識點提要

1.程式設計方式 互動式程式設計 cmd命令列 指令碼式程式設計 執行 py檔案 2.識別符號 以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問 以雙下劃線開頭的 foo 代表類的私有成員 以雙 下劃線開頭和結尾的 foo 代表python裡特殊方法專用的標識 3.塊 ...

python3基礎知識點

使用一門語言,對於她的基礎知識點需要明確 現在我來整理一下,你可以作為閒來無事的東西看看,查漏補缺 int float bool complex 使用type a 或者 isinstance a,int 判斷 下標從0開始,以 1結尾 擷取方法 b 5 擷取前五個 加號連線字串,乘號進行重複 下標從...