内置函数作用域相关 globals()——获取全局变量的字典 locals()——获取执行本方法所在命名空间内的局部变量的字典其他 字符串类型代码的执行 eval() 将字符串类型的代码执行并返回结果 exec() 将自字符串类型的代码执行 compile() 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。 1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。 2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。 3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。 #流程语句使用exec code1 = 'for i in range(0,10): print (i)' compile1 = compile(code1,'','exec') exec (compile1) #简单求值表达式用eval code2 = '1 + 2 + 3 + 4' compile2 = compile(code2,'','eval') eval(compile2) ##交互语句用single code3 = 'name = input("please input your name:");print(name)' compile3 = compile(code3,'','single') exec(compile3) 输入输出 input() print() # print(self, *args, sep=' ', end='\n', file=None) 可以更改分隔符,结束符 # 打印进度条 \r 可以把光标移动到行首但不换行 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) print(per_str,end='', flush=True) 内存相关 hash() 返回一个可hash变量(不可变类型)的哈希值,不可hash的变量被hash之后会报错。 id() 返回一个变量的内存地址 数据类型相关 type() 返回变量的数据类型 isinstance(li,list) #判断每某个数据类型个变量是否是某个数据类型 文件操作相关 open() 打开一个文件,返回一个文件操作符,文件句柄 操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+) 不是二进制操作时使用encoding指定编码格式 encode编码 字符串 --> bytes # encode(self, encoding='utf-8', errors='strict') 默认是utf-8可以改为gbk decode解码 bytes --> 字符串 # decode(self, *args, **kwargs 默认是将bytes以utf-8的格式解码也可以改为gbk data = '你好'.encode(encoding='gbk') # 编码 print(data.decode(encoding='gbk')) # 解码 模块操作相关 import time 或 os = __import__('os') 帮助方法 控制台执行help()进入帮助模式,可以输入变量的值或者类型 或者直接help(o) ,o 是参数,查看和变量o相关的操作 和调用相关 callable(o),o是参数,看这个变量是不是可调用。返回 True 或false 查看参数所属类型的所有内置方法 dir() dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量,如print(dir(list)) #查看列表的内置方法和数字相关 数据类型相关: bool 用于将给定参数转换为布尔类型,如果没有参数,返回 False。 int 函数用于将一个字符串或数字转换为整型。(把小数保存为整数时只保留整数部分,去掉小数部分) float 用于将整数和字符串转换成浮点数 complex 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数 complex(1, 2) => (1 + 2j) complex(1) => (1 + 0j) complex("1") => (1 + 0j) complex("1+2j")=> (1 + 2j) # 注意:这complex的参数中的"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错 进制转化相关: bin 将十进制转换成二进制并返回。 # print(bin(10),type(bin(10))) # 0b1010oct 将十进制转化成八进制字符串并返回。 # print(oct(10),type(oct(10))) # 0o12 hex 将十进制转化成十六进制字符串并返回。 # print(hex(10),type(hex(10))) # 0xa 数学运算: abs 返回数字的绝对值。 divmod 计算除数与被除数的结果,返回一个包含商和余数的元组(等价于a // b, a % b) # print(divmod(7,2)) # (3, 1) min 返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值) dic = {'a':3,'b':2,'c':1} print(min(dic,key=lambda x:dic[x])) # x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键 max 返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值) ret = max([1,2,-5,],key=abs) # 按照绝对值的大小,返回此序列最大值,注意keys后面接的是函数名,不要加括号 print(ret) sum 对可迭代对象进行求和计算(可设置初始值) # print(sum((1,2,3),100)) round 保留浮点数的小数位数,默认保留整数。 # print(round(7/3,2)) # 2.33 print(round(7/3)) # 2 pow 求x**y次幂。(三个参数为x**y的结果对z取余)数据结构相关 序列 列表和元组 list 将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素) tuple 将一个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素) 相关内置函数 reversed 将一个序列翻转,并返回此翻转序列的迭代器 slice 构造一个切片对象,用于列表的切片 # 可以通过这种方法把一种切片规则用在多个列表上,不过我还是觉得没什么用 li = ['a','b','c','d','e','f','g'] sli_obj = slice(3) print(li[sli_obj]) # ['a', 'b', 'c'] sli_obj = slice(0,7,2) print(li[sli_obj]) # ['a', 'c', 'e', 'g'] 字符串 str 将数据转化成字符串 format 与具体数据相关,用于计算各种小数,精算等 # 字符串可以提供的参数,指定对齐方式, <是左对齐,> 是右对齐,^是居中对齐 print(format('test', '<20')) # 在20个字符串中左对齐 print(format('test', '>20')) print(format('test', '^20')) # 整形数值可以提供的参数有 'b' 'c' 'd' 'o' 'x' 'X' 'n' None print(format(3, 'b')) # 转换成二进制 # 注意第一个参数必须是整型,不能是字符串 # '11' print(format(97, 'c')) # 转换unicode成字符 # 'a' format(11, 'd') # 转换成10进制 '11' format(11, 'o') # 转换成8进制 '13' format(11, 'x') # 转换成16进制 小写字母表示 'b' format(11, 'X') # 转换成16进制 大写字母表示 'B' format(11, 'n') # 和d一样 '11' format(11) # 默认和d一样 '11' # 浮点数可以提供的参数有 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' None format(314159267, 'e') # 科学计数法,默认保留6位小数 '3.141593e+08' # 3.141593乘以10的8次方 format(314159267, '0.2e') # 科学计数法,指定保留2位小数 '3.14e+08' format(314159267, '0.2E') # 科学计数法,指定保留2位小数,采用大写E表示 '3.14E+08' format(314159267, 'f') # 小数点计数法,默认保留6位小数 '314159267.000000' format(3.14159267000, 'f') # 小数点计数法,默认保留6位小数 '3.141593' format(3.14159267000, '0.8f') # 小数点计数法,指定保留8位小数 '3.14159267' format(3.14159267000, '0.10f') # 小数点计数法,指定保留10位小数 '3.1415926700' format(3.14e+1000000, 'F') # 小数点计数法,无穷大转换成大小字母 'INF' # g的格式化比较特殊,假设p为格式中指定的保留小数位数,先尝试采用科学计数法格式化,得到幂指数exp,如果-4<=exp < 256。 ret = bytearray('alex',encoding='utf-8') print(id(ret)) # 2444194473720 print(ret) # bytearray(b'alex') print(ret[0]) # 97 ret[0] = 65 print(ret) # bytearray(b'Alex') print(id(ret)) # 2444194473720 memoryview ret = memoryview(bytes('你好',encoding='utf-8')) # 1. 函数功能返回内存查看对象,实际上是内存查看对象(Momory view)的构造函数。 # 2. 所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。 # 3. Python内置对象中支持缓冲区协议的对象有bytes和bytearray。 print(len(ret)) # 6 print(ret) # print(bytes(ret[:3]).decode('utf-8')) # 你 print(bytes(ret[3:]).decode('utf-8')) # 好 ord 输入字符找该字符编码的位置 chr 输入位置数字找出其对应的字符 ascii 是ascii码中的返回该值,不是就返回/u... repr 返回一个对象的string形式(原形毕露)。 # %r 原封不动的写出来 # name = 'taibai' # print('我叫%r'%name) # repr 原形毕露 print(repr('{"name":"alex"}')) print('{"name":"alex"}') 数据集合 字典 dict 创建一个字典 集合 set 创建一个集合。 frozenset 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素 相关内置函数 len 返回一个对象中元素的个数 sorted 对所有可迭代的对象进行排序操作 L = [('a', 1), ('c', 3), ('d', 4), ('b', 2), ] sorted(L, key=lambda x: x[1]) # 利用key #[('a', 1), ('b', 2), ('c', 3), ('d', 4)] students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] sorted(students, key=lambda s: s[2]) # 按年龄排序 # [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] sorted(students, key=lambda s: s[2], reverse=True) # 按降序 # [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] enumerate 枚举,返回一个枚举对象,常用于列表中 for index,value in enumerate(list) for i in enumerate([1,2,3],100): # 可以指定起始索引 print(i) all 可迭代对象中,全都是True才是True print(all([1,2,True,0])) any 可迭代对象中,有一个True 就是True print(any([1,'',0])) zip 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同 l1 = [1,2,3,] l2 = ['a','b','c',5] l3 = ('*','**',(1,2,3)) for i in zip(l1,l2,l3): print(i) # (1, 'a', '*') # (2, 'b', '**') # (3, 'c', (1, 2, 3)) filter 过滤 ret = filter(func,[1,2,3,4,5,6,7]) print(ret) # 是左对齐,>这是个迭代器 for i in ret: print(i) # 2 4 6 map 会根据提供的函数对指定序列做映射,将列表中的每个元素作用在函数上 reduce # reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数, # reduce把结果继续和序列的下一个元素做累积计算,其效果就是 # reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)迭代器生成器相关 range next 内部实际使用了__next__方法匿名函数 lambda
# 十进制转为其他进制print(bin(10)) # 0b1010print(format(10,'b')) # 1010print(oct(10)) # 0o12print(format(10,'o')) # 12print(hex(10)) # 0xaprint(format(10,'x')) # a# 其他进制转为10进制print(int('1010',2)) # 10print(int('0b1010',2)) # 10print(int('0o12',8)) # 10print(int('0xa',16)) # 10
# 十进制转为任意进制 , 可以把十进制转为 256进制,以点分隔,ip地址就是256进制def f(n,x): #n为待转换的十进制数,x为机制,取值为2-16 a=[0,1,2,3,4,5,6,7,8,9,'A','b','C','D','E','F'] b=[] while True: s=n//x # 商 y=n%x # 余数 b.append(str(y)) if s==0: break n=s b.reverse() print(b) if x <=16: _b = [str(a[int(i)]) for i in b] return "".join(_b) else: return ".".join(b)