1. 内置函数六大类
图片:
链接:
上图源自老男孩中心的老师Eva Jing的博客
2. 作用域相关
locals()
返回本地作用域中的所有名字
globals()
返回全局作用域中的所有名字
3. 迭代器/生成器相关
3.1 next()
next(迭代器) # 效果等同于 迭代器.__next__()
范例:
def next(迭代器):
迭代器.__next__()
3.2 iter()
迭代器 = iter(可迭代的) # 相当于:迭代器 = 可迭代的.__iter__()
3.3 range()
range是可迭代的,但不是迭代器
range(10)
range(1,11)
range(1,11,2)
4. 其他
4.1 查看内置属性:dir()
查看一个变量拥有的方法
范例:
print(dir([]))
print(dir(1))
执行结果:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__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']
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
4.2 帮助:help()
help() 函数用于查看函数或模块用途的详细说明。
范例:
help(str)
执行结果:
Help on class str in module builtins:
.
.
.
| must be a string, whose characters will be mapped to None in the result.
4.3 调用相关:callable()
callable() 函数用于检查一个对象是否是可调用的。(凡是后面加括号调用的都是True)
范例:
print(callable(print))
a = 1
print(callable(a))
print(callable(globals))
def func():pass
print(callable(func))
执行结果:
True
False
True
True
4.4 模块相关:import
import的作用是导入模块
范例:__import__
(了解即可)
t = __import__("time")
print(t.time())
执行结果:
1547557124.231164
4.4.1 小结
某个方法属于某个数据类型的变量,就用.调用
如果某个方法不依赖于任何数据类型,就直接调用 —— 内置函数 和 自定义函数
4.5 文件操作相关:open()
范例:
f = open('1.复习.py')
print(f.writable()) # 文件能不能写
print(f.readable()) # 文件能不能读
执行结果:
False
True
4.6 内存相关:id()与hash()
4.6.1 id()
id() 函数用于获取对象的内存地址。
4.6.2 hash()
hash() 用于获取取一个对象(字符串或者数值等)的哈希值。
对于相同可hash数据的hash值在一次程序的执行过程中总是不变的
范例:hash()
print(hash(12345))
print(hash('hsgda不想你走,nklgkds'))
print(hash(('1','aaa')))
执行结果:
12345
9093381866357115561
-2751277933709817804
4.7 输入输出:input与print
4.7.1 input()
范例:
ret = input('提示 : ')
print(ret)
执行结果:
提示 : aaa
aaa
4.7.2 print()
范例1:
print('我们的祖国是花园\n')
print('我们的祖国是花园\n')
print('我们的祖国是花园\n',end='') #指定输出的结束符
print('我们的祖国是花园\n',end='')
执行结果:
我们的祖国是花园
我们的祖国是花园
我们的祖国是花园
我们的祖国是花园
范例2:
print(1,2,3,4,5)
print(1,2,3,4,5,sep='|') #指定输出多个值之间的分隔符
执行结果:
1 2 3 4 5
1|2|3|4|5
范例3:
f = open('file','w')
print('aaaa',file=f) # 直接把“aaaa”输出到文件file内了
f.close()
范例4:
打印进度条
如要研究,网上查找模块progress Bar
import time
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2
per_str = '\r%s%% : %s\n' % (i, '*' * char_num) \
if i == 100 else '\r%s%% : %s' % (i,'*'*char_num) # \r 意为回到行首
print(per_str,end='', flush=True)
执行结果:
100% : **************************************************
4.8 字符串类型代码的执行:eval与exec与compile
4.8.1 exec与eval
exec和eval都可以执行 字符串类型的代码
eval有返回值 —— 有结果的简单计算
exec没有返回值 —— 简单流程控制
eval只能用在你明确知道你要执行的代码是什么(慎用
)
范例1:
exec与eval
exec('print(123)')
eval('print(123)')
print(eval('1+2+3+4')) # 有返回值
print(exec('1+2+3+4')) #没有返回值
执行结果:
123
123
10
None
范例2:
exec
code = '''for i in range(10):
print(i*'*')
'''
exec(code)
执行结果:
*
**
***
****
*****
******
*******
********
*********
4.8.2 compile
compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。
参数说明:
参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。
参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。
参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'
范例1:
用compile编译成exec模式
code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec')
exec(compile1)
执行结果:
0
1
2
3
4
5
6
7
8
9
范例2:
code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2,'','eval')
print(eval(compile2))
执行结果:
10
范例3:
single交互类
code3 = 'name = input("please input your name:")'
compile3 = compile(code3,'','single')
exec(compile3) #执行时显示交互命令,提示输入
print(name)
执行结果:
please input your name:abc
abc
5. 基础数据类型相关
5.1 和数字相关
5.1.1 complex
# 复数 —— complex
# 实数 : 有理数
# 无理数
# 虚数 :虚无缥缈的数
# 5 + 12j === 复合的数 === 复数
# 6 + 15j
# 浮点数(有限循环小数,无限循环小数) != 小数 :有限循环小数,无限循环小数,无限不循环小数
# 浮点数
#354.123 = 3.54123*10**2 = 35.4123 * 10
# f = 1.781326913750135970
# print(f)
5.1.2 进制转换 bin和oct和hex
bin(二进制) & oct(八进制) & hex(十六进制)
print(bin(10))
print(oct(10))
print(hex(10))
执行结果:
0b1010
0o12
0xa
5.1.3 数学运算
- abs
abs() 函数返回数字的绝对值。
print(abs(-5))
print(abs(5))
执行结果:
5
5
2)divmod
divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
print(divmod(7,2)) # div除法 mod取余
print(divmod(9,5)) # 除余
执行结果:
(3, 1)
(1, 4)
3)round
round() 方法返回浮点数x的四舍五入值。
print(round(3.14159,3))
执行结果:
3.142
4)pow
pow() 方法返回 xy(x的y次方) 的值。
print(pow(2,3)) #pow幂运算 == 2**3
print(pow(3,2))
print(pow(2,3,3)) #幂运算之后再取余
print(pow(3,2,1)) #幂运算之后再取余
执行结果:
8
9
2
0
5) sum
sum() 方法对系列进行求和计算。
ret = sum([1,2,3,4,5,6])
print(ret)
ret = sum([1,2,3,4,5,6],10)
print(ret)
ret = sum([1,2,3,4,5,6,10],)
print(ret)
执行结果:
21
31
31
6)min
min() 方法返回给定参数的最小值,参数可以为序列。
print(min([1,2,3,4]))
print(min(1,2,3,4))
print(min(1,2,3,-4))
print(min(1,2,3,-4,key = abs)) # 以绝对值方式求最小值
执行结果:
1
1
-4
1
7)max
max() 方法返回给定参数的最大值,参数可以为序列。
print(max([1,2,3,4]))
print(max(1,2,3,4))
print(max(1,2,3,-4))
print(max(1,2,3,-4,key = abs)) # 以绝对值方式求最大值
执行结果:
4
4
3
-4
5.2 和数据结构相关
5.2.1 序列
5.2.2 列表list和元组tuple
5.2.3 相关内置函数
- reversed()
保留原列表,返回一个反向的迭代器
范例1:
l = [1,2,3,4,5]
l.reverse()
print(l)
l = [1,2,3,4,5]
l2 = reversed(l)
print(l2)
执行结果:
[5, 4, 3, 2, 1]
2) slice()
slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。
l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
执行结果
(2, 213)
5.2.4 字符串
- format()
format 函数可以接受不限个参数,位置可以不按顺序。
范例:
print(format('test', '<20'))
print(format('test', '>20'))
print(format('test', '^20'))
执行结果:
test
test
test
- bytes()
bytes 函数 转换成bytes类型
范例:
我拿到的是gbk编码的,我想转成utf-8编码
print(bytes('你好',encoding='GBK')) # unicode转换成GBK的bytes
print(bytes('你好',encoding='utf-8')) # unicode转换成utf-8的bytes
print(bytes('你好',encoding='GBK').decode('GBK'))
执行结果:
b'\xc4\xe3\xba\xc3'
b'\xe4\xbd\xa0\xe5\xa5\xbd'
你好
网络编程 只能传二进制
照片和视频也是以二进制存储
html网页爬取到的也是编码
- bytearray()
bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
范例:
b_array = bytearray('你好',encoding='utf-8')
print(b_array)
print(b_array[0])
执行结果:
bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')
228
- memoryview()
memoryview() 函数返回给定参数的内存查看对象(Momory view)。
切片 —— 字节类型 不占内存
字节 —— 字符串 占内存
- ord()与chr()
ord():字符按照unicode转数字
chr():数字按照unicode转字符
范例:
print(ord('a'))
print(ord('2'))
print(chr(97))
print(chr(50))
执行结果:
97
50
a
2
- ascii()
只要是ascii码中的内容,就打印出来,不是就转换成\u
范例:
print(ascii('好'))
print(ascii('1'))
执行结果:
'\u597d'
'1'
- repr() 用于%r格式化输出
name = 'egg'
print('你好%s'%name)
print('你好%r'%name)
print(repr('1'))
print(repr(1))
执行结果:
你好egg
你好'egg'
'1'
1
5.2.2 数据集合
5.2.3 字典dict
5.2.4 集合set与frozenset
5.2.3 相关内置函数
- len()
Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。
- enumerate()
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
Python 2.3. 以上版本可用,2.6 添加 start 参数。
- all()
判断是否有bool值为False的值
范例:
print(all(['a','',123]))
print(all(['a',123]))
print(all([0,123]))
执行结果:
False
True
False
- any()
判断是否有bool值为True的值
范例:
print(any(['',True,0,[]]))
执行结果:
True
- zip()
返回一个迭代器
范例1:
l = [1,2,3]
l2 = ["a","b","c"]
for i in zip(l,l2):
print(i)
执行结果:
(1, 'a')
(2, 'b')
(3, 'c')
范例2:
l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):
print(i)
执行结果:
(1, 'a', '*', 'k1')
(2, 'b', '**', 'k2')
- filter()
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
范例1:
ret = filter(is_odd,[1,4,6,7,9,12,17]) # 相当于[i for i in [1,4,6,7,9,12,17] if i % 2 ==1]
print(ret)
for i in ret:
print(i)
执行结果:
1
7
9
17
范例2:
def is_str(s):
if type(s) == str:
return True
ret = filter(is_str,[1,"hello",6,7,"world",12,17])
for i in ret:
print(i)
执行结果:
hello
world
范例3:
def is_str(s):
return type(s) == str
ret = filter(is_str,[1,"hello",6,7,"world",12,17])
for i in ret:
print(i)
执行结果:
hello
world
范例4:
删除none或者空字符串
def is_str(s):
return s and str(s).strip()
ret = filter(is_str, [1, 'hello','',' ',None,[], 6, 7, 'world', 12, 17])
for i in ret:
print(i)
执行结果:
1
hello
6
7
world
12
17
范例5:
请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 开平方实例:
from math import sqrt
print(sqrt(64))
执行结果:
8.0
正式例子:
from math import sqrt
def func(num):
res = sqrt(num)
return res % 1 == 0
ret = filter(func,range(1,101))
for i in ret:
print(i)
执行结果:
1
4
9
16
25
36
49
64
81
100
- map()
map() 会根据提供的函数对指定序列做映射。
范例:
求绝对值
ret = map(abs,[1,-4,6,-8])
print(ret)
for i in ret:
print(i)
执行结果:
filter与map比较
filter 执行了filter之后的结果集合 <= 执行之前的个数
filter只管筛选,不会改变原来的值
map 执行前后元素个数不变
值可能发生改变
- sorted()
sorted() 函数对所有可迭代的对象进行排序操作。
范例1:sort
l = [1,-4,6,5,-10]
l.sort()
print(l)
执行结果:
[-10, -4, 1, 5, 6]
范例2:sort
l = [1,-4,6,5,-10]
l.sort(key = abs) # 在原列表的基础上进行排序
print(l)
执行结果:
[1, -4, 5, 6, -10]
范例3:sorted
l = [1,-4,6,5,-10]
print(sorted(l)) # 生成了一个新列表 不改变原列表 占内存
print(l)
执行结果:
[-10, -4, 1, 5, 6]
[1, -4, 6, 5, -10]
范例4:sorted
l = [1,-4,6,5,-10]
print(sorted(l,key=abs,reverse=True))
print(l)
执行结果:
[-10, 6, 5, -4, 1]
[1, -4, 6, 5, -10]
范例5:
列表按照每一个元素的len排序
l = [' ',[1,2],'hello world']
new_l = sorted(l,key=len)
print(new_l)
执行结果:
[[1, 2], ' ', 'hello world']