python15 - day05 模块

列表生成式:

data = [1,2,3,4,5,6,7,8,9]

data = [i*2 if i>5 else i for  i in  data]

print(data)

说明:如果i的值大于5则乘以2,否则不变

生成器:

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

惰性运算,边运算边生成。必须是从前到后的依次访问生成数据。

创建Lg的区别仅在于最外层的[]()L是一个list,而g是一个generator。

我们可以直接打印出list的每一个元素,但我们怎么打印出generator的每一个元素呢?

如果要一个一个打印出来,可以通过next()函数获得generator的下一个返回值

generator保存的是算法,每次调用next(g),就计算出g的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。

当然,上面这种不断调用next(g)实在是太变态了,正确的方法是使用for循环,因为generator也是可迭代对象

yield a #返回a, 同时挂起当前这个函数, a返回给了通过__next__()调用当前函数的人

迭代器:

所有的生成器都是迭代器,但是迭代器不一定是生成器。

迭代器是可以被next()函数调用并不断返回值的对象

for 循环本质上也是使用next()函数实现的。

装饰器:

作用:完全符合开发的开放-封闭的原则,开放扩展,封闭源代码,不改变原有的功能代码,不改变原有调用方式,实现扩展新的功能。

模块:

1. 自建模块

2. 第三方模块

Pypi

3. 标准库

OS模块  

提供对操作系统进行调用的接口


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29


os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径

os.chdir("dirname") 
改变当前脚本工作目录;相当于shell下cd

os.curdir 
返回当前目录: (‘.‘)

os.pardir 
获取当前目录的父目录字符串名:(‘..‘)

os.makedirs(‘dirname1/dirname2‘)   
可生成多层递归目录

os.removedirs(‘dirname1‘)   
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

os.mkdir(‘dirname‘)   
生成单级目录;相当于shell中mkdir dirname

os.rmdir(‘dirname‘)   
删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

os.listdir(‘dirname‘)   
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

os.remove() 
删除一个文件

os.rename("oldname","newname") 
重命名文件/目录

os.stat(‘path/filename‘) 
获取文件/目录信息

os.sep   
输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"

os.linesep   
输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

os.pathsep   
输出用于分割文件路径的字符串

os.name   
输出字符串指示当前使用平台。win->‘nt‘;
Linux->‘posix‘

os.system("bash
command")  运行shell命令,直接显示

os.environ 
获取系统环境变量

os.path.abspath(path) 
返回path规范化的绝对路径

os.path.split(path) 
将path分割成目录和文件名二元组返回

os.path.dirname(path) 
返回path的目录。其实就是os.path.split(path)的第一个元素

os.path.basename(path) 
返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素

os.path.exists(path) 
如果path存在,返回True;如果path不存在,返回False

os.path.isabs(path) 
如果path是绝对路径,返回True

os.path.isfile(path) 
如果path是一个存在的文件,返回True。否则返回False

os.path.isdir(path) 
如果path是一个存在的目录,则返回True。否则返回False

os.path.join(path1[,
path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

os.path.getatime(path) 
返回path所指向的文件或者目录的最后存取时间

os.path.getmtime(path) 
返回path所指向的文件或者目录的最后修改时间

sys模块


1

2

3

4

5

6

7

8


sys.argv          
命令行参数List,第一个元素是程序本身路径

sys.exit(n)       
退出程序,正常退出时exit(0)

sys.version       
获取Python解释程序的版本信息

sys.maxint        
最大的Int值

sys.path          
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

sys.platform      
返回操作系统平台名称

sys.stdout.write(‘please:‘)

val = sys.stdin.readline()[:-1]

>>> import sys

>>> import time

>>> for i in range(20):

...     sys.stdout.write("#")

...     time.sleep(0.3)

...

####################>>>

json序列化:

序列化的作用就是持久化内存数据对象。

把一个内存对象转为字符串的形式,就叫做序列化

把一个字符串转成对应的内存对象,就叫做反序列化。

json共四种方法:dumps、dump、loads、load

l  dumps和loads是对字符串进行操作。

l  dump和load可以直接对文件进行操作。

import json
f = open("test","w+",encoding="utf-8")
data = {"name":"kaige","age":22,"sex":"M"}

f.write(json.dumps(data))
f.close()

#读取文件内容
f = open("test","r+",encoding="utf-8")
data = json.loads(f.read())
print(data["age"])

import json
f = open("test","w+",encoding="utf-8")
data = {"name":"kaige","age":22}
json.dump(data,f)
f.close()

#读取文件内容

f = open("test","r+",encoding="utf-8")
data = json.load(f)
print(data["age"])

pickle序列化:

pickle可以对所有的数据类型进行序列化,包括函数,但是只支持python,json不可以序列化函数,支持所有的语言。

软件目录结构:

作业:

支持多用户,每个用户信息单独保存

新开用户默认额度15000

实现购物商场,买东西加入购物车,退出时调用信用卡接口结账,转到银行账户,输入银行账户密码,核对账户余额,扣费。

可以体现,手续费5%,最多值能取信用额度的50%

支持用户账户之间转账,账户余额的加减

记录每个月日常消费流水(日期、商品名称、消费金额、交易类型、手续费)

提供还款接口

用户认证使用装饰器

提供管理接口,包括添加账户、用户额度、冻结账户等

目录:bin conf core log
db

时间: 2024-10-10 16:22:05

python15 - day05 模块的相关文章

python15 - day06 模块

通往财富自由之路 1. 模块 1.1  random随机数 使用方法 import random print(random.random()) print(random.randint(1,10)) #随机数包括10 print(random.randrange(1,10)) #随机数不包括10 练习:生成随机验证码 import random checkcode = '' for i in range(4): current = random.randrange(0,4) if current

导入模块的搜索路径以及sys.path

模块的搜索顺序 #内存---->内置------>sys.path import sys print(sys.path) #打印出当前的sys.path的搜索路径,在内存和内置中都找不到该模块的情况下会到下面的这些路径逐个去找,并以打印出的顺序作为优先级. #['D:\\Python_OldBoy\\day05\\模块与包', 'D:\\Python_OldBoy', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\p

Python基础(递归、模块、包以及正则)-day05

写在前面 上课第四天,打卡: 如果再见不能红着眼,是否还能红着脸: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 2.yield 的表达式形式: x=yield 注意:next(g) #等同于 g.send(None),示例如下: 1 def deco(func): 2 def wrapper(*args,**kwargs): 3 res=func(*args,**kwargs) 4 next(res) 5 return res 6 return

day05匿名函数,内置函数,二分法,递归,模块

yield作为表达式来使用的方式 #grep -rl 'python /root """ 查找root下文件中含有python的文件 """ import os def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper @init def search(target): while True: search

python之路:Day05 --- 常用模块

本节内容 1.模块介绍 2.sys 3.os 4.time & datetime 模块 5.random 6.shutil 7.hashlib 8.logging 9.re正则表达式 10.shelve 11.xml 处理 12.yaml 处理 13.configpareser 14.subprocess 一.模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能

Python Day05 python 环境变量和import模块导入

1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 import 模块名 form 模块名 import * from 模块名 import 模块名 as 新名称 3. 导入模块本质 import 模块名 ===> 将模块中所有的数据赋值给模块名,调用时需要模块名.方法名() from 模块名 import 方法名 ==>将该方法单独放到当前文件运行一遍

day05 协程函数,递归函数,匿名函数lambda,内置函数map reduce filter max min zip sorted,匿名函数lambda和内置函数结合使用,面向过程编程与函数编程,模块与包的使用,re模块内置函数

基础篇 本章大纲: 协程函数 递归函数 匿名函数lambda 内置函数map reduce filter  max min zip sorted 匿名函数lambda和内置函数结合使用 面向过程编程与函数编程 模块与包的使用 re模块内置函数 一,协程函数 注意:函数先定义,后使用.这是函数第一原则.函数主要分为定义,调用 1.1,什么是协程函数 协程函数特点:yield变为表达式,可以通过g.send(value)传值,用send传值时协程函数需要初始化,也可以说是生成器函数的一种 1.2,协

Day05 - Python 常用模块

1. 模块简介 模块就是一个保存了 Python 代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. 模块也是 Python 对象,具有随机的名字属性用来绑定或引用. 下例是个简单的模块support.py 1 def print_func( par ): 2 print("Hello : ", par) 3 return 1)import 语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: import module1[, m

Python自动化基础【day05】:Python常用模块学习

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在