博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内置函数
阅读量:6602 次
发布时间:2019-06-24

本文共 7802 字,大约阅读时间需要 26 分钟。

内置函数作用域相关	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)))  # 0b1010 
oct 将十进制转化成八进制字符串并返回。 # 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)

  

转载于:https://www.cnblogs.com/perfey/p/10111101.html

你可能感兴趣的文章
无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错--解决办法...
查看>>
我的友情链接
查看>>
高可用分布式存储(Corosync+Pacemaker+DRBD+MooseFS)
查看>>
vsftpd的应用(匿名和认证,不同用户不同的目录)
查看>>
Open*** 秘钥+用户名密码双重验证登录
查看>>
MongoDB基础理念及操作初探
查看>>
实现图元及属性的算法---凸多边形的扫描填充
查看>>
木偶然-2011.4.19
查看>>
网易——合唱团,动态规划,限制了个数和位置差
查看>>
Oracle TimesTen企业级应用实践分享
查看>>
我的友情链接
查看>>
关于Docker Registry v2的搭建
查看>>
Linux上的进程管理
查看>>
Nginx与用户和服务器之间的传输模式
查看>>
8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
查看>>
MySQL之MySQL:prompt 设置 -登陆MySQL显示用户名和主机以及当前数据库
查看>>
Microsoft Lync2013客户端下载
查看>>
我的友情链接
查看>>
如何加密/混乱C源代码
查看>>
Flume Log4J Appender Flume收集Log4j日志
查看>>