Python常用内置函数
一、函数递归
递归:函数A调用函数A
递归的核心:递进的时候能够达到一个结果,问题规模越来越小(不一定要真正的达到);设置一个条件,能够让最后异次函数调用结束。
递归更多的是一种思想,用来解决某种问题
def age_func(x): # x的规模在减小 # x = 5 # x =4 # x =3 # x =2 # x = 1 # x = 0
global age
if x == 0:
return age # 终止函数,age=26,这是age_func(0)
return age_func(x - 1) + 2 # age_func(4) # age_func(3) # age_func(2) # age_func(1) # age_func(0)
res = age_func(5)
print(res) # 26
'''
age_func(5) --> return age_func(4)+2 == 24+2 =26
age_func(4) --> return age_func(3)+2 == 22+2 = 24
age_func(3) --> return age_func(2)+2 == 20+2 = 22
age_func(2) --> return age_func(1)+2 == 18+2 = 20
age_func(1) --> return age_func(0)+2 == 16+2= 18
'''
二、内置函数
1、常用
1.bytes()
解码字符。
res = '你好'.encode('utf8')
print(res)
b'\xe4\xbd\xa0\xe5\xa5\xbd'
res = bytes('你好', encoding='utf8')
print(res)
b'\xe4\xbd\xa0\xe5\xa5\xbd'
2.chr()/ord()
chr()参考ASCII码表将数字转成对应字符;ord()将字符转换成对应的数字。
print(chr(65))
A
print(ord('A'))
65
3.divmod()
分栏。
print(divmod(10, 3))
(3, 1)
4.enumerate()
带有索引的迭代。
l = ['a', 'b', 'c']
for i in enumerate(l):
print(i)
(0, 'a')
(1, 'b')
(2, 'c')
5.eval()
把字符串翻译成数据类型。
lis = '[1,2,3]'
lis_eval = eval(lis)
print(lis_eval)
[1, 2, 3]
6.hash()
是否可哈希。
print(hash(1))
1
2、了解
求绝对值。
print(abs(-13)) # 求绝对值
13
2.all()
可迭代对象内元素全为真,则返回真。
print(all([1, 2, 3, 0]))
print(all([]))
False
True
3.any()
可迭代对象中有一元素为真,则为真。
print(any([1, 2, 3, 0]))
print(any([]))
True
False
4.bin()/oct()/hex()
二进制、八进制、十六进制转换。
print(bin(17))
print(oct(17))
print(hex(17))
0b10001
0o21
0x11
5.dir()
列举出所有time的功能。
import time
print(dir(time))
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']
6.frozenset()
不可变集合。
s = frozenset({1, 2, 3})
print(s)
frozenset({1, 2, 3})
7.globals()/loacals()
查看全局名字;查看局部名字。
# print(globals())
def func():
a = 1
# print(globals())
print(locals())
func()
{'a': 1}
8.pow()
print(pow(3, 2, 3)) # (3**2)%3
0
9.round()
print(round(3.5))
4
10.slice()
lis = ['a', 'b', 'c']
s = slice(1, 4, 1)
print(lis[s]) # print(lis[1:4:1])
['b', 'c']
11.sum()
print(sum(range(100)))
4950
12.import()
通过字符串导入模块。
m = __import__('time')
print(m.time())
1556607502.334777
三、面向过程编程
# 面向 过程 编程
# 按照 流程(流水线的思想) 码代码
# 造瓶子
# 输入原材料(一堆塑料) --> 融化塑料 --> 造瓶身和瓶盖 --> 输出瓶子
# 一堆变量/参数 --> 函数1(过程1) --> 函数2(过程2) --> 结果
# 函数3(过程3) --> 函数2(过程2)
# 上一个过程的输出必定是下一个过程的输入
# 优点:
# 1. 思路清晰
# 缺点:
# 1. 上一个过程完蛋了,下一个过程也完蛋
# 2. 功能与功能之间不独立
# 3. 牵一发而动全身,不方便修改/扩展功能,可扩展性差