💻
ExistOrLive' Gitbook
  • README
  • ReadMe
  • 开发语言学习
    • Python
      • 0.概述
      • 1.基本数据类型
      • 2.变量
      • 3.函数
      • 4.运算符
      • 5.字符串
      • 6.列表
      • 7.元组
      • 8.集合
      • 9.字典
      • 10.流程控制
      • 12.函数
      • 13.模块
      • 14.输入输出格式化
      • 15.面向对象
    • Swift
      • 1.基础部分
        • 常量和变量以及基本类型_1
        • 常量和变量以及基本类型_2
      • 2.基本运算符
        • 基本运算符
      • 3.字符串和字符
        • 字符串
        • 字符串操作
      • 4.集合类型
        • 概述
        • Array
        • Set
        • Dictionary
      • 6.函数
        • 函数
        • 函数返回值
        • 函数类型
      • 7.闭包
        • 闭包
        • 闭包表达式
        • 尾随闭包
        • 捕获变量或常量
        • 闭包是引用类型
        • 逃逸闭包
        • 自动闭包
      • 8.枚举
        • 枚举
        • 枚举与switch语句
      • 9.类和结构体
        • 类和结构体
        • 属性
          • 属性
          • 属性观察器
          • 属性包装器
          • 全局变量和局部变量
          • 类属性
        • 方法
    • Shell
      • Shell变量和基本类型
      • Shell函数
      • Shell基本运算符
      • Shell脚本的参数
      • Shell流程控制
      • Shell输入输出
      • Shell文件包含
  • iOS
    • UI
      • UIKit
        • UIView
          • UIView
          • drawRect
        • UITableView
          • UITableView
          • UITableView的加载过程
  • 学习开发工具
    • 静态分析
      • OCLint
      • infer
      • SwiftLint
    • iOS构建工具
      • fastlane
        • fastlane
        • fastlane的安装
        • fastlane一键打包
        • fastlane证书管理
    • Cocoapods
      • 安装pod库-podfile
      • 创建pod库-podspec
  • 开源库
    • Tool
      • Swiftlint源码学习
      • 利用Swiftlint自定义规则实现自动化code review
由 GitBook 提供支持
在本页
  • 1. 引入模块 import
  • 搜索路径
  • 2. 深入模块
  • 2.1 name 属性
  • 2.2 dir() 函数
  • 3. 包
  • 总结

这有帮助吗?

在GitHub上编辑
  1. 开发语言学习
  2. Python

13.模块

上一页12.函数下一页14.输入输出格式化

最后更新于14天前

这有帮助吗?

模块 是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。

1. 引入模块 import

import 关键字用于引入模块

import requests 

Tip: 不论 import 调用多少回, 同一个模块只会被引入一次

from ... import ... 语句用于从模块中引入部分代码,而不引入整个模块

# 从 fibo 模块中引入 fib,fib2 函数 
from fibo import fib, fib2
fib(500)

搜索路径

当使用import关键字来引入模块时,会按照搜索路径指定的目录逐个去查询是否有匹配的模块名。

搜索路径 是在Python编译或安装的时候确定的,安装新的库应该也会修改。

搜索路径被存储在sys模块中的path变量。

搜索路径一般包括当前执行脚本目录,python解释器的安装目录

2. 深入模块

模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。

每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。

模块是可以导入其他模块的,被导入的模块的名称将被放入当前操作的模块的符号表中。另外还可以使用 import 直接把模块内(函数,变量的)名称导入到当前操作模块。

# 导入模块中所有的名字
import requests 

# 导入模块内的 fib,fib2
from fibo import fib, fib2

# 导入模块内的所有名字
from fibo import *

2.1 name 属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

#!/usr/bin/python3
# Filename: using_name.py

if __name__ == '__main__':
   print('程序自身在运行')
else:
   print('我来自另一模块')

每个模块都有一个__name__属性,当其值是'main'时,表明该模块自身在运行,否则是被引入。

2.2 dir() 函数

内置函数 dir() 可以输出模块内定义的所有名称

import sys
dir(sys)

3. 包

包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。 一个包中可以包含多个模块。 比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。

包的目录下必须包含一个 __init_.py 文件,

如图,concurrent包中有一个子包futures, futures包中包含process,thread等模块

总结

  • 每个模块都有独立的符号表,引入模块就是将其他模块的名称引入当前模块的符号表

# 导入模块中所有的名字
import requests 

# 导入模块内的 fib,fib2
from fibo import fib, fib2
  • 包是管理模块的目录,目录下必须有__init__.py 文件