一、列表生成式与生成表达式

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之模块的更多相关文章

  1. day14_7.16 模块

    一.模块 1.什么是模块? 模块就是一系列功能的结合体. 模块的三种来源: 1.内置的,也就是python解释器自带的,可以直接导入 2.第三方的,需要下载的 3.自定义的,自己写的模块 模块的四种表 ...

  2. Python基础篇【第3篇】: Python异常处理、反射、动态导入、利用反射的web框架

    异常处理 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当P ...

  3. Day-14: 常用的内建模块

    collections包含对tuple.list.dict等派生出新功能 namedtuple用来为tuple类型派生出一个新名字的tuple类,并提供用属性引出的功能. >>> f ...

  4. python学习day14 装饰器(二)&模块

    装饰器(二)&模块 #普通装饰器基本格式 def wrapper(func): def inner(): pass return func() return inner def func(): ...

  5. Day14 Python基础之os/sys/hashlib模块(十二)

    os模块 os.getcwd()  #获取当前工作路径 os.chdir(‘dirname1/dirname2/dirname3’) #改变当前脚本的工作路径,相当于cmd下的cd os.makedi ...

  6. Python开发基础-Day14正则表达式和re模块

    正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...

  7. python全栈开发- day14列表推导式、生成器表达式、模块基础

    一.列表推导式 #1.示例 数据量小 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i fo ...

  8. Python之路,Day14 - It's time for Django

    Python之路,Day14 - It's time for Django   本节内容 Django流程介绍 Django url Django view Django models Django ...

  9. Python之旅.第四章.模块与包 4.02

    一.模块的使用之import 1 什么是模块?模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module2 使用模块2.1 import 导入 ...

随机推荐

  1. PHP面向对象编程一

    php面向对象编程(一)   类与对象关系: 类就像一个人类的群体 我们从类中实例化一个对象 就像是制定一个人. 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何 ...

  2. Devexpress之GridControl显示序列号

    先上图: 操作方法: 1.先设置一下gridview中属性:IndicatorWidth,一般为:40.如下图:(一般可以显示5位数字.如要更长显示,自己测试一下.) 2.找到gridview中的:C ...

  3. python中*args, **kwargs理解

    先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '----------- ...

  4. Mavlink 协议 理解

    来源:blog.csdn.net/super_mice/article/details/44836585 之前看了mavlink协议,网上关于mavlink的资料不多.本文大概总结了下对mavlink ...

  5. slfj4 + logback

    slf4j:(Simple Logging Facade for Java,简单日志门面),它不是具体的日志解决方案,只服务于各种各样的日志系统.在使用SLF4J的时候,不需要再代码中或配置文件中指定 ...

  6. Cocos2d-x v3.1 GUI系统--环境构建(七)

    Cocos2d-x v3.1 GUI系统--环境构建(七) 在使用Cocos2d-x的GUI系统时,由于生成的工程默认是没有将GUI系统所需的库导入到项目的,所以我们必须把库导入到工程中并对工程做一些 ...

  7. 梦织未来Windows驱动编程 第04课 驱动相关的数据结构

  8. STM32启动流程

    启动文件主要工作: . 设置堆栈指针SP=_initial_sp . 设置PC指针=Reset_Handler . 配置系统时钟 . 配置外部SRAM用于程序变量等数据存储(可选) . 调用C库中的_ ...

  9. 解决Win10桌面右键卡顿一直转圈圈的

    把系统重置之后,发现在桌面点击右键时一直转圈,但是在文件夹等非桌面位置都正常.可能是我之前修改注册表添加右键选项造成的,也可能不是,因为将修改的地方删除还是没有解决问题,555. 上网搜素一波,发现大 ...

  10. CSS清除浮动方法总结

    什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高 ...