python 函式的動態引數

2022-08-09 06:12:11 字數 4843 閱讀 8717

1. 函式的動態引數

1. *args 位置引數動態傳參

2. **kwargs 關鍵字引數動態傳參

順序:位置引數, *args, 預設值, **kwargs

def func(*args, **kwargs):

pass

形參的位置*,**: 聚合

實參的位置*,**: 打散

2. 命名空間

1. 內建命名空間

2. 全域性命名空間

3. 區域性命名空間

作用域:

1. 全域性作用域: 內建+全域性

2. 區域性作用域: 區域性(函式被呼叫)

globals() 檢視全域性中的內容

locals() 檢視當前作用域中的內容

3. 函式巢狀

函式可以互相的巢狀

4. global和nonlocal關鍵

global: 在區域性訪問全域性中的內容

nonlocal: 在區域性尋找外層函式中離他最近的那個變數

2,寫函式,接收n個數字,求這些引數數字的和。(動態傳參)

3,讀**,回答:**中,列印出來的值a,b,c分別是什麼?為什麼?

a=10

b=20

def test5(a,b):

print(a,b)

c = test5(b,a)

print(c)

4,讀**,回答:**中,列印出來的值a,b,c分別是什麼?為什麼?

a=10

b=20

def test5(a,b):

a=3b=5

print(a,b)

c = test5(b,a)

print(c)

print(a,b)

5,寫函式,傳入函式中多個實參(均為可迭代物件如字串,列表,元祖,集合等),將每個實參的每個元素依次新增到函式的動態引數args裡面.

例如 傳入函式兩個引數[1,2,3] (22,33)最終args為(1,2,3,22,33)

6,寫函式,傳入函式中多個實參(實參均為字典),將每個實參的鍵值對依次新增到函式的動態引數kwargs裡面.

例如 傳入函式兩個引數 最終kwargs為

7, 下面**成立麼?如果不成立為什麼報錯?怎麼解決?

7.17.3

7.48,寫函式,接收兩個數字引數,將較小的數字返回.

9,寫函式,接收乙個引數(此引數型別必須是可迭代物件),將可迭代物件的每個元素以』_』相連線,形成新的字串,並返回.

例如 傳入的可迭代物件為[1,'孫悟空','豬八戒']返回的結果為』1_老男孩_武sir』

10,寫函式,傳入n個數,返回字典

例如:min_max(2,5,7,8,4) 返回:(此題用到max(),min()內建函式)

11,寫函式,傳入乙個引數n,返回n的階乘

例如:cal(7)  計算7*6*5*4*3*2*1

12寫函式,返回乙個撲克牌列表,裡面有52項,每一項是乙個元組

例如:[(『紅心』,2),(『草花』,2), …(『黑桃』,『a』)]

13 有如下函式:

你可以任意新增**,用兩種或以上的方法,執行inner函式.

1,有函式定義如下:

def calc(a,b,c,d=1,e=2):

return (a+b)*(c-d)+e

請分別寫出下列標號**的輸出結果,如果出錯請寫出error。

print(calc(1,2,3,4,5))_____

print(calc(1,2))____

print(calc(e=4,c=5,a=2,b=3))___

print(calc(1,2,3))_____

print(calc(1,2,3,e=4))____

print(calc(1,2,3,d=5,4))_____

2,(此題有坑)下面**列印的結果分別是_________,________,________.

list

list1 = extendlist(10)

list2 = extendlist(123,)

list3 = extendlist('a')

print('list1=%s'%list1)

print('list2=%s'%list2)

print('list3=%s'%list3)

3, 寫**完成99乘法表.(公升級題)

1 * 1 = 1 

2 * 1 = 2 2 * 2 = 4 

3 * 1 = 3 3 * 2 = 6 3 * 3 =

9  ......

9 * 1 = 9 9 * 2 = 18 9 * 3 =

27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81  

#

2def num(*i):

sum =0

for n in

i: sum +=int(n)

return

sumprint(num(1,2,3,4,5,6,7,8,9))#3

'''a = 20

b = 10

c = none

因為a = 10,b= 20,b傳參給了a,a傳參給了b,所以a = 20,b = 10.

函式test5 沒有return返回值 所以 c = none.

'''#

4'''

test5中列印的a = 3,b = 5

c = none

a = 10,b = 20

test5中聲名a = 3,b = 5

test沒有return返回值所以c = none

a = 10,b = 20為全域性作用域,所以最後列印 a = 10,b = 20.

'''#

5def fun(*args):

print

(args)

fun(*[1,2,3],*(22,33))#6

def fun(**kwargs):

print

(kwargs)

fun(**,**)#7

#(1)

a = 2

def

print

(a)#

(2)a = 2

def

global

a a += 1

print

(a)#

(3)def

a = 1

definner():

print

(a) inner()

#(4)

def a = 1

definner():

nonlocal a

a += 1

print

(a) inner()#8

defconvert(a,b):

return a if a > b else

bprint(convert(233,666))#9

deffun(li):

s = ""

for i in

li: s += str(i) + '_'

print(s.strip("

_"),end=""

)fun([1,'

孫悟空','

豬八戒'])#

10def convert(*args):

dic ={}

dic[

'max

'] =max(args)

dic[

'min

'] =min(args)

return

dicprint(convert(2,5,7,8,4))#11

deffunc(n):

if n ==0:

return

true

return n * func(n - 1)

a = func(7)

print

(a)#

12def

poke():

li = ['

黑','

紅','

花','片'

] li1 = ['

a',2,3,4,5,6,7,8,9,10,'

j','

q','k'

] li2 =

for i in

li:

for n in

li1:

return

li2print

(poke())#13

def

definner():

print(666)

inner()

def

definner():

print(666)

return

inner()#14

#(1)

'''1.2

2.error

3.24

4.85.10

6.error

'''#

(2)'''

list1=[10,'a']

list2=[123]

list3=[10,'a']

'''#

(3)def

func(num):

for i in range(1,num+1):

for n in range(1,i+1):

s = i *n

print("

%s * %s = %s

" % (i,n,s),end=""

)

print(end="\n"

)func(9)

Python 函式的動態引數

1.1 動態引數 args 動態位置引數 kwargs 動態預設引數 位置 動態位置 預設 動態預設 定義的時候是 聚合 函式體和實參時 打散 args,kwargs 在函式的使用階段叫打散 1.args 打散的是源資料型別 2.kwargs 打散的是字典的鍵1.2 函式的注釋 def 函式名 注釋...

PYTHON 函式的動態引數

普通引數示例 deffunc args print args func 123456 執行結果為123456 如果給多個引數,就會報錯 動態引數示例 def func args print args func 123456,456,456,456 執行結果為 123456,456,456,456 無...

Python函式中的動態引數

所謂的動態引數就是在寫函式時,你可以傳遞1個引數,2個引數,3個引數甚至更多,同時也可以忽略它。動態引數 一般有兩種表示方法 args和 kwargs,它的區別不是在於args和kwargs這裡可以替換成任意字母,這裡最主要的區別是 和 動態引數跟預設引數一樣,要寫在位置引數的後面 def func...