Python 6 函数与递归

语法结构:

  def  函数名 ([参数列表])
            函数体

函数参数:

关键字参数:

>>> def glaring(color,size):
    print(color,size)

>>> glaring("red","big")
red big
>>> glaring("big","red")
big red
>>> glaring(size="big",color="red")
red big
>>>

收集参数(可变参数)
>>> def test(*par):
    print(len(par));
    print(par[1]);

    
>>> test('cf','nz','dnf')
3
nz
>>>

修改全局变量

>>> def glaring():
    global count
    count=100
    print(100)

    
>>> glaring()
100
>>> print(count)
100
注:函数需要调用才会执行

内部函数

>>> def fun1():
    x=5
    def fun2():
        y=6
        print(x,y)
    fun2()

    
>>> fun1()
5 6


闭包  nonlocal

>>> def fun1():
    x=5
    def fun2():
        nonlocal x
        x=x**2
        print(x)
    fun2()

    
>>> fun1()
25
>>>


lambda表达式(匿名哦!函数)

格式: lambda  [参数列表] :  函数体

>>> def fun(x):
    return x**2
>>> fun(4)
16

>>> g = lambda x : x**2
>>> g(2)
4
>>>



filter(函数名,数据):过滤功能:数据通过函数筛选

>>> def app(x):
               return x % 2

>>> show=(filter(app,range(10)))
>>> list(show)
[1, 3, 5, 7, 9]
>>>

>>> list(filter(lambda x : x%2,range(10)))
[1, 3, 5, 7, 9]
>>>

map()映射

>>> list(map(lambda x : x*3,range(10)))
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
>>>


递归:函数调用自身  (Ctrl+C:强制停止)

def glaring(n):
    if n == 1 :
        return 1
    else:
        return n*glaring(n-1)

while 1:
    k=int(input("输入要求解的阶乘数"))
    print("结果为:",glaring(k))
    不适数值大的情况


汉诺塔问题
def hanoi(n, x, y, z):
    if n == 1:
        print(x, ' --> ', z)
    else:
        hanoi(n-1, x, z, y) # 将前n-1个盘子从x移动到y上
        print(x, ' --> ', z) # 将最底下的最后一个盘子从x移动到z上
        hanoi(n-1, y, x, z) # 将y上的n-1个盘子移动到z上

n = int(input('请输入汉诺塔的层数:'))
hanoi(n, 'X', 'Y', 'Z')







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值