Python基礎知識總結

2021-08-22 02:49:59 字數 3412 閱讀 4300

函式可變引數

#可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。

defcalc

(*number):

sum = 0

for x in number:

sum = sum + x * x

return sum

#直接呼叫

print(calc(5,5,5))

#列表引數呼叫:*num表示把num這個list的所有元素作為可變引數傳進去

num = [1,2,3]

print(calc(*num))

#練習:傳入乙個或多個引數並計算引數乘積

defproduct

(x,*args):

if len(args):

sum = 1

for m in args:

sum = sum * m

return x * sum

else:

return x

函式關鍵字引數
#關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。

defperson

(name,age,**kw):

print(name,age,'other:',kw)

#直接呼叫

person('sungang',27,***='男',job='python engineer')

#sungang 27 other:

#dist引數呼叫

#注意:**otherinfo表示把otherinfo這個dict的所有key-value用關鍵字引數傳入到函式的**kw引數,kw將獲得乙個dict,kw獲得的dict是otherinfo的乙份拷貝,對kw的改動不會影響到函式外的otherinfo

otherinfo =

person('lidysun',28,**otherinfo)

#lidysun 28 other:

命名關鍵字引數
#呼叫時命名關鍵字引數必須傳入引數名,關鍵字引數之間位置不限。如果沒有傳入引數名,呼叫將報錯

defperson

(name,age,*,***,job):

print('name:%s,age:%d;***:%s,job:%s' %(name,age,***,job))

person('sg',27,job='engineer',***='male')

#如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了

defperson2

(name,age,*args,***,job):

print('name:%s,age:%d;***:%s,job:%s' %(name,age,***,job))

person2('sungang',28,***='男',job='python engineer')

#命名關鍵字引數可以設定預設值,如果有預設值,呼叫時可不傳遞該引數

defperson3

(name,age,*,wechat="sg820262236",job):

print('name:%s,age:%d;wechat:%s,job:%s' %(name,age,wechat,job))

person3('sungang',27,job='engineer')

person3('lidysun',28,wechat='1008611',job='engineer')

遞迴函式
#在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。

#例如計算階乘n! = 1 x 2 x 3 x ... x n

deffact

(n):

if n == 1:

return n

else:

return n * fact(n-1)

print(fact(5)) #120

#使用遞迴函式需要注意防止棧溢位。在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位。

print(fact(1000)) #報錯 recursionerror: maximum recursion depth exceeded in comparison

尾遞迴函式優化
#尾遞迴是指,在函式返回的時候,呼叫自身本身,並且,return語句不能包含表示式。這樣,編譯器或者直譯器就可以把尾遞迴做優化,使遞迴本身無論呼叫多少次,都只占用乙個棧幀,不會出現棧溢位的情況。

deffact

(num):

return fact_detail(num,1)

deffact_detail

(num,product):

if num == 1:

return product

else:

return fact_detail(num-1,num * product) #函式返回的時候,呼叫自身本身,並且,return語句不能包含表示式

print(fact(5)) #120

切片
#字串切片例項:字串去首尾空格

deftrim

(s):

while s[:1] == ' ':

s = s[1:]

while s[-1:] == ' ':

s = s[:-1]

return s

print(trim(' sun gang ')) #sun gang

迭代

列表迭代:

字典迭代:

#預設迭代字典的key值:

person =

for x in person:

print(x)

# name

# age

# 迭代字典的vaule值

for y in person.values():

print(y)

# sungang

# 27

#利用迭代求列表中最小最大值,返回tuple:

deffindminandmax

(l):

if len(l) == 0:

return (none,none)

if(len(l) == 1):

return (l[0],l[0])

max = min = l[0]

for x in l:

if x >= max:

max = x

if x <= min:

min = x

return (min,max)

python基礎知識總結

1 算術運算子 運算子描述例項 加10 20 30 減 10 20 10 乘 10 20 200 除 10 20 0.5 取整除 返回除法的整數部分 商 9 2 輸出結果 4 取餘數 返回除法的餘數 9 2 1 冪 又稱次方 乘方,2 3 8 2 算術運算子 運算子描述 冪 最高優先順序 乘 除 取...

Python基礎知識總結

dir builtins 可以檢視內建函式,共68個 標準資料型別 python3 中有六個標準的資料型別,其中 資料型別 數字num 注意 1 python可以同時為多個變數賦值,如a,b 1,2。2 乙個變數可以通過賦值指向不同型別的物件。3 數值的除法包含兩個運算子 返回乙個浮點數,返回乙個整...

Python基礎知識繼續總結

上一次已經安裝上pycharm了,那麼以後就用它程式設計啦。免得用互動式不能儲存,用.py檔案除錯又比較麻煩。乙個布林值只有 true 和 false 兩種值,注意大小寫。python中可以直接用 true 和 false 表示布林值,也可以進行布林計算,如下所示 python中布林值可進行 and...