01月04日三周三次【Python基础进阶】

本文深入探讨了Python中函数的高级用法,包括多类型传值、冗余参数及递归调用等内容。通过实例展示了如何利用*元组变量名和**字典变量名进行灵活的参数传递,并详细解析了递归函数的实现方式及其注意事项。

1.6 多类型传值和冗余参数
1.7 函数的递归调用

1.6 多类型传值和冗余参数

多类型传值
## 传元组(*元组变量名)
def fun(x, y):
    return x + y
t = (1, 2)          # 元素个数必须和函数变量数对得上,不然报错
# 调用
print(fun(*t))      # 在元组变量前加个*就可以了
> 3
print(fun(*(1,3)))  # 这样写也可以
> 4
###################################
def fun(x, y, z):
    return x + y + z
t = (1,2)
print(fun(2,*t))    # 如果是数字结合元组,元组必须写在最后;如果元组只有一个元素时,不可使用;否则报错
#################################
## 传字典(**字典变量名)
def fun(x, y, z):
    return x + y + z
d = {'x':1, 'y':2, 'z':3}   # 字典中的key必须和形参变量名一样;否则报错
print(fun(**d))
###################################
def fun(a, b, c, d, x, y, z):
    return a + b + c + d + x + y + z
t = (1, 1)
d = {'x':1, 'y':1, 'z':1}
print(fun(1, 1, *t, **d))
冗余参数
def fun(x, *t, **d):
    return x,t,d
print(fun(1))       
> (1, (), {})
##########################
def fun(x, *t, **d):
    return x,t,d
print(fun(1,2,'a','b'))
> (1, (2, 'a', 'b'), {})
##########################
def fun(x, *t, **d):
    return x,t,d
print(fun(1,2,'a','b',y=2))
> (1, (2, 'a', 'b'), {'y': 2})  # 以等式转换字典
#########################
def fun(x, *t, **d):
    return x,t,d
print(fun(1,2,'a',[1,2],*(1,2),y=2,**{'f':11}))
> (1, (2, 'a', [1, 2], 1, 2), {'y': 2, 'f': 11})

1.7 函数的递归调用

## 阶乘
def fun(n):
    sum = 1
    for i in range(1, n+1):
        sum *= i
    return sum
print(fun(10))
> 3628800
##############################
## 求和
def fun(n):
    sum = 0
    for i in range(1, n+1):
        sum += i
    return sum
print(fun(100))
> 5050
递归的注意事项
  • 必须有最后的默认结果
    • if n == 0
  • 递归参数必须向默认结果收敛的:
    • fun(n-1)
      ## 阶乘(递归法)
      def fun(n):
      if n == 0:
      return 1
      else:
      return n * fun(n - 1)
      print(fun(10))
      > 3628800
      #########################
      ## 求和(递归法)
      def fun(n):
      if n == 0:
      return 0
      else:
      return n + fun(n - 1)
      print(fun(100))
      > 5050

转载于:https://blog.51cto.com/13542406/2057468

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值