Python函数传入参数方式总结

1. 位置参数

位置参数是最简单的传入参数的方式

def func(a,b):
    print(a+b)
func(1,3) #3

2. 默认参数

默认参数是在调用函数的时候使用一些包含默认值的参数

def power(x,n=2):
    s = 1
    while(n>0)
        n -= 1
        s *= n
    return s

3. 可变参数

可变参数允许在调用参数的时候传入多个参数,这些参数在调用时被自动组装为一个tuple

def calc(*nums):
    sum = 0
    for n in nums:
        sum += n
    return sum

此时有两种调用方式:

calc(1,2,3) # return 6
calc(*[1,2,3]) # return 6

其中第一种方法等价于:

>>>ls= [1,2,3]
>>>calc(ls[0],ls[1],ls[2])

在第二种方法中,*nums表示把这个list中的所有元素作为可变参数传进函数。

4. 关键字参数

可变参数允许传入0个~多个参数,而关键字参数允许在调用时以字典形式传入多个参数,在传递参数时,需要使用=连接键和值

#使用两个*表示关键字参数
def person_info(name,age,**kw):
    print("name",name,"age",age,"other",kw)

>>>person("Huang",35,city = 'Karlsruhe')
>>>name Huang age 35 other {'city': 'Karlsruhe'}

关键字参数有效的扩展了函数的功能。试想场景,在某网站用户注册的过程中,除了姓名年龄时必选项,而住址等内容为可选项。
当可选项内容过多时,我们可以使用相应的简化写法:

>>>extra = {'city':'Karlsruhe','Job':'Student'}
>>>person('Huang',24,**extra)

**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数。

5. 命名关键字参数

命名关键字在关键字的基础上限制了传入关键字的变量名。
和普通关键字参数不同,命名关键字参数需要一个用来区分的分隔符*,他后面的参数被认为是命名关键字参数。

def person_info(name,age,*,city,job):
    print(name,age,city,job)

>>>person_info("Huang",24,city = "Karlsruhe",job = "Student")

有以下注意事项:

  • 命名关键字必须传入参数名
  • 数量一致

6. 参数组合

上述五种不同类型的参数传递方式,除了可变参数和命名关键字参数不能混合使用,其余均可组合使用。但需要注意的是,参数定义的顺序必须是:位置参数-默认参数-可变参数-关键字参数-命名关键字参数
由于python的函数的灵活性,上述的物种传参形式可以归结为通过类似于func(*args,**kw)的形式调用。其中,*args对用的是可变参数,接收的是一个tuple**kw对应的是关键字参数,接收到的是一个dict

def f1(a,b,c=0,*args,**kw):
    print("a=",a,"b=",b,"c=",c,"args=",args,"kw=",kw)
>>>args = (1,2,3,4)
>>>kw = {'d':99,'x':"xxx"} 
>>>f1(*args,**kw)
return: 
>>>a= 1 b= 2 c= 3 args= (4,) kw= {'d': 99, 'x': 'xxx'} 

7.小结

  1. 参数的传递时通过自动将对象赋值给本地变量名来实现的
  2. 改变函数的可变参数的值也许会对调用者有影响

8.引用

[1]https://blog.csdn.net/abc_12366/article/details/79627263
[2]https://www.jianshu.com/p/98f7e34845b5

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值