python 默认参数后面加不定参数_python基础--函数的形参,默认参数值,列表参数,不定长参数,字典型参数...

1,默认参数值:

首先来上段代码:

def login(username='abc',password='123'):if username=='admin' and password=='admin123':print('登陆成功')else:print('登录失败')returnusername,passwordprint(login('admin','admin123'))print(login('admin'))print(login(password='ssssss'))print(login())

运行结果:

登陆成功

('admin', 'admin123')

登录失败

('admin', '123')

登录失败

('abc', 'ssssss')

登录失败

('abc', '123')

定义login函数的时候,有两个形参,一个是username,并赋予了一个默认值是abc,另一个形参是password,赋予的默认值是123,最后把调用login函数时传入的实参username和password一并返回。

if判断

username=='admin' 和 password=='admin123'

同时成立的时候打印登陆成功,接下来就是带不同参数时调用login函数产生的结果:

第一次调用login函数,并传入'admin','admin123'做为实参,满足if的判断条件,打印登陆成功,并且返回了('admin', 'admin123')

第二次调用login函数,只传入一个实参admin,这个时候会自动将这个实参放入函数中第一个形参,没有传入实参的password就会采用默认值123来参与函数的运算

所以这个时候相当于username的值是admin,但是password的值是123,不满足if的判断,所以打印登录失败,并且返回了('admin', '123')

第三次调用login函数,指定传入实参password='ssssss',没有传入实参的username就会自动采用默认值admin来参与函数的运算,所以这个时候相当于username的值是abc,

password的值是ssssss,不满足if的判读,打印登录失败并返回('abc', 'ssssss')

第四次调用login函数,没有传入任何参数,所以username和password都自动采用默认值参与函数的运算,所以这个时候相当于username的值是abc,password的值是123,

不满足if的判断,打印登录失败,并返回('abc', '123')

2,列表参数:

参数可以是变量,也可以是元组,列表等内置数据结构:

def login(username=[],password='admin123'):

username=username[0]if username=='admin' and password=='admin123':print('登陆成功')else:print('登录失败')returnusername,passwordprint(login(['admin','aaaaaa'])print(login(['bbbbbb','admin']))

运行结果:

登陆成功

('admin', 'admin123')

登录失败

('bbbbbb', 'admin123')

第一次调用login函数,传入了列表['admin','aaaaaa'],列表的第0个元素是admin,password没有传入参数,自动采用默认值admin123参与运算,所以满足if判断,打印登录成功,并返回('admin', 'admin123')

第二次调用login函数,传入了列表['bbbbbb','admin'],列表的第0个元素是bbbbbb,password没有传入参数,自动采用默认值admi123参与运算,所以不满足if判断,打印登录失败,并返回('bbbbbb', 'admin123')

3,可变长度参数

参数前加上*标识符,表示可变长度参数,*也可以引用元组,将多个参数组合在一个元组中。

def func(*n):

a=n[0]

b=n[1]if(a=='1111' and b=='2222'):print('yes')else:print('no')returnnprint(func('1111','2222','3333'))print(func('4444','5555','6666','7777','8888'))

运行结果:

yes

('1111', '2222', '3333')

no

('4444', '5555', '6666', '7777', '8888')

这里可以看到最后返回的结果n是一个不定长的元组

4,字典类型参数

**标识符表示一个字典类型的参数

def func(**n):

num=n.keys()for i innum:print(i,n)

func(a=1111,b=2222,c=3333)

func(d=4444,e=5555,f=6666,g=7777,h=8888)

运行结果:

a {'a': 1111, 'b': 2222, 'c': 3333}

b {'a': 1111, 'b': 2222, 'c': 3333}

c {'a': 1111, 'b': 2222, 'c': 3333}

d {'d': 4444, 'e': 5555, 'f': 6666, 'g': 7777, 'h': 8888}

e {'d': 4444, 'e': 5555, 'f': 6666, 'g': 7777, 'h': 8888}

f {'d': 4444, 'e': 5555, 'f': 6666, 'g': 7777, 'h': 8888}

g {'d': 4444, 'e': 5555, 'f': 6666, 'g': 7777, 'h': 8888}

h {'d': 4444, 'e': 5555, 'f': 6666, 'g': 7777, 'h': 8888}

这里可以看到,打印的参数n是一个不定长的字典

ps:如果参数中既有列表型参数或元组型参数(带*的参数)也有字典型参数(带**号的参数),则带*的参数应该写在带**号的参数的前面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值