首页 > 技术文章 > Day 14: 内置函数:

sunjinchao 2019-06-02 22:34 原文

Python提供了,许多内置的函数我们按 函数的作用来分类:

一、作用域相关的内置函数(2个)

(1)、globals() 更改全局变量

(2)、locals()更改局并命名空间的变量(上一级)

五、其他

1、字符串类型代码的执行(3)

  (1)、eval()  将字符串类型得代码执行并返回结果

    1 print(eval(('1+2+3+4'))) 2 #输出10 

  (2)、exec()将字符串类型的代码执行 

print(exec("1+2+3+4"))
exec("print('hello,world')")
#输出 None
#hello,world

  (3)、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'。

code1 = 'for i in range(0,3): print (i)'
compile1 = compile(code1,'','exec')
exec (compile1)
#输出0,1,2

 2、输入输出

(1)input,print

1 test = input('请输入')#输入的内容显示在屏幕上
2 print(test)#在屏幕上显示所打印的东西

3、内存相关

(1)、id

a = 1
print(id(a))
#140705006216016 变量内存地址

4、文件系统相关

(1)open :打开一个文件 操作模式,r,读,W,写,a追加 每一种模式都可以用二进制的方式操作(rb,ab,wb)可以指定enconding比吗

f = open('file_name','w',encoding='utf-8')
#f 文件句柄,file_name文件名,W ,写模式,'utf-8'编码模式

5、帮助

(1)help

# help()
#在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出
help(print)
#加参数,此命令的相关文档

6、查看参数所属类型的所有内置方法

(1)dir

 1 print(dir(dict)) 2 #查看dict的内置方法,比如get,pop等等 

二、和数字相关

1、数据类型

(1)bool 查看bool值类型

 1 bool()#布尔值 2 print(bool(0)) 3 #输出False 

(2)int 整数

a = 1.153
print(int(a))
# 输出1

(3)float 浮点数

 1 a = 1 2 print(float(a)) 3 #输出1.0 

(4)complex 复数,对数学研究的去看看,我对着不感兴趣

2、进制转换(bin,oct,hex)

1 num = 18
2 #转换成二进制
3 print(bin(num))
4 #转换成八进制
5 print(oct(num))
6 #转换成16进制
7 print(hex(num))
8 #输出 0b10010,0o22,0x12   

3、数学运算

(1)abs 

print(abs(-11))
#11

(2)divmod 返回(除,余)

print(divmod(19,2))
#19/2  输出 9,1 

(3)round小数精确

 1 print(round(18.885465465,2)) 2 #精确至小数点后两位 ,四舍五入 3 #18.89

(4)pow幂运算

 1 print(pow(3,3)) 2 #27 3的三次方 

(5)sum求和

lis = [1,23,43,5,21]
print(sum(lis))
#输出93

注意:sum只能接收可迭代对象,不能sum(1,2,3,5)

(6)max计算最大值

lis = [1,23,43,5,21]
print(max(lis))
#输出43

(7)min计算最小值

lis = [1,23,43,-5,21]
print(min(lis))
#输出-5
print(min(lis,key=abs))
# 输出1 key可以传方法,也可以传函数 

 三、和数据结构相关

1、序列

(1)列表和元组[list,tuple] 

 (2) reversed() 反转序列 【本身有序的序列才可以反转】

 1 ret = reversed([1,2,3,4,5]) 2 for i in ret:#ret 是一个生成器 3 print(i) 

 注:

1 ret = reversed('123adsaga')
2 print(''.join(list(ret)))
3 #拼接成一个新字符串

 (3)slice 切片

 1 lis = [1,2,3,4,5] 2 my_slice = slice(1,3,2) 3 print(lis[my_slice])#lis[1:3:2] 

2、字符串

(1)str 字符串强转

(2)format格式化

(3)bytes  把一个字符串转成二进制 

1 t = 'sunjinyao'
2 by = bytes(t,encoding='utf-8')#转换成UTF-8
3 print(by.decode('utf -8'))#decode 转换回来
4 #转换的编码必须一致

(4)bytearray         #array == 数组 

 1 ret = bytearray('sunjinyao',encoding='utf-8')
 2 print(ret)
 3 #bytearray(b'sunjinyao')
 4 for i in ret:
 5     print(i)#打印的是字符编码
 6 '''117
 7 110
 8 106
 9 105
10 110
11 121
12 97
13 111
14 '''
View Code

(5)ord 字符按照unicode转成数字

(6)chr 把数字转换字符

 1 print(ord('a')) 2 print(chr(97)) 

(7)ascii 字符串转ascii

  #print(ascii('你好'))

(8)repr 

1 print(repr(123))
2 print(repr('123'))
3 #在解释器里面2个是看不出来类型的,如果加repr就可以看出来

3、数据集合

(1)字典dict

  (2)set 集合

(3)frozenset #定义不可变集合

 1 s = set('sunjinyao') 2 s_1 = frozenset(s) 3 print(s_1) (不可删除,不可增加)

4、相关内置函数

(1)len 计算长度 

(2)enumerate

  将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 

1 seq = ['one', 'two', 'three']
2 for i, element in enumerate(seq):
3     print(i, element)
4 '''
5 输出
6 0 one
7 1 two
8 2 three
9 '''

 (3)all 判断是否有bool值为False的值 # 接受可迭代对象

 (4)any 判断是否有bool值为True的值

 1 print(all([1,2,3,4,'']))#一个为假,都是假 2 print(any([1,2.0]))#有一个就为真, 

(5)zip拉链

 1 lis_1 = (1,2,3,4,5)
 2 lis_2 = ('a','b','c','d')
 3 lis_3 = (9,8,7,6,5)
 4 ret = zip(lis_1,lis_2,lis_3)# 迭代器
 5 for i  in ret:
 6     print(i)
 7 '''
 8 (1, 'a')
 9 (2, 'b')
10 (3, 'c')
11 (4, 'd')
12 '''

(6) filter过滤  返回一个迭代器对象

收两个参数,第一个为函数,第二个为序列

1 def is_odd(n):
2     return n % 2 == 1
3 tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
4 newlist = list(tmplist)
5 print(newlist)
6 #[1, 3, 5, 7, 9]

(7) map  #根据函数的功能对 序列进行操作

1 def square(x) :            # 计算平方数
2     return x ** 2
3 ret = map(square,[1,2,3,4,5])  # 计算列表各个元素的平方
4 print(list(ret))
5 #[1, 4, 9, 16, 25]

(8) sorted 排序

 1 lis = [15,6,4,32,5,57] 2 print(sorted(lis))#排序。默认从小到大 

#sorted(lis,reverse=True)  从大到小

推荐阅读