day14之模块
一、列表生成式与生成表达式
1、列表生成式(数据量小)
要求:在列表内造100个元素
示例:
l=[]
for i in range(100):
l.append('egg%s'%i)
print(l) #可简化如下格式:
l=['egg%s'%i for i in range(100)]
print(l)
1.2、常用列表生成式
示例:
l=['egg%s'%i for i in range(100) if i > 10]
print(l)
注:此处不能写else,因为无法判断else输入for 还是 if
2、生成器表达式(数据量大)
l=('egg%s'%i for i in range(100) if i > 10)
#1.
res=l.__iter__()
print(res.__next__())
print(res.__next__())
#2.
print(next(l))
print(next(l))
#3.
for i in l:
print(i)
3、练习题
3.1、把列表内元素都变成大写
names=['egon','alex','wupeiqi','yuanhao','lxx_sb']
names=[i.upper() for i in names]
print(names)
3.2、把结尾带sb的过滤掉
names=['egon','alex','wupeiqi','yuanhao','lxx_sb']
names=[i for i in names if not i.endswith('sb')]
print(names)
3.3、保存剩下的名字的长度
names=['egon','alex','wupeiqi','yuanhao','lxx_sb']
names=[len(i) for i in names ]
print(names)
3.4、求a.txt中最长的行的长度,需要使用max函数
a.txt文件内容如下:
sdfsdfsdgffsdgfdshfdgfh
12231321311321
132132
321
321
321
32
sdaflkjsdlkfs
sdflkjsdlkfjlsdjf
sdlkfjlsddjflk
1.
with open('a.txt','r',encoding='utf-8')as f:
nums=[len(line) for line in f]
print(nums)
print(max(nums))
2.
with open('a.txt','r',encoding='utf-8')as f:
nums=(len(line) for line in f)
# print(nums)#内存地址
# print(next(nums))#取出一个值
# print(max(nums))#取出最大值 print(max(len(line) for line in f)) #取出最大值
二、模块
1、什么是模块?
模块就是系统功能的结合体,在python中一个py文件就是一个模块,比如module.py其中模块名是module。
2、使用模块
2.1、import导入模块
首次导入模块发生三件事:
1、创建一个模块的名称空间
2、执行模块对应的文件,将产生的名字存放于1中的名称空间
提示:from ... import ... 与import 前两件事是一模一样
3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间
执行:
import time
import time
import time
time.sleep(2)
强调:之后的导入会直接引用第一次导入的结果,不会重复执行文件
模块中功能的执行始终以模块自己的名称空间为准
3、为模块起别名
import time as sm
sm.sleep(2)
import time as mysql
mysql.sleep(4)
功能升级示例:
如果两个模块有类似功能,用户可以选择执行
engine=input('>>:').strip()
if engine == 'sm':
import sm as db
elif engine == 'mysql':
import mysql as db #执行db模块中的函数:db.xxx(),输入什么调什么功能
4、一行导入多个模块
不推荐使用
import time , requests , _mysql
推荐成多行
import time
import requests
import json
5、模块的使用之from ... import ...
首次导入模块发生三件事:
1、创建一个模块的名称空间;
2、执行模块对应的文件,将产生的名字存放于1中名称空间
提示:from ... import ... 与import 前两件是一模一样
3、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀
from ... import...名字,拿到的名字可以不加前缀直接使用,使用起来更加方便,
但问题是容易与当前执行文件中相同的名字冲突
注意:同import,执行模块中的功能,始终以模块的名称空间为准
6、起别名
from requests import get as m
print(m)
可以在一行导入多个,'*'代表所有,如果在模块中存在__all__=['get',....],那么'*'代表列表内的一些功能
from requests import *
7、模块的设计者__name__的使用
spam.py文件内容:
# -*- coding:utf-8 -*-
#spam.py
print('from the spam.py')
__all__=['money','read1']#from ... import * money=1000 def read1():
print('spam模块:',money) def read2():
print('spam模块')
read1() def change():
global money
money=0 # print(__name__)
#__name__的值
#1、在文件被直接执行的情况下,等于'__main__'
#2、在文件被导入的情况下,等于模块名 if __name__ == '__main__':
# print('文件被当做脚本执行了')
read1()
else:
print('文件被导入了')
8、模块的搜索路径
import sys
print(sys.path)
查看内存中被导入的模块
import sys
print(sys.modules)
获取到文件路径列表:
['D:\\mypython\\projects\\函数\\day14', 'D:\\mypython',
'D:\\Python\\Python36\\python36.zip', 'D:\\Python\\Python36\\DLLs',
'D:\\Python\\Python36\\lib', 'D:\\Python\\Python36',
'D:\\Python\\Python36\\lib\\site-packages'] 第一条路径是:此文件的执行路径
可以看做python文件 因此模块的查找顺序是:
1、 内存中已经加载的模块
2、 内置模块
3、 sys.path路径中包含的模块
import sys
sys.path.append(r'D:\mypython\projects\函数\day14') import spam
read1()
强调:sys.path的第一路径就是当前执行文件所在的文件夹
day14之模块的更多相关文章
- day14_7.16 模块
一.模块 1.什么是模块? 模块就是一系列功能的结合体. 模块的三种来源: 1.内置的,也就是python解释器自带的,可以直接导入 2.第三方的,需要下载的 3.自定义的,自己写的模块 模块的四种表 ...
- Python基础篇【第3篇】: Python异常处理、反射、动态导入、利用反射的web框架
异常处理 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当P ...
- Day-14: 常用的内建模块
collections包含对tuple.list.dict等派生出新功能 namedtuple用来为tuple类型派生出一个新名字的tuple类,并提供用属性引出的功能. >>> f ...
- python学习day14 装饰器(二)&模块
装饰器(二)&模块 #普通装饰器基本格式 def wrapper(func): def inner(): pass return func() return inner def func(): ...
- Day14 Python基础之os/sys/hashlib模块(十二)
os模块 os.getcwd() #获取当前工作路径 os.chdir(‘dirname1/dirname2/dirname3’) #改变当前脚本的工作路径,相当于cmd下的cd os.makedi ...
- Python开发基础-Day14正则表达式和re模块
正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...
- python全栈开发- day14列表推导式、生成器表达式、模块基础
一.列表推导式 #1.示例 数据量小 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i fo ...
- Python之路,Day14 - It's time for Django
Python之路,Day14 - It's time for Django 本节内容 Django流程介绍 Django url Django view Django models Django ...
- Python之旅.第四章.模块与包 4.02
一.模块的使用之import 1 什么是模块?模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module2 使用模块2.1 import 导入 ...
随机推荐
- 《从0到1学习Flink》—— Flink 项目如何运行?
前言 之前写了不少 Flink 文章了,也有不少 demo,但是文章写的时候都是在本地直接运行 Main 类的 main 方法,其实 Flink 是支持在 UI 上上传 Flink Job 的 jar ...
- smarty模板引擎之if, elseif else
Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条 ...
- CQRS之旅——旅程1(我们的领域:Contoso会议管理系统)
旅程1:我们的领域:Contoso会议管理系统 起点:我们从哪里来,我们带来了什么,谁将与我们同行?" 只要前进,我愿意去任何地方." --大卫•利文斯通 本章介绍了一个虚构的公司 ...
- ElasticSearch安装(以Docker的方式)
拉取docker镜像: docker pull docker.elastic.co/elasticsearch/elasticsearch:6.1.1 命令行方式启动 测试环境 :docker ...
- 给 Magento 2 添加缓存层的分析与尝试
虽然黑色星期五有惊无险的过去了, 但是 Magento 2 社区版无法读写分离这个限制, 始终是悬在整个网站上的一把利剑. 我之前尝试过给 Magento 2 写一个 MySQL 读写分离的插件, 在 ...
- $.ajax防止多次点击重复提交的方法
第一种:使用$.ajaxPrefilter( [dataTypes], handler(options, originalOptions, jqXHR) ) 方法:$.ajaxPrefilter()方 ...
- echarts使用中的那些事儿(一)
近来由于有几个小项目要用到echarts里的一些图,不得不使用,可是要完全按照自己的意愿来,要对它有些了解,要翻阅资料,遂有以下小结: 1.最开始第一步是把数据调出来就行,能在图上显示就成,以下是最开 ...
- 创作了一个xml的替代格式
xml格式: <?xml version="1.0" encoding="GB2312"?> <Relations> <Relat ...
- SQLserver2005描述对数据的调用
SQL Server2005 采用了下面的4部分结构 服务器名称.数据库名称.架构名称.数据对象名称
- python基础-字符串操作
输出高亮 语法: 显示方式.前景色.背景色至少一个存在即可. 显示方式:0(关闭所有效果),1(高亮),4(下划线),5(闪烁),7(反色),8(不可见). 前景色以3开头,背景色以4开头,具体颜 ...