python关键参数 和不定长参数_Python函数强化练习(动态参数/不定长参数、关键字参数、变量作用域)...

本文:函数的强化练习,同时拓展动态参数/不定长参数、关键字参数、变量作用域

题目:写一个函数,检查传入列表的长度,如果大于2,那么只保留前两个长度的内容,并将新内容返回

#步骤1:

L=[1,2,3,4]if len(L)>2:

new_list=L[0:2]print(new_list)#步骤 2:

defcheck_list():

L=[1,2,3,4]if len(L)>2:

new_list=L[0:2]print(new_list)returnnew_list#L=[1,2,3,4]

check_list()#步骤 3:

defcheck_list(L):#L=[1,2,3,4]

if len(L)>2:

new_list=L[0:2]#print(new_list)

returnnew_list

L=[1,2,3,4] #将写死的函数参数化

new_list=check_list(L) #函数调用后存值

print(new_list)

【一】动态参数/不定长参数

1、符号:*args  ---argument  可以接收无穷多参数,必须加“*”号

2、属性:1)不限制参数长度和个数  2)在函数内部是做为元组来传递,可以通过遍历获取单个元素

3、例子:

#动态参数/不定长参数 *args

def make_sandwich(*args):

all=''

for item inargs:

all+=item

all+='、'

print('你的三明治包含了:'+all)

make_sandwich("牛肉",'火腿','培根','吐司')

make_sandwich()

【二】关键字参数

1、符号:**kwargs  ---key word argument  ,必须加“**”号

2、属性:1)实参调用需要指定参数与参数值  2)在函数内部是做为字典来传递

3、例子:

【动态参数 or 关键字参数的细节使用】

#例子1:(动态参数接收参数数量无穷)

def add_all_num(*L):

sum=0

for item in L:

sum+=item

print('和为:',sum) #输出--和为: 10add_all_num(1,2,3,4)

-----------------------------------------------------------------------------------

#例子2:(动态参数已全部接收无法再赋值给a)

def add_all_num(*L,a):

sum=0

for item in L:

sum+=item

print('和为:',sum)

print('a的值',a) #TypeError: add_all_num() missing 1 required keyword-only argument: 'a'

add_all_num(1,2,3,4)

-----------------------------------------------------------------------------------

#例子3:(位置参数a指定被赋值输出)

def add_all_num(*L,a):

sum=0

for item in L: #遍历的是L

sum+=item

print('和为:',sum) #输出--和为: 6

print('a的值',a) #输出--a的值 4

add_all_num(1,2,3,a=4)

-----------------------------------------------------------------------------------

#例子4:(a优先赋值,其余给L)

def add_all_num(a,*L):

sum=0

for item in L: #遍历的是L

sum+=item

print('和为:',sum) # 输出--和为: 9

print('a的值',a) # 输出--a的值 1

add_all_num(1,2,3,4)

-----------------------------------------------------------------------------------

#例子5:(位置参数不可重复赋值,只接收一次)

def add_all_num(a,*L):

sum=0

for item in L:

sum+=item

print('和为:',sum)

print('a的值',a) #TypeError: add_all_num() got multiple values for argument 'a'

add_all_num(1,2,3,4,a=9) #a已经赋值过不可以再赋值,只能接收一次

-----------------------------------------------------------------------------------

#例子6:(实参调用可以覆盖掉形参/位置参数的默认值)

def add_all_num(a=9,*L): #实参可以指定覆盖位置参数中的参数

sum=0

for item in L:

sum+=item

print('和为:',sum) # 输出--和为: 9

print('a的值',a) # 输出--a的值 1

add_all_num(1,2,3,4,)

-----------------------------------------------------------------------------------

#例子7:(关键字参数的使用)

def add_all_num(a,*L,**kwargs):

sum=0

for item in L: #遍历的是L

sum+=item

print('和为:',sum) # 输出--和为: 2

print('a的值',a) # 输出--a的值 1

print('kwargs',kwargs) #输出--kwargs {'x': 3, 'y': 4}

add_all_num(1,2,x=3,y=4)

-----------------------------------------------------------------------------------

【三】变量作用域

1、分类:全局变量、局部变量

2、属性:1)作用范围不一样

2)全局:在模块里都能调用;局部:只能用于函数内

3)当“全局”和“局部”同时存在,优先调用“局部”;当“局部变量”没有时,优先使用全局

4)global关键字

3、例子:

#例子1:

a=1 #全局变量

defadd(b):global a #声明a是个全局变量

a=10 #赋值运算

print(a+b) #20

add(10)print(a) #10

#-----------------------------------------------------

#例子2:a=1 #全局变量

def add(b):

global a #声明a是个全局变量

a=b+5 #赋值运算

print(a+b) # 25

add(10)

print(a) #15

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值