形参

'''
形参种类:
1)位置形参
-- 普通位置形参
-- 默认值形参
-- 可变长位置形参

2)关键字形参
-- 有默认值关键字形参
-- 无默认值关键字形参
-- 可变长关键字形参
'''


def fn1(a, b, *, x, y):
pass


# fn1()
# 位置形参与关键字形参的分水岭 *

# 重点:
# 位置实参只能给位置形参进行传值
# fn1(10, 20, 30, 40) # 只有两个位置,给了四个位置
# 关键字实参可以给位置形参与关键字形参进行传值
# fn1(x=30, y=40, a=10, b=20)



# part2
# 两个带默认值的形参
def fn2(a=10, *, x=20):
print(a, x)
fn2(100, x=200)
# 总结:
# 1.有默认值的参数可以不用传值
# 2.*前有默认值的叫默认值参数,属于位置形参,可以被位置及关键字实参进行传值
# 3.*后有默认值的叫有默认值的关键字形参,属于关键字形参,只能被关键字实参进行传值

# def get_p(name, sex='男'):
# pass
# get_p('Bob', '女')


# part3
def fn3(a, b=10, *, x, y=20, z):
print(a, b, x, y, z)
fn3(100, x=200, z=300)
# 总结:
# 1.没有默认值的必须传参,有默认值的可以传也可以不传
# 2.位置有值的必须出现在无值之后,关键字顺序不做要求

# part4
def fn4(a, b=10, *args, x, **kwargs):
print(a, b, x)
print(args)
print(kwargs)
fn4(10, 20, 30, x=100, y=200, z=300)
# 总结:
# 1.可变长是用来接收未接收完的值(接收0到n个):
# -- *args用来接收所以没有接收完的位置(只能接收位置实参)
# -- **kwargs用来接收所以没有接收完的关键字(只能接收关键字实参)
# 2.*args必须出现在所以位置参数之后,**kwargs必须出现在所以参数之后

# 假设第一个位置永远是参数name
def func4(*args, **kwargs):
name = args[0] # 将name抽出来

def func44(name, *args, **kwargs):
# name 可以直接接收,省了抽出来的过程
pass



# part5
def fn5(*args, **kwargs):
print(args, kwargs) # args=(10, 20) kwargs={'x': 100, 'y': 200}

def fn55(*args, **kwargs):
print(args, kwargs) # args=(10, 20) kwargs={'x': 100, 'y': 200}
fn5(*args, **kwargs) # *args就会把元组打散传递,**kwargs就会把字典打散传递

fn55(10, 20, x=100, y=200)

# 容器类型可以打散传值
def temp(*args, **kwargs):
print(args, kwargs)
ls = [1, 2, 3, 4, 5]
dic = {'a': 1, 'b': 2}
temp(*ls, **dic)

转载于:https://www.cnblogs.com/qiangyuzhou/p/10787374.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值