模块

模块

一、什么是模块?

  • 模块是一系列功能的结合体,本质上是一个个的.py文件

  • 模块的三种来源

    • Python内置的模块(Python解释器的):比如:sys/time/os/turtle
    • 第三方的模块(别人写的):比如requests
    • 自定义的模块(自己写的):比如自己定义的demo.py文件
  • 模块的四种表现形式

    • 使用Python编写的文件 (了解)
    • 编译后的共享库DLL或者会C或者C++库(了解)
    • 包下面带有__init__.py的一组py文件
    • Python解释器下的py

二、为什么要使用模块?

  • 模块可以帮我们更好的管理功能代码,比如:函数……
  • 可以将项目拆分成一个个的功能,分别存放在不同的py文件(模块)中

三、如何创建,编写,并使用模块?

  • 在py文件中编写Python代码,就是编写模块
  • 在一个文件中,通过import关键字导入模块
  • 在使用模块阶段,必须注意,谁是执行文件,谁是被导入文件(被导入的模块)
  • 模块在首次导入时,就已经固定好了,当前文件查找的顺序是先从内存中查找
  • 模块在导入时发生的事情:
    • 会先执行当前执行文件,并产生执行文件中的名称空间
    • 会执行到导入模块的代码时,被导入的模块会产生一个模块的名称空间
    • 会将被导入模块的名称空间加载到内存中

示范文件

# 文件名:foo.py
x = 1
def get():
    print(x)
def change():
    global x
    x =0
class Foo:
    def func(self):
        print('from the func...')

用模块名称空间中的名字,需要加上该前缀,如下

import foo  # 导入模块foo
a = foo.x   # 引用模块foo中变量x的值赋值给当前名称空间中的名字a
foo.get()   # 调用模块中foo的get函数
foo.change()    # 调用模块foo中的change函数
obj=foo.Foo()   #使用模块foo的类Foo来实例化,进一步可以执行obj.func()

加上foo.作为前缀就相当于指名道姓地说明要引用foo名称空间中的名字,所以,即使当前执行文件中存在相同的名字,也不会冲突

,并且若当前执行文件的名称空间中存在x,执行foo.get()或foo.change()操作的都是源文件中的全局变量x

# 文件名:foo.py

print('from foo...')

第一次导入模块已经将其加载到内存空间了,之后的重复导入会直接饮用内存中已存在的模块,不会重复执行文件

import foo  # 导入模块foo
import foo  # 导入模块foo
import foo  # 导入模块foo
import foo  # 导入模块foo
from foo...

用import语句可以导入多个模块,可以写多行的import语句

import sys
import time
import os
import turtle

也可以写在一行,用逗号分隔

import sys, time, os, turtle...

给模块起别名 as

​ import 模块 as 模块的别名

模块的导入方式

  • import 模块 ——在执行文件中直接import导入
  • from 包/模块 import 模块/(函数名、变量名、类名)
posted @ 2019-11-19 20:44  YGZICO  阅读(132)  评论(0编辑  收藏  举报