python自动化运维学习第八天--函数的多类型传值和冗余参数

函数的多类型传值和冗余参数

多类型传值

先上例子:

def fun(x, y, z):
    return x + y + z
    
t = (1, 2, 3)        #定义一个元组
fun(*t)              #把元组作为函数的参数,不加*号会报错
#执行后的结果为
>>> 6
t1 = (4, 5)      #定义一个元组
fun(6,*t1)       #元组作为参数的一部分,这两个参数不能颠倒顺序,即不能fun(*t1, 6)调用
#执行后的结果为
>>> 15
dic1 = {'x':1, 'z':3, 'y':2}    #定义一个字典
fun(**dic1)      #字典作为参数传给函数,需要在字典名前加两个*,需要注意,字典中的key必须和函数中的形参名相同
#执行后的结果为
>>> 6
冗余参数

处理多余参数(接收多余参数)
def func(x,*args,**kwargs):
定义了x命名参数,和两个多类型参数,作为冗余参数,*args接受的参数放到元组中,**kwargs接受的字典或者默认参数放到了字典中
默认情况下至少传递一个命名参数,如果传的参数多的话,则存到args中(以元组的形式),如果传递的是字典,或者变量的默认(例x=1)值等(以字典的形式存储)

def func(x,*args,**kwargs):
  print x
  print args
  print kwargs
func(1,2,'b',a=123)
(2,'b')
{'a': 123}

函数的递归调用

递归调用就是在函数内部调用函数自己,通常用它来计算阶乘,累加等
注意:

  • 必须有最后的默认结果
    if n ==0
  • 递归参数必须向默认结果收敛
    factorial(n-1)
例子:

求10的阶乘

#!/usr/bin/python
def factorial(n):
    if n == 0:     # 最后的默认结果
        return 1
    else:
        return n * factorial(n-1)  # n-1 实现参数收敛
print factorial(10)

求100的累加

#!/usr/bin/python
def factorial(n):
    if n == 0:     # 最后的默认结果
        return 0
    else:   
        return n + factorial(n-1)   # n-1 实现参数收敛
print factorial(100)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值