Skip to content

介绍

类似 js 的 es module

导入模块

txt
[from 模块名称] import [模块|类|变量|常量|函数|*(所有内容)] as 别名

# 1.导入整个模块
import 模块名称

# 2.导入模块的某个功能
from 模块名称 import 变量|函数|类等

# 3.导入整个模块的所有内容
from 模块名称 import *

# 4. 导入整个模块并重新命名
import 模块名称 as 别名

# 5.导入某个模块的功能并重新命名
from 模块名称 import 功能名 as 别名
python
from random import randint as get_random_number

rand_num = get_random_number(1, 9)
print(rand_num)

内置模块

所谓内置模块, 就是 python 编译器只带的, 只要安装好就能直接导入使用的, 查看python 编译器标准库文档

自定义模块

  1. 创建文件 mod1 并输入以下内容
python
def mod1_test():
    print("mod1_test excuted")
  1. main.py 中导入
python
# 这个 模块名就是文件名(不包含.py 后缀) [mod1.py]
import mod1

mod1.mod1_test()

__name__ 常量

当直接执行的时候, __name__ 的值为 __main__, 当导入的时候, __name__ 的值就不是 __main__

python
# mod1.py 内容如下:
def mod1_test():
    print("mod1_test excuted")

# 使用 python mod1.py 直接运行会进入 if 中的代码
# 当在 main.py 中导入的时候 mod1.py 的时候不会执行
if __name__ == '__main__':
  mod1_test()

自定义包(package)

什么是 python package

包的本质就是一个目录, 并且含有 __init__.py 这个文件, 这个目录下可以有多个模块, 并且通过 __init__.py 来管理导出行为, 那么这个目录就是 python package

sh
# 创建对应文件
mkdir mypkg
touch mypkg/__init__.py
touch mypkg/mod1.py
touch mypkg/mod2.py

文件中代码如下:

python
# 执行 python main.py 查看结果
from mypkg import mod1
from mypkg import mod2

mod1.f1()
mod2.f2()
python
# 这个文件可以为空, 但是文件必须存在
python
def f1():
    print("我是 mod1 中的 f1 方法")
python
def f2():
    print("我是 mod2 中的 f2 方法")

安装第三方包

类似 node.js 的安装第三方包, 只不过 node.js 包管理的工具叫 npm 而 python 的包管理工具 pip

sh
# 安装包
pip install numpy

# 删除已经安装的包

设置包管理器源

sh

pip install numpy -i https://pypi.tuni.tsinghua.edu.cn/simple
sh
# 修改 ~/.pip/pip.conf 文件(没有就创建), 输入以下内容
[global]
index-url = https://pypi.tuni.tsinghua.edu.cn/simple
sh
阿里云: http://mirrors.aliyun.com/pypi/simple/
中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣: http://pypi.douban.com/simple/
清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学: http://pypi.mirrors.ustc.edu.cn/simple/

Released under the MIT License.