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

Posted lchh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的结果

装饰器

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

以上是关于python大法好——递归内置函数函数进阶的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶内容--- 函数式编程

测开之函数进阶篇・第五篇《递归函数纯函数匿名函数偏函数》

JavaScript 函数进阶函数(匿名回调递归函数)及相关练习

Python 基础进阶

python大法好——修改文件函数

python内置函数匿名函数递归