python 模块的简单介绍和应用

Posted on 2019-12-11 11:33  S-skill  阅读(211)  评论(0编辑  收藏  举报

 

一. 模块
1. 什么是模块?
别人写好的一组功能 文件夹/py文件/c语言编译好的一些编译文件
有的功能开发者自己无法完成,这样的话需要借助已经实现的函数\类来完成这些功能
你实现不了的功能都由别人替你实现了
模块和操作系统打交道和时间和网络通信
模块可以节省内存和提供更多的功能

2. 为什么要有模块?
分类和管理方法
节省内存
提供更多的功能

3. 模块的分类
内置模块
安装python解释器的时候跟着装上的那些方法
第三方模块/扩展模块
没在安装python解释器的时候按装的那些方法
自定义模块
你写的功能如果是一个通用的功能,,那你就把它当做一个模块

4. import ...
在import的时候命名空间的变换
重命名 as
一行导入多个模块
5. from ... import...
在import的时候命名空间的变换
重命名
一行导入多个...
from 模块 import *
* 和 __all__ 的相关性 __all__可以控制*导入的内容

6. 模块相关的其他知识
1. 把模块当成脚本运行 : 从本模块中反射本模块中的变量
if __name__ == 'main':
所有不需要调用就能执行的内容
import sys
sys.modules['__main__'] # 获取当前文件的内存地址
      运行一个py文件的两种方式
      1. 以模块的形式运行
      import module
      module.变量()
      2. 直接pycharm运行, cmd运行
     --- 以脚本的形式运行
      那么需要在本文件中直接打印的代码上加上
     if __name__ == '__main__':
      在编写py文件的时候,所有不在函数和类中封装的内容都应该写在这里
            反射:
getattr(sys.modules[__name__],'要反射的变量名')
2. 模块搜索路径 sys.path
3. pyc编译文件
4. 重新加载模块 已经导入的模块,即便被修改在程序执行过程中,也不会生效
5. 模块的循环引用 - 不允许
  7. import 文件名
    文件名 : 要求和变量名的规范一样
    模块不会被多次导入
    模块的导入相当于执行这个文件
    模块有自己独立的命名空间
    重命名 as
  8. 导入多个模块
  一行导入多个, 逗号隔开, 不建议使用
  多行导入多个 : 内置 第三方 自定义的顺序



1. 介绍:
1 介绍:
2 所有的模块导入都应该尽量放在这个文件的开头
3 import module
4 要导入一个py文件的名字,但是不加.py后缀名
5 import这个模块相当于执行了这个模块所在的py文件
6 
7 from ...(模块名) import 变量
8 模块的名字必须要满足变量的命名规范,一般情况下,模块都是小写字母开头的名字

 

2. import ... 的用法

1 首先需要调用这个模块也就是,import ...(模块名),相当于执行这个模块
2 要创建一个模块mudule.py
mudule.py
 def login(): 
     print("执行了login")

 name = '名字'
 1 import module   # 调用模块,首先要导入模块
 2 module.login() # 执行模块里面的login函数
 3 print(module.name)
 4 
 5 # 模块的重命名
 6 import module as m
 7 print(m.name)
 8 m.login() # 指向模块命名空间中的login函数
 9 module.login()  # 会报错,因为重新命名了
10 
11 # 导入多个模块
12 # import os,module .....

 

 

3. from .... import ....的用法

mudule.py  # 模块名

 def login(): 
     print("执行了login")

 name = '名字'
from module import login    # 这么调用函数的用法和上面有点不同,直接login()就可以了
# 仍然相当于执行了整个py文件,只是可以更方便执行里面的变量了

# 流程:
# 1. 找 module模块
# 2. 开辟一块属于这个模块的命名空间
# 3. 执行这个模块

# 在from ...import..的时候命名空间的变换
# login() # 这么调用就可以了
# 导入了什么 就能使用什么 不导入的变量,不能使用
# 不导入并不意味着不存,而是没有建立文件到模块中其他名字的引用

login()

def login():
    print('执行了函数login....')
# 当模块中导入的方法或者变量 和 本文件重名的时候,那么这个名字只代表最后一次对它赋值的那个方法或者变量
login()     # 先打印模块里能打印得东西(就是不调用),然后执行自己的,不执行模块里的

导入的多中方法:

 1 from module import login     # 重新导入
 2 login() # 直接调用模块里面的变量,这样调用看起来更方便
 3 from module import name
 4 print(name)
 5 
 6 # 重命名
 7 from module import login as a        # 改变引用
 8 a()
 9 
10 # 导入多个
11 from module import login ,name
12 login()
13 print(name)
14 
15 # from 模块 import *  # 这样更方便
16 from module import *    # 用 “*” 可以直接调用里面的变量
17 login()
18 print(name)

 

4. 把模块当成脚本运行

module2.py  # 模块名

import sys
print(__name__)     # '__main__'
my_module = sys.modules['__main__']   # 获取当前文件的内存地址
print(my_module)
print(sys.modules[__name__])        # __name__ ==> '__main__'


def func():
    print("good")

getattr(sys.modules[__name__],'func')()
 1 import sys
 2 import module2  # 执行自己创建的py文件,也可称为模块
 3 print(module2.__name__) # 调用模块里面的内容
 4 
 5 # {'sys':文件的内存地址
 6 # 'module2': module2的地址
 7 # '__main__' :当前直接执行文件所在的地址}
 8 # 储存了所有导入的文件的名字和这个文件的内存地址
 9 
10 # 在使用反射自己模块中的内容的时候
11 import sys
12 # getattr(sys.modules[__name__],'变量名')

 

 


 










Copyright © 2024 S-skill
Powered by .NET 8.0 on Kubernetes