• 进阶 第四课:函数(第四节)


    step1: 习题反馈
    
    step2: lambda之再议 
      1. lambda是一个表达式 
      2. 它没有名称,存储也不是代码块,而是表达式
      3. 它被用作执行很小单元, 不能在里面使用条件语句 
    
    step3:参数总结
      1. 位置匹配 func(name)
      2. 关键字匹配 func(key=value)
      3. 收集匹配 
         1)元组收集 func(name, arg1, arg2)
         2) 字典收集 func(name, key1 = value1, key2 = value2)
      4. 参数顺序 
    
    step4:接触递归
      1. 递归是调用自身
      2. 里面下面的函数  
    
    
    
    # 用法一:lambda三元表达式 
    
    d = lambda x: x+1 
    print d(2) 
    
    # 等价于  
    
    def func(x):
        return x+1  
    print func(2)
    
    
    
    d1 = lambda x: x+1 if x>0 else 'None' 
    print d1(10) 
    print d1(-1)
    
    
    
    
    # 用法二:使用了列表推导式 
    
    g = lambda x: [(x,i) for i in xrange(0,2)] 
    
    print g(2) # [(2, 0), (2, 1)]
    
    
    # 用法三:结合filter函数用于过滤 
    
    t = [1, 10, 3, 6, 8] 
    f = filter(lambda x:x>3, t) 
    print f  # [10, 6, 8] 
    
    
    t1 = (1, 10, 3, 6, 8)
    f1 = filter(lambda x:x>3, t) 
    print f1 # [10, 6, 8]
    
    #说明:filter函数用法是:filter(fuction,list):将list中每一个元素带入到function中,计算返回值,将返回值为True的list中的元素形成一个新的list. 
    
    
    
    
    
    # 位置参数 
    def func(arg1, arg2, arg3):
        return arg1, arg2, arg3
    
    print func(1, 2, 3)
    
    
    
    # 关键字参数 
    def func1(k1 = '', k2 = None, k3 = ''):
        return k1, k2, k3 
    print func1(1, 2, 3) # (1,2,3)
    print func1(1, 3) # (1,3,'')
    print func1(k3 = 1, k1 = 2) #
    
    def func2(*kargs, **kwargs):
        return kargs
    
    print func2(2,3,4,5,6,7,[1,2,3,0])  # 报错 
    
    
    def func2(*kargs, **kwargs):
        return kargs
    
    print func2(2,3,4,5,6,7,[1,2,3,0]) # (2,3,4,5,6,7,[1,2,3,0])
    
    
    
    def func2(*kargs, **kwargs):
        return kargs
        # return kwargs
    
    print func2(2,3,4,5,6,7,[1,2,3,0]) # {} 
    print func2(2, 3, 4,[2,3,0],{1:2,3:4},(2,3),{'a':1, 'b':2})
    
    
    
    """
    *kargs 元组
    **kwargs 字典
    
    
    位置参数 
    1. 先是位置匹配的参数
    2. 再是关键字匹配的参数 
    3. 收集匹配的元素参数
    4. 收集匹配的关键字参数 
    
    按照上面的方法定义一个函数参数, 所定义的函数才不会报语法错误 
    
    """
    
    
    def func(i):
        if i < 100:
            return i+func(i+1)
        return i 
    print func(1)
    
    
    # 用递归计算n的阶乘 
    
    def func(n):
        if n == 1:
            return 1
        else:
            return n*func(n-1)
    
    print func(4)
    
    
    
    def func1(n):
        result = n 
        for i in range(1,n):
            result =  result*i
        return result 
    
    print func1(4)
  • 相关阅读:
    音频电路设计中的基本知识(-)
    Usart的单线半双工模式(stm32F10x系列)
    RTS与CTS的含义
    NetBIOS与Winsock编程接口
    debian下使用gitosis+gitweb搭建SSH认证的git服务器
    解决:无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
    Windows Azure Storage Client Library 2.0 入门
    Windows Azure Table Storage 解决 Guid 查询问题
    EF 报【序列包含一个以上的元素】解决办法
    javascript技巧大全套
  • 原文地址:https://www.cnblogs.com/huiming/p/6009671.html
Copyright © 2020-2023  润新知