• python大法好——递归、内置函数、函数进阶


    1.递归(自己干自己)

    def  fun(n):
            n=n/2
            print(n)
            if(n>2)
               fun(n)
    #函数调用
    fun(10)

    结果是5 2 1 0

    递归的执行过程:递归执行到最里面一层,外面的层还没有结束,所以由内而外结束。

    证明:

    def  fun(n):
            n=n/2
            print(n)
            if(n>2)
               fun(n)
            print(n)
    #函数调用
    fun(10)

    结果是 0 1 2 5

    递归获取最后一个值:

    def calc(n,count):
        print(n,count)
        if count<5:
            return calc(n/2,count+1)
        else:
            return n
    
    c=calc(10,1)
    # print("最后一个值的结果是",c)

    递归的特性:

    1.必须有一个终止条件

    2.每次进入更深一层递归时,问题规模应该比上次递归应当减少。

    3.递归效率不高,递归层次过多会导致栈溢出。

    2.内置函数

    1 any()  接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False

    2. ascii()  调用对象的__repr__()方法,获得该方法的返回值.

    3. bin(), 6. oct(),  7. hex()    三个函数功能为:将十进制数分别转换为2/8/16进制。

    4. bool()  测试一个对象是True还是False.

    5. bytes()  将一个字符串转换成字节类型

    6. str()  将字符类型/数值类型等转换为字符串类型

    7. challable()  判断对象是否可以被调用,能被调用的对象就是一个callables对象,比如函数和带有__call__()的实例

    8.classmethod()  用来指定一个方法为类的方法,由类直接调用执行,只有一个cls参数,执行雷的方法时,自动将调用该方法的类赋值给cls.没有此参数指定的类的方法为实例方法

    9.delattr()  删除对象的属性

    10. dict()  创建数据字典

    11. dir()  不带参数时返回当前范围内的变量,方法和定义的类型列表,带参数时返回参数的属性,方法列表

    1 >>> dir()
    2 ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'li', 'li1', 'li2', 'li_1']
    3 >>> dir(list)
    4 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

    12. divmod()  分别取商和余数

    13. eval()  将字符串str当成有效的表达式来求值并返回计算结果

    1 >>> s = "1+2*3"
    2 >>> type(s)
    3 <class 'str'>
    4 >>> eval(s)
    5 7

    14.hash()  哈希值

    15. id()  返回对象的内存地址

    16. input()  获取用户输入内容

    17. int()  将一个字符串或数值转换为一个普通整数

    18. len()  返回对象长度,参数可以是序列类型(字符串,元组或列表)或映射类型(如字典)

    19 list()  列表构造函数

    20. locals()  打印当前可用的局部变量的字典

    21. max()  返回给定元素里最大值

    ...

    ...

    3.函数进阶

    名称空间(存放的是变量名字与值之间关系的地方)

    名称空间共三种:

    A.locals:是函数内的名称空间,包括局部变量和形参

    B.globals:全局变量,函数定义所在的模块的名字空间

    C.builtins:内置模块的名字空间

    作用域的查找顺序:LEGB

    local-encosing-globals-builtins

    闭包

    这种情况是闭包!

    def calc():
        n=10
        def fun():
            print(n)
         return fun()
    calc()
    #结果是10  程序走进calc函数没有执行什么走到return 这是程序应该是要结束了但 return返回了 fun函数 进入fun函数 根据就近原则得到n=10 返回了10的结果

    装饰器

    由于暂时想的不是太全今天就不写了,不能自圆其说!

  • 相关阅读:
    Eclipse编译 make: arm-linux-gcc:命令未找到
    ubuntu如何启用root帐号
    jlinkV8指示灯不亮 usb无法识别的问题。
    Normal Equation Algorithm求解多元线性回归的Octave仿真
    Normal Equation Algorithm
    一维高斯分布与多维高斯分布
    Locally weighted regression algorithm
    Linear Regression and Gradient Descent
    导数与偏导数 Derivative and Partial Derivative
    向量的内积、长度和正交性
  • 原文地址:https://www.cnblogs.com/lchh/p/9383029.html
Copyright © 2020-2023  润新知