内置函数2、列表生成式与生成器表达式、模块
内置函数2:
1 # pow(x,y,z) x,y,z x的y次方除于z 得出的结果是除数和余数 2 print(pow(2,3,7)) 3 4 # reversed([] {} ‘‘) 反转 切把l变成可迭代对象 5 l = [1,2,3,4,5,6,3,2,4,6,8] 6 res = reversed(l) 7 print(l) 8 print(list(res)) 9 10 # round() 求四舍五入 11 print(round(8.8)) 12 13 # slice(x,y,z) 把 x,y,z 等同于 x:y:z 步长 14 l1 = [1,2,3,4,5] 15 print(l[1:4:2]) 16 17 sc = slice(1,5,2) 18 print(l[sc]) 19 20 # sum() 求()内所有数的总和 但必须是可迭代对象 21 print(sum([1,2,3,4,5,6,7,8])) 22 print(sum((1,2,3,4,5,7))) 23 24 # zip() 把左边的可迭代对象以1,2,3排列赋值进dic{}里面的values 变成迭代器对象 25 left = ‘kermit‘ 26 right = {‘my‘:1,‘name‘:2,‘is‘:3} 27 res = zip(left,right) 28 print(res) 29 30 # vars 31 # vars() 32 33 # zip 34 # left=‘hello‘ 35 # right={‘x‘:1,‘y‘:2,‘z‘:3} 36 # 37 # res=zip(left,right) 38 # print(list(res))
列表生成式与生成器表达式
1 #1、列表生成式 如果数据量少的情况下建议用这种形式 2 # l = [‘agge%s‘ %i for i in range(1000) if i>50] 3 # print(l) 4 5 6 # 2、生成器表达式 如果数据量较大的情况下建议用这种形式 7 # l1 = (‘kermit%s‘ %i for i in range(999) if i>60) 8 # print(l1) # 得到的是迭代器对象 9 # print(list(l1)) 10 11 12 #把list中的名字变成大写 13 # names = [‘kermit‘,‘egon‘,‘tsb‘] 14 # names = [name.upper() for name in names] 15 # print(names) 16 # res = map(lambda x:x.upper(),names) 17 # print(list(res)) 18 19 20 # 求出names中除了有sb结尾名字的名字长度 21 # res1 = [len(name) for name in names if not name.endswith(‘sb‘)] 22 # print(res1) 23 24 # 查看文件中最长的一列 25 # with open(r‘a.txt‘,‘r‘,encoding=‘utf-8‘) as f: 26 # print(max(line for line in f))
模块!
模块的使用
1 #1 什么是模块? 2 # 模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module 3 4 #2 使用模块 5 6 #2.1 import 导入模块 7 #首次导入模块发生三件事 8 #1、创建一个模块的名称空间 9 #2、执行模块对应文件,将产生的名字存放于1中的名称空间 10 #3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间 11 12 # 什么是模块? 13 # 模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如kermit.py,其中模块名为kermit 14 15 # 使用模块 16 # import 导入的模块 17 # 首次导入模块发生三件事 18 # 1、创建一个模块的名称空间 19 # 2、执行模块对应文件,将产生名字存放于1中的名称空间 20 # 3、在当前执行文件中拿到一个模块,该模块名指向1的名称空间 21 22 # import spam 23 # import spam 强调:导入一次后,再次调用相同的模块不会重复执行文件。 24 # spam.read1() 25 # 26 # 27 # 模块中功能的执行始终以模块自己的名称空间为准 28 # resd1 = 11111 29 # print(spam.read1) 结果不变 30 31 # 为模块起别名 32 # import spam as sp 33 # 34 # sp.read1() 35 36 # 一行导入多个模块 不建议使用 37 # import mysql,oracle,spam 38 # 39 #建议使用 40 # import mysql 41 # import oracle 42 # import spam 43 44 # import spam 45 # def f1(): 46 # pass 47 48 # print(spam.money) 49 # spam.read1() 50 51 # 模块中功能的执行始终以模块自己的名称空间为准 52 # read1=111111 53 # print(spam.read1) 54 55 # money=1111111111111 56 # spam.read1() 57 58 # read1=11111111111111111111111111 59 # spam.read2() 60 61 # money=1111111111111111 62 # spam.change() 63 # print(money) 64 # spam.read1() 65 66 #3、为模块起别名 67 # import spam as sm 68 69 # print(sm.money) 70 # sm.read1() 71 72 # engine=input(‘>>: ‘).strip() 73 # if engine == ‘mysql‘: 74 # import mysql as db 75 # elif engine == ‘oracle‘: 76 # import oracle as db 77 # db.parse() 78 79 #4、一行导入多个模块(不推荐使用) 80 # import spam,mysql,oracle 81 82 #推荐写成多行 83 import spam 84 import mysql 85 import orcacle
模块的使用 from...import ...
1 # from ... import ...py 2 # 首次导入模块发生三件事: 3 # 1、创建一个模块的名称空间 4 # 2、执行模块对应文件,将产生的名字存放于1中的名称空间 5 # 提示:from 。。。 import 。。 与 import前的两件事一模一样 6 # 3、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀 7 # money = 11111 8 # 9 # from spam import money,read1,read2,change 10 # 11 # # print(money) 12 # # print(read1()) 13 # read1() 14 # # print(read2()) 15 # read2() 16 # # print(change()) 17 # change() 18 19 # 注意: 20 # 1、同import,执行模块中的功能,始终以模块的名称空间为准 21 #change() 22 #print(money) #从下往上找money中的值 #1000 23 24 # 2、from ... import 名字,拿到的名字可以不用前缀直接使用,使用起来更方便 25 # 但问题是容易与当前执行文件中相同的名字冲突 26 27 # 3、起别名 28 # from spam import moeny as m 29 30 # 4、在一行导入多个
模块的搜索路径
1 # import m1 2 # 3 # m1.f1() 4 # 模块的查找循序是: 5 # 1、内存中已经加载的模块 6 # 2、内置模块 7 # 3、sys.path路径中包含的模块 8 # 9 # import sys 10 # sys.path.append(r‘E:\kermit\Python\视频\day14\day14\dir1‘) 11 # 12 # import m1 13 # m1.f1() 14 # 15 # import time 16 # time.sleep(10) 17 # 18 # import m1 19 # m1.f1() 20 21 # 强调强调强调强调强调强调强调强调强调强调强调强调 22 # sys.path的第一个路径是当前执行文件所在的文件夹 23 24 # if __name__ == ‘__main__‘: 模块内测试方法 25 # test()