Python學習筆記 3 ,函式引數

2021-10-05 14:24:41 字數 4375 閱讀 3438

# 定義可變引數

defcalc_sum

(*args)

: ax =

0for n in args:

ax = ax + n

return ax

print

(calc_sum(1,

2,3)

)# 設定預設引數

defpower

(x, n=2)

: s =

1while n >0:

n = n -

1 s = s * x

return s

print

(power(2)

)print

(power(2,

3))# 預設引數的坑

defadd_end

(l=)

:'end'

)return l

print

(add_end())

print

(add_end())

print

(add_end())

# 定義預設引數要牢記一點:預設引數必須指向不變物件!

# 可變引數

defcalc1

(numbers)

:sum=0

for n in numbers:

sum=

sum+ n * n

return

sumdef

calc2

(*numbers)

:sum=0

for n in numbers:

sum=

sum+ n * n

return

sumprint

(calc2(1,

2,3)

)print

(calc1([1

,2,3

]))num =[1

,2,3

]print

(calc2(

*num)

)print

(calc2())

print

(calc1(num)

)def

change1

(test)

: test[0]

='!'

t =[1,

2,3]

change1(t)

print

(t[0])

# output: !, list argument is a reference

defchange2

(*test)

:print

(test)

t =[1,

2,3]

change2(

*t)# output: (1, 2, 3), arguments as a tuple

# 關鍵字引數

defperson

(name, age,

**kw)

:print

('name:'

, name,

'age:'

, age,

'other:'

, kw)

person(

'fan',18

, city =

'montreal'

, height =

'1.8m'

, weight =

'70kg'

)extra =

person(

'fan',18

,**extra)

# the same output with former

# **extra表示把extra這個dict的所有key-value用關鍵字引數傳入到函式的**kw引數,

# kw將獲得乙個dict,注意kw獲得的dict是extra的乙份拷貝,對kw的改動不會影響到函式外的extra。

defperson2

(name, age,

**kw):if

'city'

in kw:

# 有city引數

print

(kw[

'city'])

if'job'

in kw:

# 有job引數

print

(kw[

'job'])

print

('name:'

, name,

'age:'

, age,

'other:'

, kw)

person2(

'jack',24

, city=

'beijing'

, addr=

'chaoyang'

, zipcode=

123456

)# 和關鍵字引數**kw不同,命名關鍵字引數需要乙個特殊分隔符 *,*後面的引數被視為命名關鍵字引數。

defperson3

(name, age,

*, city, job)

:# 命名關鍵字引數,只能用city,job作為key輸入。

print

(name, age, city, job)

person3(

'jack',24

, city=

'beijing'

, job=

'engineer'

)# person3('jack', 24, city='beijing', job='engineer', zipcode=123456), error.

defperson4

(name, age,

*args, city, job)

:print

(name, age, args, city, job)

person4(

'en',24

,'female',20

, city=

'montreal'

, job=

'ba'

)# output: # en 24 ('female', 20) montreal ba

# 如果沒有可變引數,就必須加乙個*作為特殊分隔符。如果缺少 *,python直譯器將無法識別位置引數和命名關鍵字引數:

# 引數的組合

deff1

(a, b, c=0,

*args,

**kw)

:print

('a ='

, a,

'b ='

, b,

'c ='

, c,

'args ='

, args,

'kw ='

, kw)

f1(1,2

)# output: a = 1 b = 2 c = 0 args = () kw = {}

f1(1,2

, c=3)

# output: a = 1 b = 2 c = 3 args = () kw = {}

f1(1,2

,'a'

,'b'

)# output: a = 1 b = 2 c = a args = ('b',) kw = {}

f1(1,2

,3,'a'

,'b'

, kw1=

'c')

# output: a = 1 b = 2 c = 3 args = ('a', 'b') kw =

deff2

(a, b, c=0,

*, d,

**kw)

:print

('a ='

, a,

'b ='

, b,

'c ='

, c,

'd ='

, d,

'kw ='

, kw)

f2(1,2

, d=

'd')

# output: a = 1 b = 2 c = 0 d = d kw = {}

f2(1,2

,3, d=

'99'

, ext=

none

)#output: a = 1 b = 2 c = 3 d = 99 kw =

args =(1

,2,3

,4)kw =

f1(*args,

**kw)

# output: a = 1 b = 2 c = 3 args = (4,) kw =

args =(1

,2,3

)kw =

f2(*args,

**kw)

# output: a = 1 b = 2 c = 3 d = 88 kw =

Python學習筆記 函式引數

定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,函式內部的複雜邏輯被封裝起來,呼叫者無需了解。python的函式引數十分靈活,可以分為 必選引數 作為函式呼叫的介面所必須具備的引數。預設引數 ...

Python學習筆記 函式引數

剛開始學習python,看了一些資料,總結記錄一下基本的python函式引數。python中函式定義,有五種引數分類,分別為 位置引數 預設引數 可變引數 關鍵字引數 命名關鍵字引數。1 位置引數 也稱必選引數,也就是函式呼叫時,必須傳遞實參值。這類引數很簡單,如下,呼叫add函式時必須傳值給引數x...

Python學習筆記 函式引數

power x,n 函式有兩個引數 x和n,這兩個引數都是位置引數,呼叫函式時,傳入的兩個值按照位置順序依次賦給引數x和n def power x,n 2 s 1 while n 0 n n 1 s s x return s預設引數必須指向不變物件!設定預設引數時,有幾點要注意 一是必選引數在前,預...