搞懂Python模块的用法
1、import sys 引入 python 标准库中的 sys.py 模块。
2、sys.argv 是一个包含命令行参数的列表。
3、sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
import sys
print('命令行参数如下:')
for i in sys.argv:
print(i)
print('\n\nPython 路径为:', sys.path, '\n')
命令行参数如下:
exec.py
Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
import模块名1 [as 别名1], 模块名2 [as 别名2],...:
from模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],...:
# 导入sys整个模块
import sys
# 使用sys模块名作为前缀来访问模块中的成员
print(sys.argv[0])
/Users/yf/workspace/python/class/script.py
# 导入sys、os两个模块
import sys,os
# 使用模块名作为前缀来访问模块中的成员
print(sys.argv[0])
# os模块的sep变量代表平台上的路径分隔符
print(os.sep)
/Users/yf/workspace/python/class/script.py
\
# 导入sys、os两个模块,并为sys指定别名s,为os指定别名o
import sys as s,os as o
# 使用模块别名作为前缀来访问模块中的成员
print(s.argv[0])
print(o.sep)
/Users/yf/workspace/python/class/script.py
\
# 导入sys模块的argv成员
from sys import argv
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])
/Users/yf/workspace/python/class/script.py
# 导入sys模块的argv成员,并为其指定别名v
from sys import argv as a
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(a[0])
/Users/yf/workspace/python/class/script.py
# 导入sys模块的argv,winver成员
from sys import argv, version
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])
print(version)
/Users/yf/workspace/python/class/script.py
3.8.3 (v3.8.3:6f8c8320e9, May 13 2020, 16:29:34) [Clang 6.0 (clang-600.0.57)]
# 导入sys模块的argv,winver成员
from sys import argv as a, version as v
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(a[0])
print(v)
/Users/yf/workspace/python/class/script.py
3.8.3 (v3.8.3:6f8c8320e9, May 13 2020, 16:29:34) [Clang 6.0 (clang-600.0.57)]
# 导入sys模块的argv,winver成员
from sys import *
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])
print(version)
/Users/yf/workspace/python/class/script.py
3.8.3 (v3.8.3:6f8c8320e9, May 13 2020, 16:29:34) [Clang 6.0 (clang-600.0.57)]
# 导入module1 中的stringutils 成员,并指定其别名为v1
from module1 import stringutils as v1
# 导入module2 中的stringutils 成员,并指定其别名为v2
from module2 import stringutils as v2
v1.text()
v2.text()
if __name__ == '__main__':
print(程序自身在运行)
else:
print(我来自另一模块)
# 导入sys模块的argv,winver成员
import sys
print(dir(sys))
['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '__unraisablehook__', '_base_executable', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_framework', '_getframe', '_git', '_home', '_xoptions', 'abiflags', 'addaudithook', 'api_version', 'argv', 'audit', 'base_exec_prefix', 'base_prefix', 'breakpointhook', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', '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', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'pycache_prefix', 'set_asyncgen_hooks', 'set_coroutine_origin_tracking_depth', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'unraisablehook', 'version', 'version_info', 'warnoptions']
新建一个文件夹,文件夹的名称就是新建包的包名;
在该文件夹中,创建一个 __init__.py 文件(前后各有 2 个下划线‘_’),该文件中可以不编写任何代码。
print(hello world!)
import 包名[.模块名 [as 别名]]
from 包名 import 模块名 [as 别名]
from 包名.模块名 import 成员名 [as 别名]
import tools.module1
tools.module1.show("hello world!")
from tools import module1
module1.show("hello world!")
from tools.module1 import show
show("hello world!")