python中参数组 *args,**kwargs,位置参数(一个星*返回元祖),关键字参数(两个星*返回字典)

# 参数组 *args

def send_mail(*names):
for name in names:
print('%s发测试报告!'%name)

send_mail() # 不传参数!
send_mail('路明') # 传一个参数:发测试报告! ('路明',) 返回元祖
send_mail('曹雪莲','dxl','zhangshan') # 传多个参数:发测试报告! ('曹雪莲', 'dxl', 'zhangshan')


def szz(name,age,sex,addr,phone,qq,mail):
print("打印")

# 关键字传参 ,可不用按顺序
szz(name='dongxl',qq='877766766',age=18,addr='shanghai',mail='[email protected]',sex='nv',phone=148383838)

# 也可以一起用,但是要先写位置参数,在写关键字参数,关键字参数后面不能再出现位置参数
szz('dongxl',qq='877766766',age=18,addr='shanghai',mail='[email protected]',sex='nv',phone=148383838)


# 总结
# 调用的函数的时候,可以全部都用位置参数,位置是--对应的,必须按照位置来传参
# 也可以用关键字参数,不用指定关键字,不需要按顺序来
# 也可以一起用,但是要先写位置参数,在写关键字参数,关键字参数后面不能再出现位置参数

def xiaohei(**info):
print(info)

# 参数是否传,不是必填的
# 位置传参不可以 xiaohei('1','2')
# 关键字传参可以 返回字典
# 是否限制参数的个数 不限制
xiaohei()
xiaohei(name='donxl',age=18,phone='139188777')
# xiaohei('码云','20') #报错

def op_mysql(host,port,user,passwd,db):
print(host)
print(port)
print(user)
print(passwd)
print(db)
db_info=['127.0.0.1',3306,'root','123456','szz']
op_mysql(*db_info) # 一个星* 调用函数,代表拆开这个列表,挨个对应好

db_info2={
'host':'127.0.0.1',
'port':3306,
'user':'szz',
'passwd':'123456',
'db':'szz'
}
op_mysql(**db_info2) # 两个*调用函数,把字典解开,host=127.0.0.1,port=3306
 

猜你喜欢

转载自www.cnblogs.com/skyxiuli/p/10740714.html