python3 模块的导入和使用

"""
一个py文件就是一个模块
import 模块
from 模块 import 变量名 (不安全,不推荐)
from 模块 import 函数名 不安全,不推荐)
from 模块 import 类名 不安全,不推荐)


如果导入你自己的py模块的时候,Pycharm中模块名有大红线?
    选中模块所在目录—>右击鼠标—>Mark directory as—>Sources Root
"""

import导入模块过程:

1、判断该模块是否被导入过,导入过,直接用,没导入过,新开辟一个内存,为该模块创建独立的名称空间

2、在新名称空间中,执行模块中的代码

3、创建模块名字,在当前模块可以使用模块名.模块中的变量、函数名、类名等

# a.py
num = 10


def func():
    print("我是a.py文件中的func")


class Person:
    def __init__(self, name):
        self.name = name


print("我是a.py文件")
# b.py
import a


num = 20


def func():
    print("我是func")


print(a.num)
a.func()
per_obj = a.Person("lily")

执行b.py的结果:

我是a.py文件
10
我是a.py文件中的func

 判断该模块是否被导入过,导入过,直接用,没导入过,新开辟一个内存,为该模块创建独立的名称空间

# a.py
num = 10


def func():
    print(f"我是a.py文件中的func,num={num}")


print("我是a.py文件")
# c.py
import a


a.num = 30
a.func()
# b.py
import a
import c


a.func()
a.num = 20
a.func()

执行b.py的结果:

我是a.py文件
我是a.py文件中的func,num=30
我是a.py文件中的func,num=30
我是a.py文件中的func,num=20

下图是分析导图

结论:

尽量不要修改模块中的成员的值。
 

不建议修改导入模块中的变量,以下是不建议的导入方式和操作
# a.py
num = 10


def func():
    print(f"我是a.py文件中的func,num={num}")


print("我是a.py文件")
# b.py
from a import num, func


print(num)
num = 20
func()
print(num)

执行b.py的结果:

我是a.py文件
10
我是a.py文件中的func,num=10
20

if __name__ == '__main__':  # 程序的入口
    当做执行文件执行的时候,程序会执行这里
    当做模块被导入的时候,程序不会执行这里
# a.py
num = 10


def func():
    print(f"我是a.py文件中的func,num={num}")


if __name__ == '__main__':  # 程序的入口
    print("我是a.py文件")
# b.py
import a

执行b.py的结果:空,不会打印出东西来。

细说__name__
当作为执行文件执行的时候,__name__==__main__
当作模块被导入的时候,__name__==模块名
# a.py
num = 10


def func():
    print(f"我是a.py文件中的func,num={num}")


if __name__ == '__main__':  # 程序的入口
    print("我是a.py文件")

print(__name__)

执行a.py的结果:

我是a.py文件
__main__
# b.py
import a

执行b.py的结果:

a
__file__当前文件的绝对路径
# b.py
import os


print(__file__)  # __file__当前文件的绝对路径
print(os.path.dirname(__file__))  # 获取文件的文件夹路径
print(os.path.dirname(os.path.dirname(__file__)))  # 获取文件的上层文件夹路径

执行b.py的结果:

G:/python28/code/day06/整理笔记/python模块的使用/b.py
G:/python28/code/day06/整理笔记/python模块的使用
G:/python28/code/day06/整理笔记

 导入模块的顺序:

1.内置模块

2.第三方模块

3.自定义模块

安装第三方模块,推荐使用清华地址

 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

切记:  

  自定义模块不要和系统模块和第三方模块重名。

原文地址:https://www.cnblogs.com/lilyxiaoyy/p/11982881.html