• python笔记-回调函数, 递归函数和常用内置函数


    一、回调函数

    • 把一个函数作为参数传给另一个函数,第一个函数称为回调函数
    def add(a, b):
        return a + b
    
    
    def multiply(a, b):
        return a * b
    
    
    def calculate(a, b, f):
        return f(a, b)
    
    
    def main():
        a = int(input("输入整数a: "))
        b = int(input("输入整数b: "))
        print("a + b", calculate(a, b, add))
        print("a * b", calculate(a, b, multiply))
    
    main()
    
    • 有在调用时才看出来是不是回调函数
    • 正常调用就是普通函数
    • 作为一个函数的参数在需要的时候分情况调用,就是回调函数。

    二、递归函数

    在函数内部调用函数本身的函数称为递归函数

    递归实现求一个数的阶乘

    def factorial(n):
        if n == 0 or n == 1:
            return 1
        return n * factorial(n - 1)
    
    
    print(factorial(10))
    

    递归实现计算斐波拉且数列的第n项

    def fib(n: int):
        if n == 1 or n == 2:
            return 1
        return fib(n - 1) + fib(n - 2)
    
    
    print(fib(10))
    

    三、常用内置函数

    3.1 数学相关

    1. abs(obj: [int, float, complex]): int float类型的数据返回绝对值, complex类型数据返回模长
    >>> abs(-3.2)
    3.2
    >>> abs(-4)
    4
    >>> abs(3+4j)  # 复数返回复数的模长
    5.0
    
    1. max(iter) min(iter): 返回可迭代对象中的最大值或最小值
    >>> li = [3, 4, 5, -8, 9, 8]
    >>> max(li)
    9
    >>> min(li)
    -8
    
    1. sum(iter) 求取iter元素的和
    >>> sum(range(1,11))
    55
    
    1. sorted(obj: [list tuple set dict]) : 排序,返回排序后的对象, 返回值是一个列表
      • dict对象作为参数时, 按key进行排序
    >>> sorted({1: 1, 2: 2, 3: 1})
    [1, 2, 3]
    
    1. len(obj): 返回对象的长度, 元素的个数
    >>> li = [2, 1, 4, 3, 9]
    >>> len(li)
    5
    >>> len({2,2,3,4,4})
    3
    
    1. divmod(a,b): 获取商和余数 返回值: (a//b, a%b)
    >>> divmod(9, 2)
    (4, 1)
    
    1. pow(a,b): 返回a ** b
    >>> pow(2, 3)
    8
    
    1. round(a,b) : 获取指定位数的小数(四舍五入)。a代表浮点数,b代表要保留的位数
    >>> round(3.141592657535, 3)  # 保留三位小数
    3.142
    >>> round(3.141592657535, 2)  # 保留两位小数
    3.14
    

    3.2 类型转换

    1. int(x: [float, str]): 将浮点数或整数形式字符串转为整数
      • float: 通过截断小数部分转为整数
      • str: 将字符串转为整数
    >>> int(3.12)
    3
    >>> int("23")
    23
    
    1. float(x:[int, str]): 将整数或浮点数形式的字符串转为浮点数
    In [1]: float(2)                                                                                  
    Out[1]: 2.0
    
    In [2]: float("2.3")                                                                              
    Out[2]: 2.3
    
    1. str(x:[int, float, tuple, list]): 将其他类型转为字符串类型
    In [3]: str(2)                                                                                    
    Out[3]: '2'
    
    In [4]: str(2.3)                                                                                  
    Out[4]: '2.3'
    
    In [5]: str([1,2,3])  # 列表和元祖会将其标志符号一起转为字符串, 列表:[,] 元祖: (,)                                                                           
    Out[5]: '[1, 2, 3]'
    
    In [6]: str((1,2,3))                                                                              
    Out[6]: '(1, 2, 3)'
    
    In [7]: str(3+4j)                                                                                 
    Out[7]: '(3+4j)'
    
    1. bool(obj:[int, float, str, list, tuple, set, deict,...]): 将其他类型转为布尔类型
    In [9]: bool(0)  # 0--> False                                                                                  
    Out[9]: False
    
    In [10]: bool(1)  # !0 --> True                                                                                
    Out[10]: True
    
    In [11]: bool("")  # 空字符串, "" --> False                                                                  
    Out[11]: False
    
    In [12]: bool("x")  # 非空字符串, "x" --> True                                                        
    Out[12]: True
    
    In [13]: bool([])  # 空列表, [] --> False                                                                             
    Out[13]: False
    
    In [14]: bool([1,2,3])  # 非空列表, [1,2, 3] --> True                                                          
    Out[14]: True
    
    In [15]: bool(())     # 空元祖, () --> False                                              
    Out[15]: False
    
    In [16]: bool((1,2,3))  # 非空元祖, (1,2,3) --> True                                                       
    Out[16]: True
    
    1. bytes(str,code): 接收一个字符串,与所要编码的格式,返回一个字节流类型
    In [19]: bytes("hello", "utf-8")                                                                  
    Out[19]: b'hello'
    
    1. list(iterable:[str, tuple, set, dict]): 转换为列表(list)
    In [23]: list("hello")                                                                            
    Out[23]: ['h', 'e', 'l', 'l', 'o']
    
    In [24]: list((1,2,3))                                                                            
    Out[24]: [1, 2, 3]
    
    In [25]: list({1,2,3,3,4,2})                                                                      
    Out[25]: [1, 2, 3, 4]
    
    In [26]: list({"name": "dyp", "age": 12})   # 字典只会将键 key 转为列表                                                        
    Out[26]: ['name', 'age']
    
    1. tuple(iterable:[str, list, set, dict]): 转为元祖(tuple)
    In [27]: tuple("hello")                                                                           
    Out[27]: ('h', 'e', 'l', 'l', 'o')
    
    In [28]: tuple([1,2,3])                                                                           
    Out[28]: (1, 2, 3)
    
    In [29]: tuple({1,2,3,3, 2,1})                                                                    
    Out[29]: (1, 2, 3)
    
    In [30]: tuple({"name": "dyp", "age": 13})                                                        
    Out[30]: ('name', 'age')
    
    1. set(iterable:[str, list, tuple, dict]): 转为集合(set)
    
    In [31]: set("hello")                                                                             
    Out[31]: {'e', 'h', 'l', 'o'}
    
    In [32]: set([1,2,3,3,2,1])                                                                       
    Out[32]: {1, 2, 3}
    
    In [33]: set((1,2,3,3,2,1))                                                                       
    Out[33]: {1, 2, 3}
    
    In [34]: set({"name": "dyp", "age": 13})                                                          
    Out[34]: {'age', 'name'}
    
    1. dict(obj:[key=value, list, tuple, dict]): 转为字典
    In [35]: dict(name="dyp", age=21)                                                                 
    Out[35]: {'name': 'dyp', 'age': 21}
    
    In [36]: dict([("name", "dyp"), ("age", 21)])                                                     
    Out[36]: {'name': 'dyp', 'age': 21}
    
    In [37]: dict({'name': 'dyp', 'age': 21})                                                         
    Out[37]: {'name': 'dyp', 'age': 21}
    
    1. enumerate(iterable): 返回一个枚举对象, 由(index, value)组成
    In [38]: enumerate([1,2,3])                                                                       
    Out[38]: <enumerate at 0x7f05d13044c8>
    
    In [39]: for k, value in enumerate([1,2,3]): 
        ...:         print(k,value) 
        ...:                                                                                          
    0 1
    1 2
    2 3
    
    1. hex(x:int): 转换为16进制
    In [40]: hex(1024)                                                                                
    Out[40]: '0x400'
    
    1. oct(int): 转换为8进制
    In [41]: oct(98)                                                                                  
    Out[41]: '0o142'
    
    1. bin(int): 转换为2进制
    In [42]: bin(10)                                                                                  
    Out[42]: '0b1010'
    
    1. chr(int): 转换数字为相应ASCI码字符
    In [43]: chr(67)                                                                                  
    Out[43]: 'C'
    
    1. ord(str): 转换ASCI字符为相应的数字
    In [44]: ord("C")                                                                                 
    Out[44]: 67
    

    3.3 功能函数

    1. eval(str): 将str当python表达式执行
    In [49]: eval("print('hello world')")                                                             
    hello world
    
    1. exec(): 执行python语句
    In [52]: exec("print(1+1)")                                                                       
    2
    
    1. map(func, *iterable): 将func用于每个iterable对象
    In [53]: fun = lambda x:x%2                                                                       
    
    In [54]: map(fun, [1,2,3,4,5,6,7,8,9,10])                                                         
    Out[54]: <map at 0x7f05d0ff23c8>
    
    In [55]: list(map(fun, [1,2,3,4,5,6,7,8,9,10]))                                                   
    Out[55]: [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
    
    1. zip(*iterable): 将iterable分组合并。返回一个zip对象
    In [56]: dict(zip(["one", "two", "three"], [1, 2, 3]))                                            
    Out[56]: {'one': 1, 'two': 2, 'three': 3}
    
  • 相关阅读:
    idea actiBPM插件之中文乱码
    quartz 集成到Spring中
    Spring 中将service 注入到普通的工具类中
    idea 将java 项目 打包成jar包
    异常来自 HRESULT:0x80070057 (E_INVALIDARG))
    Entity Framework小知识
    C# Unix时间戳转换
    Asp.NET MVC+WebAPI跨域调用
    位运算逻辑与逻辑或逻辑非运算 c# 中如何使用
    c# 学习笔记 重载、重写、重构、构造函数、new、Class
  • 原文地址:https://www.cnblogs.com/duyupeng/p/13138604.html
Copyright © 2020-2023  润新知