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大法好——递归内置函数函数进阶的主要内容,如果未能解决你的问题,请参考以下文章