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、付费专栏及课程。

余额充值