关于python中的包,模块导入的问题详解(一)

时间:2023-12-23 23:42:49

最近由于初学python,对包,模块的导入问题进行了资料的搜集,查阅,在这里做一个总结:

  • 一: import 模块

在import的过程中发生了什么?我们用一个实验来说明:

关于python中的包,模块导入的问题详解(一)

以上截图表明:在import + 模块中,直接执行了里面是语句

引申:一个模块不会被重复导入,如果要使用被导入模块的变量,要用   模块.变量名  的方式 。

如果全局空间与模块的局部空间有命名重复的变量名或函数名,则在各自对应的域内去寻找各自的对象

如下代码所示

 ########file_2.py
print("This is file_2") file_v2 = 'msy' #定义变量
def file_d2(): #定义函数
print("This is file_d2!!!") ########file_1.py
import file_2 #导入模块 print(file_2.file_v2) #使用模块的变量
print(file_2.file_d2()) #使用模块的函数
######起别名需注意的地方

import file_2 as f

#####注意:::起了别名以后,原来的名字在当前模块就不能使用了

拓展:按照PeP8开发规范,导入多个模块时,虽然可以一个import可以一次性导入多个模块,但不符合规范,且需按照#内置模块,#第三方模块,#自定义模块

的顺序来导入

  • 二:模块搜索路径
 ##############模块搜索路径

 import  sys
import os base = os.path.basename(__file__) #当前文件名
base2 = os.path.abspath(__file__) #绝对路径
base3 = os.path.dirname(os.path.abspath(__file__)) #当前文件路径
base4 = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #当前文件上级路径

引申:除了sys.path中是内置,拓展模块外,其他模块都应使用你直接执行这个文件所在的目录作为搜索路径;

  一个模块是否能被导入,就看这个模块的所在的目录在不在sys.path中,如下图演示:

关于python中的包,模块导入的问题详解(一)

关于python中的包,模块导入的问题详解(一)

  • 三:运行py的方式

常用的两种运行方式:1、cmd  python xx.py   脚本的方式运行

          2、导入他,import xx.py

  但大多数情况我们所见到的import 时 并不会有控制台输出,但是cmd运行的时候为什么有输出呢?(pycharm 运行也是脚本运行)

  或者如何达到这样的效果呢?

 #############实现import调用时不输出代码
if __name__ == __main__:
代码块 #############################