python模块第一篇

  一个函数封装一些数据,那模块可以对函数进行再一次打包,使用模块能极大地提高自身的开发效率,省去自己开发的时间,同时便于查找和修改,更有利于我们进行后期的维护

  在python中,模块主要分为三类:内置模块,第三方模块和自定义模块;内置模块是python中自带的模块,编程过程中,用import导入的一般都是内置模块;python拥有强大的第三方模块,可以在pypi.org中查找相关的第三方模块拿来使用;那自定义模块对于我们来说,一个朋友py文件就是一个自定义模块.

模块导入:

  模块的导入有两种方式,一种是import+模块名,另一种是from 模块名 import 

  import + 模块名,模块名是不需要加后缀名的,每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写模块时,就不用担心我们定义在自己模块中的变量会在被导入时与使用者的全局变量冲突

import 模块名
import 模块名
import 模块名
import 模块名
import 模块名

执行结果: 只打印一次
from the yiyi.py

  但是import导入时有一个缺点,就是它会把文件下的所有内容都导入进去,大量的占用内存,而在python中对它进行了优化,多次导入时会放到内存里,随时用随时取,避免重复导入.

  另外一种导入模式就是 from 模块名 import ,可以指定导入的内容,也可以导入多个内容

  from 模块名 import *,就相当于是import+模块名,这是不推荐使用的;此外,发from 模块名 import 导入多个模块时和import导入多个模块时是一样的,建议一行一行导入,最后结果显示也是一个

  为了更加便捷的导入模块,我么可以给模块起别名.在文件操作中有句柄,那在模块导入中,as就相当于给模块起别名.

  如:import 模块名 as 别名

      from 模块名 import 功能1 as 别名 功能2 as 别名

__all__ = [' '],

  自定义指定使用*的时候导入的内容,在导入的模块中写一个__all__ = [' '],这样就能在调用模块的文件中只导入后面列表中的内容

py文件的两种功能:

  编写好的一个python文件可以有两种用途: 一:脚本,一个文件就是整个程序,用来被执行 二:模块,文件中存放着一堆功能,用来被导入使用

  当文件被当做脚本执行时:__name__ 等于'__main__'

  当文件被当做模块导入时:__name__等于模块名

if __name__ == '__main__': (自己写的代码,做测试)
  __name__在被当做模块导入的时候,__name__就会变成被导入的模块名
  __name__在本文件内就是'__main__'(字符串类型)
if __name__ == '__main__': # 当前文件的测试
  pass     # 要执行测试的内容
foo('我在当做模块在使用')

模块中路径的搜索:

  在from中,一个点是下一级;  ../是返回上一级

  from 模块名 import 功能,当模块名和当前文件在一个大的目录下时.可以直接写文件的名字

  当模块名和当前文件不在一个大的目录下时,就需要进行跨盘操作,首先要导入sys模块,把要使用的模块路径添加到系统的环境变量中

import sys
sys.path.insert(0,'文件路径')        系统环境变量

模块重载:

  一个文件当做模块被使用的时候,如果改变了模块中的一些代码,在这时就需要重新运行一次,导入这个新的文件

test.py,
print(111)
foo.py
from test import *

循环导入:这是一个经常会犯得错误,会报错;在导入的时候形成了一个环状,解决的方法就是加入一些条件,打破循环

编译文件:被导入的模块会生成一个pyc后缀名的字节码,这样能提升加载,编译的效率,当原文件修改时,就会把pyc文件重新写一份
  test.cpython-36,此文件的后缀是pyc,是字节码,能提高编译的效率

time模块

在time模块中,有三种方式:时间戳,字符串时间,结构化时间

  时间戳: 通常来说,时间戳表示的是自1970年1月1日00:00:00开始按秒计算的。我们运行“type(time.time())”,返回的是浮点数,float类型

    通过time.time()来获取时间戳  

  字符串时间: 格式化的时间字符串(Format String): ‘1999-12-06’    '%Y-%m-%d %H:%M:%S'(年-月-日 时:分:秒)

python中时间日期格式化符号:
%y 两位数的年份表示(00-99%Y 四位数的年份表示(000-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 当前时区的名称
%% %号本身

结构化时间:元组(struct_time) struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

在这三种时间形式中有一个转化关系:

  时间戳转结构化时间:localtime,  是北京时间,和伦敦相差8个小时

            gmtime,  UTC时间,与英国伦敦当地时间一致

  print(time.gmtime(时间戳)),  不写默认使用当前的时间戳

  print(time.localtime(时间戳)),不写默认使用当前的时间戳

时间戳和字符串时间的相互转换:

  时间戳和字符串时间是不能直接进行相互转换的,需要经过结构化时间这个中间人

时间戳转字符串时间:

  1,print(time.localtime(时间戳))        转结构化时间

  2,time.strftime(time.localtime(时间戳))      结构化转字符串时间

字符串时间转时间戳:

  1,t = time.strptime('字符串时间','要转入的格式')  字符串时间转为结构化时间

  2,print(time.mktime(t))             结构化转时间戳

t = time.strptime('2008-08-08 08:08:08','%Y-%m-%d %H:%M:%S')
print(time.mktime(t))

datetime,Python中的一个标准库

  from datetime import datetime

在datetime中,

  获取当前时间:print(datetime.now()),

  时间类型转时间戳:  print(datetime.timestamp(datetime.now()))  或  print(datetime.now().timestamp())

  时间戳转时间类型:  print(datetime.fromtimestamp(time.time()))

  

  字符串转时间类型:  datetime.strptime('字符串时间','%Y-%m-%d %H:%M:%S')

  时间类型转字符串:  datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S')

计算时间,可以通过timedelta来实现

  form datetime import datetime,timedelta

  print(datetime.now()) + timedelta(hours=   , days =  , weeks =   )

猜你喜欢

转载自www.cnblogs.com/py8318/p/10279292.html