模块

day16 模块

1. 自定义模块 注意被调用模块是否有 __all__ = [ ]

  • 定义: 模块就是就是文件,存放一堆常用的函数
  • 模块分类:
    • 1.内置模块(标准库):python解释器自带的,如time模块,os模块
    • 2.第三方模块(各种大神写的):需要额外下载(pypi网站)
    • 3.自定义模块(自己写的):不需要额外下载
  • 模块的好处
    • 1.避免写重复代码
    • 2.可以多次利用
    • 3.拿来主义,提升开发效率

1.1 import (导入) 的使用 和 from 文件名 import 单个变量或函数

    1. 倒入发生的事情

      1.在当前的名称空间中开辟一个新的空间(text)

      2.将模块所有代码执行

      3.通过模块名,进行查找函数(工具)

    1. 多个import只执行一次

    例如:构建一个text.py文件,在其他文件中调用

    import text
    import text
    print("你好啊")
    import text
    执行结果:
    这是一个自定义模块
    你好啊
    

    1. 查看是否已经导入 locals() (查看当前空间中的变量) globals() 查看全局空间中的变量
print(locals())
    1. 第一次导入模块执行三件事

      1.创建一个以模块名命名的名称空间

      2.执行这个名称空间(即导入的模块)里面的代码

      3.通过此模块名+点(.) 调用 ,[与全局没有冲突]

      例如

      import text
      name = "宝元"
      print(text.name)
      print(name)
      结果
      这是一个自定义模块
      这是一个水果箱
      宝元
      

5.为模块起别名 import + 文件名 + as + 新名字

​ 好处:1.将很长的模块名改成很短,方便使用

​ 2.有利于代码的扩展和优化

​ 例如:

msg = """
1.扳手
2.螺丝刀
>>>
"""
choose = input(msg)   
if choose == "1":
    import text
    text.func()
elif choose == "2":
    import test
    test.func()

例如2:

msg = """
1.扳手
2.螺丝刀
>>>
"""
choose = input(msg)
if choose == "1":
    import text as t
elif choose == "2":
    import test as t

t.func()

  1. **from 文件名 import 单个函数或变量 **

    好处: 不用全部导入,占用内存小

    缺点: 会和当前文件定义的变量或者函数发生冲突

name = "宝元"
from text import name
print(name)
结果:
这是一个text工具箱
alex    #被覆盖了
from text import name
name = "宝元"
print(name)
结果:
这是一个text工具箱
宝元    #被覆盖了

解决方法

name = "宝元"
from text import name as t
print(t)
print(name)
结果:
这是一个text工具箱
alex
宝元
  1. **from 文件名 import *** (*代表全部调用)

    name = "宝元"
    def func():
        print("is 一个特大号的钳子")
    
    from text import *
    print(name)
    func()
    结果:
    这是一个text工具箱
    alex
    is 18号扳手
    

    ![

name = "宝元"
def func():
    print("is 一个特大号的钳子")

from text import *
print(name)
func()
结果:
这是一个text工具箱
宝元
is 一个特大号的钳子

  1. 循环导入的问题

    import test              #day16练习
    print(test.name)
    
    import day16练习           #text
    name = "alex" # 说明书
    print("这是一个text工具箱")
    
    import text                 #test
    name = "alex" # 说明书
    print("这是一个test工具箱")
    

9.测试

在当前模块中使用__name__ 就是 "__main__"
当模块被导入的时候__name__就是被导入的模块名

10.导入路径

相对路径

绝对路径

from sys import path
path.insert(0,"E:\\")
import text
print(text.name)

2. time 模块

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 当前时区的名称 
%% %号本身

import time

  • 1.时间戳:表示格林尼治时间从1970年1月1日00:00:00开始按计算到现在的时间,是float类型,浮点数

    import time
    time.time()
    print(time.time())
    结果: 1564050362.5780344
    
    
    
  • 格式化字符串时间: 格式化的时间字符串(Format String): ‘2019-07-25’

  • print(type(time.strftime("%Y-%m-%d %H:%M:%S")))  # 给人看的
    print(time.strftime("%Y-%m-%d %H:%M:%S"))
    print(time.gmtime())  # 结构化时间 数据类型是是命名元组
    print(time.gmtime()[0])
    print(time.gmtime().tm_year)
    结果
    <class 'str'>
    2019-07-25 19:27:12
    time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=11, tm_min=27, tm_sec=12, tm_wday=3, tm_yday=206, tm_isdst=0)
    2019
    2019
    
  • 时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

  • 将时间戳转换为字符串时间

  • print(time.strftime("%Y-%m-%d %H:%M:%S"))  # 给人看的,当地时间
    print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(time.time()))) #格林尼治时间
    结果:
    2019-07-25 19:40:24
    2019-07-25 11:40:24
    
  • 将字符串时间转换成时间戳

  • print(time.mktime(time.strptime("2019-07-25 19:36:36","%Y-%m-%d %H:%M:%S")))
    结果:
    1564054596.0
    
  • 格式化时间

  • time.strftime("格式化","结构化时间")
    print(time.strptime("2019-07-25 19:36:36","%Y-%m-%d %H:%M:%S"))
    结果:
    time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=36, tm_sec=36, tm_wday=3, tm_yday=206, tm_isdst=-1)
    time.strptime("字符串","格式化")
    

3. datetime 模块

4. random 模块

![

​ 全部双引号

posted @ 2019-07-31 14:21  lvweihe  阅读(143)  评论(0编辑  收藏  举报