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

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. android 开发-AsyncTask异步任务的实现

     AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过 ...

  2. OracleJDK与OpenJDK的区别和联系

    OpenJDK原是SunMicrosystems公司为Java平台构建的Java开发环境(JDK)的开源版本,完全自由,开放源码.OracleJDK里面包含的JVM是HotSpotVM,HotSpot ...

  3. StringMVC返回字符串

    @RequestMapping(value="twoB.do") public void twoBCode(HttpServletRequest request,HttpServl ...

  4. jmeter压测配置

    windows上面修改最大使用端口数和time_await等待时间 注册表需要添加两个配置,位置:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ S ...

  5. [Freemarker] 在Java中简单实现对Freemarker的引用

    Demo目录结构 ├─src │ ├─main │ │ ├─java │ │ │ └─demo │ │ │ └─freemarker │ │ │ ├─main │ │ │ │ Test.java │ ...

  6. win10+asp+access 父路径开启无效

    如题: 在win10环境下,布署asp+access,发现在用到"../website/"时就出错,提示不能使用父路径 可是我在IIS 的asp中明明打开了父路径的 如下 但是偏偏 ...

  7. Today is the first day of the rest of your life.

    Today is the first day of the rest of your life. 今天是你余下人生的第一天.

  8. C#利用WebClient 两种方式下载文件(一)

    WebClient client = new WebClient(); 第一种 string URLAddress = @"http://files.cnblogs.com/x4646/tr ...

  9. SQLServer从其他表获取的数据更新该表的一部分

    在网上常见的是update  a  set  username  =  username  FROM b  on a.userid=b.userid,该更新语句是对a表中所有行进行更新.如果只更新一部 ...

  10. byte[] 中需要除去的特定 byte

    /// <summary> /// 去掉byte[]中特定的byte /// </summary> /// <param name="SourceByteArr ...