zoukankan      html  css  js  c++  java
  • 模块

    模块

    一、什么是模块?

    • 模块是一系列功能的结合体,本质上是一个个的.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 模块/(函数名、变量名、类名)
  • 相关阅读:
    最近这段时间
    一元多项式的
    珍藏
    运行命令大全
    Google
    Windows Live Writer插件
    Word写论文的技
    安装Windows Live Writer后Ƃ
    比尔盖茨给人
    不经意的感悟
  • 原文地址:https://www.cnblogs.com/YGZICO/p/11892264.html
Copyright © 2011-2022 走看看