• 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

    切记:  

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

  • 相关阅读:
    Java学习笔记三十:Java小项目之租车系统
    Java学习笔记二十九:一个Java面向对象的小练习
    Java学习笔记二十八:Java中的接口
    Java学习笔记二十七:Java中的抽象类
    Java学习笔记二十六:Java多态中的引用类型转换
    Java学习笔记二十五:Java面向对象的三大特性之多态
    Java学习笔记二十四:Java中的Object类
    Java学习笔记二十三:Java的继承初始化顺序
    Java学习笔记二十二:Java的方法重写
    Java学习笔记二十一:Java面向对象的三大特性之继承
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/11982881.html
Copyright © 2020-2023  润新知