【python基础教程】(7)Python 模块介绍
2021/11/15 17:09:46
本文主要是介绍【python基础教程】(7)Python 模块介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python 模块
在前面的几个章节中我们基本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
下面是一个使用 python 标准库中模块的例子。
实例:
import sys print('命令行参数如下:') for i in sys.argv: print(i) print('\n\nPython 路径为:', sys.path, '\n')
执行结果:
C:\Users\yzp\PycharmProjects\base_practice\Scripts\python.exe D:/00test/base_practice/01test.py 命令行参数如下: D:/00test/base_practice/01test.py Python 路径为: ['D:\\00test\\base_practice', 'D:\\00test\\base_practice', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\yzp\\PycharmProjects\\base_practice', 'C:\\Users\\yzp\\PycharmProjects\\base_practice\\lib\\site-packages', 'C:\\Users\\yzp\\PycharmProjects\\base_practice\\lib\\site-packages\\setuptools-39.1.0-py3.7.egg', 'C:\\Program Files\\JetBrains\\PyCharm 2018.2\\helpers\\pycharm_matplotlib_backend'] Process finished with exit code 0
- 1、import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法。
- 2、sys.argv 是一个包含命令行参数的列表。
- 3、sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
import 语句
想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:
import module1[, module2[,... moduleN]
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端:
support.py 文件代码
# -*- coding:utf-8 -*- # filename: support.py def print_func(par): print("hello", par) return
test.py 引入 support 模块:
# -*- coding:utf-8 -*- # filename:test_module.py import support support.print_func("yin")
执行结果:
C:\Users\yzp\PycharmProjects\base_practice\Scripts\python.exe D:/00test/base_practice/test_module.py hello yin Process finished with exit code 0
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?
这就涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块。
这看起来很像环境变量,事实上,也可以通过定义环境变量的方式来确定搜索路径。
搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在sys模块中的path变量,做一个简单的实验,在交互式解释器中,输入以下代码:
# -*- coding:utf-8 -*- # filename:test.py import sys print(sys.path)
执行结果:
C:\Users\yzp\PycharmProjects\base_practice\Scripts\python.exe D:/00test/base_practice/01test.py ['D:\\00test\\base_practice', 'D:\\00test\\base_practice', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\yzp\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\yzp\\PycharmProjects\\base_practice', 'C:\\Users\\yzp\\PycharmProjects\\base_practice\\lib\\site-packages', 'C:\\Users\\yzp\\PycharmProjects\\base_practice\\lib\\site-packages\\setuptools-39.1.0-py3.7.egg', 'C:\\Program Files\\JetBrains\\PyCharm 2018.2\\helpers\\pycharm_matplotlib_backend'] Process finished with exit code 0
实例:
# -*- coding:utf-8 -*- # filename: fibo.py def fibo1(n): a, b = 0, 1 while b < n: print(b, end=',') a, b = b, a+b print(" ") def fibo2(n): a, b = 0, 1 result = [] while b < n: result.append(b) a, b = b, a+b print(result)
导入模块
# -*- coding:utf-8 -*- # filename:test_module.py from fibo import fibo1 from fibo import fibo2 n = 1000 fibo1(n) print("----------分隔符------------ ") fibo2(n)
执行结果:
C:\Users\yzp\PycharmProjects\base_practice\Scripts\python.exe D:/00test/base_practice/test_module.py 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987, ----------分隔符------------ [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987] Process finished with exit code 0
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
# -*- coding:utf-8 -*- # filename = test.py if __name__ == "__main__": print("程序本身运行~") else: print("在外部引用时运行~")
运行输出如下:
C:\Users\yzp\PycharmProjects\base_practice\Scripts\python.exe D:/00test/base_practice/test.py 程序本身运行~ Process finished with exit code 0
外部引用:
# -*- coding:utf-8 -*- # filename:test_module.py import test
执行结果:
C:\Users\yzp\PycharmProjects\base_practice\Scripts\python.exe D:/00test/base_practice/test_module.py 在外部引用时运行~ Process finished with exit code 0
说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。
说明:__name__ 与 __main__ 底下是双下划线, _ _ 是这样去掉中间的那个空格。
dir() 函数
内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回:
# -*- coding:utf-8 -*- # filename:test_module.py import fibo import time print(dir(fibo)) print(dir(time))
执行结果:
C:\Users\yzp\PycharmProjects\base_practice\Scripts\python.exe D:/00test/base_practice/test_module.py ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'fibo1', 'fibo2'] ['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname'] Process finished with exit code 0
这篇关于【python基础教程】(7)Python 模块介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享
- 2024-11-06Python 基础编程入门教程
- 2024-11-05Python编程基础:变量与类型
- 2024-11-05Python编程基础:变量与类型
- 2024-11-04Python编程基础:变量与类型