一、与作用域有关
1.locals()
当前作用域的值
2.globals()
全局作用域的值
print(locals()) print(globals())
二、与迭代器/生成器有关
1.next()
与双下方法__next__()一样,next(iterator/generator)
def generator(): for i in range(10): yield i g = generator() print(next(g)) # g.__next__()
2.iter()
与__iter__()方法一样,可迭代对象->迭代器
from collections.abc import Iterator li = list(range(10)) li = iter(li) # li.__iter__() ret = isinstance(li, Iterator) print(ret)
3.range()
可以看成有序数字的list
三、其它
1.dir()
含参数,获取当前参数的属性、方法,无参数获取当前作用域的变量、方法等,注意:不包含内置命名空间的变量和方法
2.help()
help(内容),获取帮助文档,和Linux一样
3.callable()
callable(内容),判断是否可调用,返回值True,False
4.import
导入模块
5.open()
打开文件
6.与内存有关
1)hash(数据),查看是否可哈希,可哈希输出值,不可哈希报错
_hash = hash(123) # 123可哈希 print(_hash) _hash = hash([]) # list不可哈希 print(_hash)
2)id()
查看值(变量、函数)的内存地址
7.输入输出
1)input()
用户交互
2)print()
end:是默认参数,end = '\n'
for i in range(4): print(i, end=' ') # 输出结果:0 1 2 3
sep:sep是默认参数,sep = ' '
print(1, 2, 3, 4, 5, sep='') # 去除1,2,3,4,5之间的空格
file:file也是默认参数,file = 'None',终端的实质是文件
f = open(file='f_1', mode='w', encoding='utf-8') print('Hello, World', file=f) # 文件是f f.close()
flush:flush是默认参数,flush = False,值为False时,一起打印;为True时,一个一个打印
# 简单的进度调 import time for i in range(0, 101, 2): time.sleep(0.1) char_num = i//2 ret = "\r%s%%: %s\n" % (i, '*' * char_num)if i == 100 else '\r%s%%: %s' % (i, '*' * char_num) print(ret, end='', file=True)
8.执行字符串-不建议使用
1)eval(),有返回值,用于计算
s = '1+2+3+4' ret = eval(s) print(ret)
2)exec(),无返回值,用于流程控制
s = """ for i in range(5): print(i) """ exec(s)
3)compile()
编译给eval()和exec()使用,几乎不用
四、与数字相关
1.数据类型
1).bool
2).int
3).float
包含:有序小数,无限循环小数
4).complex
复数:实数+虚数(10j),几乎用不到
2.进制转化
1)bin()
十进制->二进制
2)oct()
十进制->八进制,不常用
3)hex()
十进制->十六进制
print(bin(10)) # 以0b开头 print(oct(10)) # 以0o print(hex(10)) # 以0x
3.数学运算
1).abs()
求绝对值
2).divmod(a,b)
div(除) mod(模/余),除余,a//b 和 a%b
a = divmod(10, 3) print(a) # 输出结果:(3,1)
3).round(a,b)
求float的精度,float a,取小数点后b位
a = round(3.14159, 2) print(a) # 输出3.14
4).pow(a,b)
a的b次幂,a**b
a = pow(2, 5) print(a)
power(a, b, c)
a**b%c
5).sum()
sum(iterable, start)
start从几开始,若不写则从0开始,若没有iterable,返回start
a = sum(list(range(5))) print(a) a = sum(list(range(5)), 10) # start 不是关键字参数 print(a)
6).max()
求最大值,可以用iterable或*args
key = None为默认参数,key = func/函数名
print(max(1, 2, 3, 4)) # 4 print(max([1, 2, 3, 4])) # 4 print(max(1, 2, 3, 4, -5)) # 4 print(max(1, 2, 3, 4, -5, key = abs)) # -5
7)min()
求最小值,用法和max()一样,最好打散*
print(min(1, 2, 3, 4)) # 1 print(min([1, 2, 3, 4])) # 1 print(min(1, 2, 3, 4, -5)) # -5 print(min(1, 2, 3, 4, -5, key = abs)) # 1
五、最重要的内置函数
1.len()
作用:获取容器数据类型的长度
print(len('abc')) # str print(len([1, 2, 3, 'a'])) # list print(len((1, 2, 3, 'a'))) # tuple print(len({'k1': 'v1', 'k2': 'v2'})) # dict print(len({'k1', 'k2'})) # set
2.zip()
拉链方法
zip(iter),返回值可迭代
li = [1, 2, 3, 'a'] t = (1, 2, 3, 'a') dic = {'k1': 'v1', 'k2': 'v2'} se = {'k1', 'k2'} # dict 和 set 是无须的 a = zip(li, t, dic, se) for i in a: print(i) """ 结果: (1, 1, 'k1', 'k1') (2, 2, 'k2', 'k2') """
3.filter()
filter(函数名, 可迭代对象),返回值可迭代
filter(),筛选True
# 求1-100的偶数 def func1(x): return x % 2 == 0 # 为偶数返回True ret = filter(func1, list(range(1, 101))) # ret为可迭代对象 for i in ret: print(i)
# 过滤1-100中平凡根为整数的值 from math import sqrt def _sqrt(x): if sqrt(x).is_integer(): return True ret = filter(_sqrt, list(range(1, 101))) for i in ret: print(i) """ 结果: 1 4 9 16 25 36 49 64 81 100 """
# 过滤空字符串 def func1(x): return x and str(x).strip() ret = filter(func1, [' ', [], 'ab', '', 123, {}]) for i in ret: print(i) """ 结果: ab 123 """
4.map()
map(函数名,可迭代对象),返回值是可迭代对象
# 求list元素的绝对值,abs()里的参数不能是list ret = map(abs, [1, -1, 2, -4]) for i in ret: print(i) print(list(ret)) # [],值只能取一次
# 求平方大于10的数 def func1(x): if pow(x, 2) > 10: return x ret = map(func1, [1, 2, 3, 4]) for i in ret: print(i) """ 结果: None None None 4 """
map()和filter()的区别
1).filter()是删选,获取值的数量<=原来的
2).map(),获取值的数量不变
5.sorted()
sorted(iterable, key=函数ming, revese='Flase')
reverse默认False
# sorted() li = [1, -1, 4, -3] li2 = sorted(li, key = abs, reverse=True) print(li2) # sort() li.sort(key = abs, reverse=True) print(li)
sort()和sorted()的区别
1).sort(),不创建新的内存地址
2)sorted(),创建新的内存地址
六、数据类型的强制转化
1.str
2.list
3.tuple
4.set
5.frozenset()
把集合变成不可变数据类型
6.dict
七、其它常用方法
1.ord()
把字母->数字,对应Ascii码或unicode
2.chr()
数字->字母,对应Ascii码或unicode
print(ord('A')) # 65 print(chr(97)) # a
3.any()
any(iterable),任何一个元素为True,返回True
4.all()
all(iterable),所有元素为True,返回True,否则False
print(any(['', [], {}, True])) # True print(all([1, 'a', []])) # False
5.bytes()
bytes(str, encoding),将str->bytes
print(bytes('tom', encoding='utf-8')) # b'tom'
7.repr()
就是%r
s = 'tom' print('Hello, %s' % s) print('Hello, %r' % s) """ 结果: Hello, tom Hello, 'tom' """
8.sorted()
sorted(iterable, key, reverse)
li = [1, -1, 4, -3] ret = sorted(li, key=abs, reverse=True) print(ret) # 结果:4,-3,1,-1
9.reversed()
反转,返回值为可迭代
li = [1, -1, 4, -3] ret = reversed(li) for i in ret: print(i)
七、总结
1.带有key的方法
max(), min(), filter(), map(), sorted()
2.返回值是迭代器
zip(), map(), filter(), reversed()
注意:sorted() 和reversed()都是创建新的值,重新开辟新的内存空间