Python——import、time、os、random模块

2022年11月4日11:57:30

什么是模块?
模块是 Python 程序架构的一个核心概念
• 每一个以扩展名py 结尾的 Python 源代码文件都是一个模块;
• 模块名同样也是一个标识符,需要符合标识符的命名规则;
• 模块就好比是工具包,要想使用这个工具包中的工具,就需要先 导入import 这个模块;
• 在模块中定义的 全局变量 、函数、类 都是提供给外界直接使用的工具。

# 文件1:module01_fibonacci_返回小于n的数列值.py

gl_num=100deffib(n):"""生成值小于 n 的斐波那契数列"""
    a, b=1,1while a< n:print(a, end=" ")
        a, b= b, a+bprint()defprt(n):print("我是模块1")print(f"1-{n}范围内的斐波那契数列为:")
# 文件2:module02_fibonacci_返回n个数.py

gl_num=100deffib(n):"""生成 n 个斐波那契数列的值"""
    a, b=1,1for iinrange(n):print(a, end=" ")
        a, b= b, a+bprint()defprt(n):print("我是模块2")print(f"前{n}个斐波那契数列为:")
# 在另一个文件中导入 module01 和 module02import module01_fibonacci_返回小于n的数列值import module02_fibonacci_返回n个数print(module01_fibonacci_返回小于n的数列值.gl_num)#  调用module01 中的全局变量 gl_num1print(module02_fibonacci_返回n个数.gl_num)#  调用module02 中的全局变量 gl_num2

module01_fibonacci_返回小于n的数列值.prt(20)
module01_fibonacci_返回小于n的数列值.fib(20)#  调用module01 中的函数 fib1print("-"*20)
module02_fibonacci_返回n个数.prt(20)
module02_fibonacci_返回n个数.fib(20)#  调用module02 中的函数 fib2

需要在同一级文件,在 第三个程序mo1使用 import 导入 文件1:module01_fibonacci_返回小于n的数列值.py 、文件2:module02_fibonacci_返回n个数.py 执行mo1 才会出现以下成果
Python——import、time、os、random模块

cpython-37 表示 Python 解释器的版本
这个 pyc 文件是由 Python 解释器将 模块的源码 转换为字节码,.pyc表示程序已经编译过

Python——import、time、os、random模块

使用 as 指定模块的别名 如果在开发过程中需要导入一些名称较长的模块,那么可使用as为这些模块起别名 import 模块名 as 别名
注意:模块别名 应该符合 大驼峰命名法(首字母大写)
import module01_fibonacci_返回小于n的数列值 as FibMod

import module01_fibonacci_返回小于n的数列值as FibModprint("模块1中的全局变量:", FibMod.gl_num)
FibMod.prt(100)
FibMod.fib(100)

语法:from 模块名 import 工具名 优点:导入之后,不需要 通过 模块名,可以直接使用 模块提供的工具
支持一次导入多个函数、类、变量等,函数与函数之间使用逗号隔开。

from module01_fibonacci_返回小于n的数列值import fib,prt
prt(100)
fib(100)'''注意:
如果 两个模块,存在 同名的函数,那么 后导入模块的函数,会 覆盖掉先导入的函数。
解决方法可以用 as 关键字 给其中一个工具起一个别名
'''from module01_fibonacci_返回小于n的数列值import fib, prtfrom module02_fibonacci_返回n个数import fib, prt# 后导入的同名函数覆盖之前导入的函数

prt(10)
fib(10)

利用通配符“*”可使用from…import…导入模块中的全部内容,语法格式如下:from 模块名 import *

小结:虽然通过“from 模块名 import …”方式可简化模块中内容的引用,但可能会出现函数重名的问题。因此,相对而言使用import语句导入模块更为安全。

模块位置搜索顺序
当导入一个模块时,python解释器对模块位置的搜索顺序为:

(1)当前目录,如果有就直接导入
(2)如果没有,再搜索Python PATH环境变量下的每个目录
(3)Python 中每一个模块都有一个内置属性file 可以 查看模块 的 完整路径
(4)模块搜索路径存储在 sys 模块中的 sys.path变量中。

# 内置属性 __file__ 查看模块的完整路径import module01_fibonacci_返回小于n的数列值import randomprint(module01_fibonacci_返回小于n的数列值.__file__)print(random.__file__)#列举模块内容: dir (模块名)#返回一个排好序的字符串列表,内容是模块中定义的变量和函数。print(dir(random))# sys 模块中的 sys.path 搜索模块路径import sysprint(sys.path)

每一个.py文件都应该是可以被导入的
在导入文件时,文件中 所有没有任何缩进的代码 都会被执行一遍!
这就会出现测试代码本来仅在模块内使用,然而被导入到其他文件中。
Python——import、time、os、random模块
如何把测试代码仅在模块内使用,不被导入到其他文件中?
_name _ 属性可以做到!!

如果 是被其他文件导入的,_name_ 就是模块名
如果 是当前执行的程序 _name_ 会等于 _main_

Python——import、time、os、random模块
在很多 Python 文件中都会看到以下格式的代码:

# 导入模块# 定义全局变量# 定义类# 定义函数# 在代码的最下方defmain():# ...pass# 根据 __name__ 判断是否执行下方代码if __name__=="__main__":
    main()

time 模块

Python——import、time、os、random模块

import timeprint(time.localtime())print("---start---")
time.sleep(2)# 休眠2秒print("-- end---")

os模块

提供了访问操作系统服务的功能,该模块中常用函数如下表所示。
Python——import、time、os、random模块

random模块

随机数模块,该模块中定义了多个可产生各种随机数的函数。
Python——import、time、os、random模块

  • 作者:唐樽
  • 原文链接:https://blog.csdn.net/weixin_44775255/article/details/105819900
    更新时间:2022年11月4日11:57:30 ,共 2623 字。