当前位置:   article > 正文

Python——import、time、os、random模块_"import os import time import random output_direct

"import os import time import random output_directory = \"/pat"

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

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

gl_num = 100

def fib(n):
    """生成值小于 n 的斐波那契数列"""
    a, b = 1, 1
    while a < n:
        print(a, end=" ")
        a, b = b, a+b
    print()

def prt(n):
    print("我是模块1")
    print(f"1-{n}范围内的斐波那契数列为:")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
# 文件2:module02_fibonacci_返回n个数.py

gl_num = 100

def fib(n):
    """生成 n 个斐波那契数列的值"""
    a, b = 1, 1
    for i in range(n):
        print(a, end=" ")
        a, b = b, a+b
    print()

def prt(n):
    print("我是模块2")
    print(f"前{n}个斐波那契数列为:")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
# 在另一个文件中导入 module01 和 module02
import module01_fibonacci_返回小于n的数列值
import module02_fibonacci_返回n个数

print(module01_fibonacci_返回小于n的数列值.gl_num)  #  调用module01 中的全局变量 gl_num1
print(module02_fibonacci_返回n个数.gl_num)          #  调用module02 中的全局变量 gl_num2

module01_fibonacci_返回小于n的数列值.prt(20)
module01_fibonacci_返回小于n的数列值.fib(20)    #  调用module01 中的函数 fib1
print("-"*20)
module02_fibonacci_返回n个数.prt(20)
module02_fibonacci_返回n个数.fib(20)             #  调用module02 中的函数 fib2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

需要在同一级文件,在 第三个程序mo1使用 import 导入 文件1:module01_fibonacci_返回小于n的数列值.py 、文件2:module02_fibonacci_返回n个数.py 执行mo1 才会出现以下成果
在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

prt(10)
fib(10)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

利用通配符“*”可使用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 random

print(module01_fibonacci_返回小于n的数列值.__file__)
print(random.__file__)

#列举模块内容: dir (模块名)
#返回一个排好序的字符串列表,内容是模块中定义的变量和函数。
print(dir(random))

# sys 模块中的 sys.path 搜索模块路径
import sys
print(sys.path)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

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

在这里插入图片描述
在很多 Python 文件中都会看到以下格式的代码:

# 导入模块
# 定义全局变量
# 定义类
# 定义函数

# 在代码的最下方
def main():
    # ...
    pass

# 根据 __name__ 判断是否执行下方代码
if __name__ == "__main__":
    main()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

time 模块

在这里插入图片描述

import time
print(time.localtime()) 
print("---start---")
time.sleep(2)  # 休眠2秒
print("-- end---")
  • 1
  • 2
  • 3
  • 4
  • 5

os模块

提供了访问操作系统服务的功能,该模块中常用函数如下表所示。
在这里插入图片描述

random模块

随机数模块,该模块中定义了多个可产生各种随机数的函数。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/133472
推荐阅读
相关标签
  

闽ICP备14008679号