24 from 模块 import 名字

主要内容:

1 . from 模块 import 名字

a:执行流程

from my_module import login
# my_module 里的文件内容
'''
name = 'alex'
def login():
    print('login',name)
'''
def login():print('in my module')
login()
# 执行流程: 先找到my_module这个文件, 开辟属于my_module模块的命名空间,执行py文件.
            #知道了要import的login这个名字,哪么就在本文件中创建一个变量login,指向模块命名空间的login函数.

导入了什么,就能使用什么,不导入的变量不能使用

不导入并不代表不存在内存中,而是没有建立文件到模块中其他名字的引用

当模块中引入的方法或者变量和本文件重名的时候,那么这个名字只代表最后一次对它赋值的那个方法或者变量.

本文件中对全局变量的修改是完全不会影响到模块中的变量的引用.

  b:重命名

    from 模块名 import  名字 as 变量

      例如:  from my_module  import  login  as ll

  c: 导入多个

    from 模块名  import  名字1,名字2..

  d : from 模块 import *  导入该模块的所有内容  

  e : from 模块* 与 __all__之间的联系   __all__可以控制*导入的内容

    模块中的内容  __all__可以控制导入的内容(my_module)

__all__ = ['login']
name = 'alex'
def login():
    print('login',name)

2  把模块当成脚本运行:

  a : 从本模块反射本模块中的变量, 在编写py文件的时候,所有不在函数和类中封装的内容都应该写在:

    if __name__ == '__main__'

       b : 在使用反射自己模块中的内容的时候

    import sys

    gettatr (sys.module[__name__], 变量名)

              不能使用[sys.module['__main__']]            

      原因 : 当在导入该模块的文件中,'_main__'当前执行的是该文件所在的地址, 而不是模块的地址,因此在反射的时候找不到对应的变量名会报错.

 3 . 模块搜索路径

模块没有导入之前在什么地方 : 在硬盘上

安装python

python整个包的结构不变

他会记录一个安装目录

其他所有目录都是都是根据安装目录来写死的.

'C:\Users\26897\PycharmProjects\untitled\Workspace\day24'    #当前运行脚本所在的目录

剩余所有的都是python内置的目录

  内置模块的导入

  第三方模块的导入

内置模块的导入和第三方模块的导入都不需要你操心

自定义模块能否被导入

  看sys.psth当中,是否存在你要导入的文件 所在的目录

原文地址:https://www.cnblogs.com/gyh412724/p/9416495.html