python-模块

python-模块

在python中,模块是代码组织的一种方式。把功能相近的函数或类放到一个文件中,一个文件(.py)就是一个模块(module),模块名就是文件名去掉后缀py。

好处:

  • 提高代码的可复用、可维护性。一个模块编写完毕后,可以很方便的在其他项目中导入。
  • 解决了命名冲突,不同模块中相同的命名不会冲突。

常用标准库

  • builtins 内建函数默认加载
  • math 数学库
  • random 生成随机数
  • time 时间
  • datetime 日期和时间
  • calendar 日历
  • hashlib 加密算法
  • copy 拷贝
  • functools 常用的工具
  • os 操作系统接口
  • re 字符串正则匹配
  • sys Python自身的运行环境
  • multiprocessing 多进程
  • threading 多线程
  • json 编码和解码JSON对象
  • logging 记录日志,调试

导入模块

  1. import 模块名
  • 模块名.变量
  • 模块名.函数
  • 模块名.类
  1. from 模块名 import 变量/函数/类

在代码中可以直接使用变量、函数、类

  1. from 模块名 import *

该模块所有的内容。
但是如果想限制获取的内容,可以在模块中使用__all__=[使用*可以访问到的内容]

  1. 无论是import还是from的形式,都会讲模块内容进行加载
    如果不希望其进行调用,就会用到__name__
    在自己的模块里面__name__:__ main __
    如果在其他模块中通过导入的方式调用的话,__ name __:模块名

__ init __.py文件

当导入包的时候,默认调用__init__.py文件

作用:

  1. 当导入包的时候,把一些初始化的函数、变量、类定义在__init__.py文件中
  2. 此文件中函数、变量等的访问,只需要通过包名、函数…
  3. 结合__all__=[通过*可以访问的模块]

比较

  • from 模块 import *

表示可以使用模块里面的所有内容,如果没有定义__all__所有的都可以访问。
但是如果添加上了__all__,只有__all__=[’’,’’]列表中可以访问

  • from 包 import *

表示该包中内容(模块)是不能访问,就需要再__init__.py文件中定义__all__=[可以通过*访问的模块]

循环导入

大型的python项目中,需要很多python文件,由于架构不当,可能会出现模块之间的相互导入

A:模块
    def test():
        f()
B:模块
    def f():
        test()

避免产生循环导入:

  1. 重新架构
  2. 将导入的语句放到函数里面
  3. 把导入语句放到模块的最后

其他

当你导入一个模块,Python解析器对模块位置的搜索顺序是:

  1. 当前目录
  2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录
  3. 如果都找不到,Python会查看默认路径。UNIX下,默认路径一般为/user/local/lib/python/。模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录、PYTHONPATH和由安装过程决定的默认目录。

单例

class Singleton:
    __instance = None
    def __new__(cls):
        if cls.__instance is None:
            return ...
        return cls.__instance

重点函数:

time()
sleep()
strftime(‘格式’) ----> %Y,%m,%d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值