21. Python 模块

简介:

什么是模块?

在日常的开发工作中,我们要写很多的python代码,如果都写在一个文件中,会导致代码特别难维护,为了拓展代码的可维护性,我们把函写在不同的文件里,这样每个文件包含的文件就比较少,逻辑更加清楚。在python中,我们创建的文件基本都是以.py结尾,那一个.py的文件就称之为模块。

为了方便管理方便管理模块,python中又引了包(Package)这个概念。每个包下面都有一个__init__.py文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,举个例子:test目录下面有__init__.py, aaa.py,bbb.py三个文件,如下所示:

[root@localhost ~]# tree test

test

├── aaa.py

├── bbb.py

└── __init__.py

0 directories, 3 files


1. import

Pycharm常用的导入模块的快捷键:alt + enter

有时候一个文件或者一个包中已经出现了一个函数,我们在另一个python代码中需要引入该文件或者该文件的某个函数,那怎么解决呢?

python给我们提供一个关键字import,下面我们来了解一下它的用法:

1,如果是本地导入文件,直接使用:import filename (即:import filename.py)

2,如果导入的是一个包,该包下面必须是有__init__.py文件才可以导入,否则报错,只有有了__init__.py文件,python解析器才会把这个目录当成是的包


常用的导入模块常用的格式:

form xxx import xxx

import xxx

在导入的时候,.py的后缀直接省略,如果是多级的包,或者想导入包里面的函数等,可以使用from进行导入


举个例子:

from aaa import bbb

import os

import ccc.qqq

from ddd.eee import fff

解释:

第一个例子:导入 aaa 包下面的 bbb 模块或者导入 aaa 文件下面的 bbb 类或者函数

第二个例子:直接导入系统模块os模块

第三个例子:直接导入自定义模块文件(这样写比较麻烦,一般都用第一种和第四种)

第四个例子:第一个例子的深化,导入ddd模块包里eee模块文件内的 fff 方法(方法==> "函数" 或者 "类" 或者 "ddd.eee的 别名")


栗子如下:

import ling.test as aaa     ##aaa 就是ling.test的别名

print('aaaaaaaaaaaaaaaaaaaaaa')

aaa.hello() ## 别名用法。

print('aaaaaaaaaaaaaaaaaaaaaa')

总结:

导入模块,就是一层一层的调用

仅使用 import导入时,  import后面导入的什么,在调用的时候就必须写什么,除非你添加用 from 进行导入。

导入 模块文件 的时候不写后缀名字


2. datetime 时间模块 获取时间

时间模块工作中经常用到的,打印日志等等都会用到时间模块。

先来看看几个子类之间的关系

object

timedelta

tzinfo

time

date

datetime


① time 模块

基本不用于取时间,要取时间推荐使用 datetime 模块

time 独有的用法:

for i in xrange(1,10):

print (i)

time.sleep(3) ##休眠3秒


② datetime 模块

from datetime import datetime

now_time = datetime.now()

print (now_time)

a = now_time.strftime('%Y-%m-%d %H:%M:%S')

print(a)


解释:

1,先导入datetime类

2,通过datetime的now方法就获得当前所需要的时间

3,datetime还是有好多方法的,可以获取year, month,等,请通过dir()方法查看

4,此时我们获得的now_time还是一个datetime类,所以我们需用用strftime方法转换成字符串,strftime的参数就是最终需要字符串的形式。

5,Strftime需要便是时间的参数有很多,下面我们介绍一下最长用的一些参数:


格式参数如下:

%Y 带世纪部分的十制年份

%m 十进制表示的月份

%d 十进制表示的每月的第几天

%H 24小时制的小时

%M 十时制表示的分钟数

%S 十进制的秒数

%c  标准时间,如:04/25/17 14:35:14  类似于这种形式

以上,这几个参数就是最常用到的我们用的时间


另外,在开发过程中,经常要取昨天的时间,或者明天的时间,应该怎么办呢?

例子:

from datetime import datetime, timedelta

now_time = datetime.now()

a = now_time.strftime('%c')

print(now_time)

print(a)

b = now_time + timedelta(days=-1)

print(b)

解释:

timedelta 可以接收 days 和 seconds 两个参数,正数代表几天之后的,负数代表几天之前的

所以,b 代表的是一天之前的时间。


3.时间格式互相转换

时间的三种存在方式:时间对象,时间字符串,时间戳。

(1)字符串 转 datetime:

from datetime import datetime

string = '2017-04-25 11:59:58'

time1 = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')

print(time1)

结果:

2017-04-25 11:59:58


(2)datetime 转 字符串:

from datetime import datetime

string = '2017-04-25 11:59:58'

time1 = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')

print(time1)

print(type(time1))

time1_str = datetime.strftime(time1, '%Y-%m-%d %H:%M:%S')

print(time1_str)

print(type(time1_str))

结果:

2017-04-25 11:59:58

<type 'datetime.datetime'>

2017-04-25 11:59:58

<type 'str'>


(3)时间戳 转 时间对象:

from datetime import datetime

import time

time1 = time.time()

print(time1)

time1_str = datetime.fromtimestamp(time1)

print(time1_str)

print(type(time1_str))


结果:

1493107955.66

2017-04-25 16:12:35.660000

<type 'datetime.datetime'>


解释:

1,datetime模块是包装了time模块的,所以只需要了解datetime模块就可以。

2,time.time()是获取当前时间的时间戳,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

3,datetime下面下面有个函数 fromtimestamp (时间戳)会把时间戳自动转换成 datetime 类型(时间对象类型)




本文转自 听丶飞鸟说 51CTO博客,原文链接:http://blog.51cto.com/286577399/1980461
相关文章
|
21天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
23天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
3天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
5天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
5天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
37 1
|
7天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
47 0
|
8天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
10天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
15天前
|
索引 Python
「Python系列」Python operator模块、math模块
Python的`operator`模块提供了一系列内置的操作符函数,这些函数对应于Python语言中的内建操作符。使用`operator`模块可以使代码更加清晰和易读,同时也能提高性能,因为它通常比使用Python内建操作符更快。
27 0
|
19天前
|
数据采集 网络协议 API
python中其他网络相关的模块和库简介
【4月更文挑战第4天】Python网络编程有多个流行模块和库,如requests提供简洁的HTTP客户端API,支持多种HTTP方法和自动处理复杂功能;Scrapy是高效的网络爬虫框架,适用于数据挖掘和自动化测试;aiohttp基于asyncio的异步HTTP库,用于构建高性能Web应用;Twisted是事件驱动的网络引擎,支持多种协议和异步编程;Flask和Django分别是轻量级和全栈Web框架,方便构建不同规模的Web应用。这些工具使网络编程更简单和高效。