Python模块和包

1.模块

1.模块概述

模块是一个包含了定义的函数和变量等的文件。模块可以被程序引入,以使用该模块中的函数等功能。

说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块

2.import

在Python中用关键字import来引入某个模块,语法如下:

import module1[, module2[,... moduleN]

如:

import sys #引入 python 标准库中的sys模块

sys.argv #是一个包含命令行参数的列表。

sys.path #包含了一个 Python 解释器自动查找所需模块的路径的列表

import math  #引入 python 标准库中的math模块

math.sqrt(2) #取平方根

注:dir() 函数:内置的函数 dir() 可以找到模块内定义的名称。

3.from … import

Python 的 from … import 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:

from modname import name1[, name2[, ... nameN]]

注:

通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入

把一个模块的所有内容全都导入到当前的命名空间,通过from modname import *

4.import...as 语句

给导入的模块起别名

5.模块制作

<1>定义自己的模块

在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。

比如有这样一个文件test.py,在test.py中定义了函数add

def add(a,b):

        return a+b

<2>调用自己定义的模块

那么在其他文件中就可以先import test,然后通过test.add(a,b)来调用了,当然也可以通过from test import add来引入

import test

result = test.add(11,22)

print(result)

<3>__name__属性

在实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息,

例如:

def add(a,b):

        return a+b

# 用来进行测试

ret = add(12,22)

print('int test.py file,,,,12+22=%d'%ret)

如果此时,在其他py文件中引入了此文件的话,测试的那段代码也会执行

至此,可发现test.py中的测试代码,应该是单独执行test.py文件时才应该执行的,不应该是其他的文件中引用而执行

如果想在模块被引入时,模块中的某一程序块不执行,可以用__name__属性来使该程序块仅在该模块自身运行时执行。

每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

<4>__all__属性

模块若定义了__all__属性,则_all__内没有指定的属性、方法、类,不会被from xxx import *时导入

2.

包是一种管理 Python 模块命名空间的形式

包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py 文件,那么这个文件夹就称之为包

__init__.py 控制着包的导入行为,可以在__init__.py文件中编写内容,当导入时,这些语句就会被执行

如:

 

使用import的方式导入

import msg.sendmsg,msg.recvmsg

使用from .. import  的方式导入

from msg import *

注:在__init__.py文件中写入  __all__=['recvmsg','sendmsg']

3.模块发布

1.mymodule目录结构体如下:

 

 

2.编辑setup.py文件

py_modules需指明所需包含的py文件

from distutils.core import setup

setup(name="my", version="1.0", description="my module", author="tom", py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'])

3.构建模块

python setup.py build

    

 

4.生成发布压缩包

python setup.py sdist

打包后,生成最终发布压缩包

 

4.模块安装、使用

1.安装的方式

找到模块的压缩包

解压

进入文件夹

执行命令python setup.py install

注意:

如果在install的时候,执行目录安装,可以使用python setup.py install --prefix=安装路径

2.模块的引入 

在程序中,使用from import 即可完成对安装的模块使用

from 模块名 import 模块名或者*

5.常用模块

os 模块提供用来处理文件和目录

random模块用于生成随机数。

random.random() 用于生成一个0到1的,随机浮点数:0<= n < 1.0

random.randint(a, b) 用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

math 模块提供了许多数学运算函数。

pi:数字常量,圆周率

ceil:取大于等于x的最小的整数值,如果x是一个整数,则返回x

floor:取小于等于x的最大的整数值,如果x是一个整数,则返回自身

pow:返回x的y次方,即x**y

sqrt:求x的平方根

time、datetime模块和 calendar 模块可以处理日期和时间

time模块

import time;  # 引入time模块

ticks = time.time()

print("当前时间戳为:", ticks) #时间戳单位最适于做日期运算。

1.获取当前时间,将时间戳传递给如localtime之类的函数。

localtime = time.localtime(time.time())

print ("本地时间为 :", localtime)

struct_time元组。这种结构具有如下属性:

 

2.获取格式化的时间

可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime():

import time

localtime = time.asctime( time.localtime(time.time()) )

print ("本地时间为 :", localtime)

3.格式化日期

可以使用 time 模块的 strftime 方法来格式化日期:

import time

# 格式化成2016-03-20 11:45:39形式

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 格式化成Sat Mar 28 22:24:24 2016形式

print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))

# 将格式字符串转换为时间戳

a = "Sat Mar 28 22:24:24 2016"

print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")))

 注:

 python中时间日期格式化符号:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(0000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

datetime模块

1.获取当前日期和时间

from datetime import datetime

now = datetime.now()

print(now)    # 2017-09-01 10:28:47.663625

print(type(now))  # <class 'datetime.datetime'>

注:

datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。

如果仅导入import datetime,则必须引用全名datetime.datetime。

datetime.now()返回当前日期和时间,其类型是datetime。

2.获取指定日期和时间

要指定某个日期和时间,我们直接用参数构造一个datetime:

from datetime import datetime

dt = datetime(2017,9,1,12,40,12)

print(dt)  #2017-09-01 12:40:12

print(type(dt)) #<class 'datetime.datetime'>

把一个datetime类型转换为timestamp只需要简单调用timestamp()方法:

from datetime import datetime

dt = datetime(2017,9,1,12,40,12)

print(dt.timestamp())  #1504240812.0

要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:

from datetime import datetime

t = 1504240812.0

print(datetime.fromtimestamp(t)) #2017-09-01 12:40:12

datetime与str的转换

now = datetime.now()

print(now.strftime("%Y-%m-%d %H:%M:%S"))

calendar模块

import calendar

#打印2019年的日历

print(calendar.calendar(2019))

#打印2019年8月的日历

print(calendar.month(2019, 8))

#判断是否是闰年

print(calendar.isleap(2000))

#返回元组,两个整数。第一个是该月的第一天是星期几(星期几是从0(星期一) 到 6(星期日)),第二个是该月的总天数

print(calendar.monthrange(2020,3))

#返回星期几(0(星期一)到6(星期日))

print(calendar.weekday(2020,3,18))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值