Python3-模块、包的使用

Python3-模块、包的使用

1. 模块介绍

模块是一个包含所有事先定义好的函数和变量的文件,其后缀名是.py。
模块可以被别的程序引入,以使用该模块中的函数等功能。
通俗一点说:模块就是py脚本,里面有定义好的函数和变量,可以在其他py程序中调用模块中的函数和变量。
在这里插入图片描述

import sys
print(sys.argv)   # py程序路径列表
print(sys.path)   # python可执行程序路径列表

关于具体如何导入模块或导入模块中的函数、变量的方法,之前的博客有介绍,这里就不重复讲述了。

2. __name__属性

# filename:test
if __name__ == '__main__':
   print('程序自身在运行')
else:
   print('我来自另一模块')

在这里插入图片描述
每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。
可以使用该属性判断这个模块运行在test.py还是在其他程序。

3. dir()函数

函数 dir() 可以找到模块内定义的所有函数或变量的名称。以一个字符串列表的形式返回。
作用在于:如果不知道这个模块有哪些函数或变量,可以通过dir()函数查看下。

import test, sys, math
print(dir(test))
print(dir(sys))
print(dir(math))
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '__unraisablehook__', '_base_executable', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_enablelegacywindowsfsencoding', '_framework', '_getframe', '_git', '_home', '_xoptions', 'addaudithook', 'api_version', 'argv', 'audit', 'base_exec_prefix', 'base_prefix', 'breakpointhook', 'builtin_module_names', 'byteorder', 'call_tracing', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_origin_tracking_depth', 'getallocatedblocks', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'platlibdir', 'prefix', 'pycache_prefix', 'set_asyncgen_hooks', 'set_coroutine_origin_tracking_depth', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'unraisablehook', 'version', 'version_info', 'warnoptions', 'winver']
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']

4. 标准模块

Python 本身带着一些标准的模块库。如sys、math模块。

5. 包

包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。
每个模块都是一个.py文件,如a.py
包可以看作是包含__init__.py模块的文件夹。
从关系上看如下图:
p1是一个包,包含必需的__init__.py模块,还包含p10p11两个子包和t1模块。

在这里插入图片描述
p10这个子包,包含必需的__init__.py模块和t1000模块。
在这里插入图片描述
p100这个子包,包含必需的__init__.py模块,就没有其他模块。
在这里插入图片描述

  • 导入包里面的某个模块:如导入t1000模块,import p1.p10.p100.t1000,在调用t1000模块内的函数或变量时要带上模块名。【 import 后必须是子包或模块】
  • 导入包里面的某个模块from p1.p10.p100 import t1000,在调用t1000模块内的函数或变量时要带上模块名。【 import 后必须是子包或模块】
  • 导入模块内的某个函数fun_namefrom p1.p10.p100.t1000 import fun_name,这时可以直接使用该函数。
  • from package import *:在使用这种形式导入模块时,会将一个包下面所有的子模块都导入。不建议使用此种方式。
    导入语句遵循如下规则:如果包定义文件 __init__.py 存在一个叫做__all__的列表变量,那么在使用 from package import * 的时候就把这个列表中的所有名字作为包内容导入。

6. 常用python标准库(模块)概述

接口名导入模块
操作系统接口import os
管理文件和目录import shutil
文件通配符import glob
命令行参数import sys
字符串正则匹配import re
数学符号import math
随机数工具import random
访问互联网urllib.request
发送邮件import smtplib
日期和时间from datetime import date
数据压缩import zlib gzip bz2 zipfile tarfile
性能度量from timeit import Timer
测试模块import doctest unittest

可以在安装目录下的Lib目录下查看各个模块的源文件。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值