递归函数与内置方法
递归函数
在函数内部,可以调用其他函数。递归函数就是在函数内部调用自身。
例如:计算1到n的合
def sum_number(n):
if n == 1:
return 1
else:
return n+sum_number(n-1)
print(sum_number(100)) # 5050
其实计算过程也是很简单的
===> sum_number(4)
===> 4+sum_number(3)
===> 4+(3+sum_number(2))
===> 4+(3+(2+sum_number(1)))
===> 4+(3+(2+1))
===> 4+(3+3)
===> 4+6
===> 10
理论上递归函数解决的问题都是可以使用循环些,而且更简单;但是,循环写的没有递归函数写的逻辑清晰。
并且使用递归函数解决问题还需要注意栈溢出,每调用一层递归函数就会在内存中开辟一个空间运行,但是内存是有限的,递归是可以无限的,于是就可能会出现栈溢出。
还有一个比较重要的就是递归实现一个功能所花费的时间往往是循环实现一个功能的好几倍到几十倍不等。如果你要使用递归些功能还是需要注意下运行的时间问题。
内置方法
Python中有很多的内置方法,这里就列举几个比较常用的内置方法
-
bytes()
以二进制输出
res = '你好'.encode('utf8') print(res) # b'\xe4\xbd\xa0\xe5\xa5\xbd'
-
chr()/ord()
chr()将数字转换为ascii码表对应的字符,ord()将字符按照ascii码表转换为数字
print(chr(97)) # a print(ord('a')) # 97
-
divmod(a,b)
输出一个元祖,内容为商和余数
print(divmod(7,2)) # (3,1)
-
enumerate()
列出数据和数据下标,一般在for循环中使用
seasons = ['Spring', 'Summer', 'Fall', 'Winter'] for i in enumerate(seasons): print(i,end=' ') # (0, 'Spring') (1, 'Summer') (2, 'Fall') (3, 'Winter')
-
eval()
用来执行一个字符串表达式,并返回表达式的值。
print(eval('pow(2,2)')) # 4 lt = eval('[1,2,3,4]') print(type(lt)) # <class 'list'>
-
hash()
用于获取取一个对象(字符串或者数值等)的哈希值
还可以检验文件的完整性
s1 = '完整的字符串' s2 = '完整字符串' print(hash(s1)) # 678034061 print(hash(s2)) # 1130153064
-
abs()
返回数字的绝对值
print(abs(-205)) # 205
面向过程编程
面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么、后干什么、再干什么、然后干什么。
基于该思想编写程序就好比在设计一条流水线,需要先安装这个部件再安装那个部件,最后出成品。