✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog
专栏地址:https://blog.csdn.net/newin2020/category_12801353.html
专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~
专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
❤️ 如果有收获的话,欢迎点赞 收藏 关注,您的支持就是我创作的最大动力
Tips:
import 的搜索路径有两大步骤:先判断 import 后面的 XXX 包是不是内置模块,内置模块可以直接 import,基本不会报错。如果 XXX 不是内置的,那么就从 sys.path 的列表中依次查找 XXX(注意是依次,即有先后顺序),如果遍历完 sys.path 还找不到 XXX 就抛 ModuleNotFoundError 异常结束。
导入一个模块就起一行,最好不要将多个模块导入放在同一行。另外,import 建议要放在文件头部,一般是放在 docstring 之后,全局变量或正式逻辑代码之前。
# 推荐每一个模块放一行
import os
import sys
import time
# 不推荐放在一行导入
import os, sys, time
尽量按照内置模块、第三方模块和本地模块的顺序导入。
# 内置模块
import os
import time
# 第三方模块
import request
import django
import flask
# 本地模块
import xxx
加入已经有写好的程序 pizza.py,那么可以通过 import 来调动这个程序,然后通过 import 的模块来调用其中的函数名进行使用:
import module_name
module_name.function_name( )
例如:
import pizza
make_pizza(16, 'mushrooms')
可以导入模块中的特定函数,导入后想调用这些函数就不用加上前面的模块名了:
from module_name import function_name
from module_name import function_0, function_1, function_2
function_name()
例如:
from pizza import make_pizza
make_pizza(16, 'mushrooms')
通过星号可以将模块中的所有函数都复制到这个程序文件中:
from module_name import *
function_name()
例如:
from pizza import *
make_pizza(16,'pepperoni')
这种方法使用需谨慎,如果模块中有函数的名称与当前项目中使用的名称相同,Python 会覆盖函数。
比如当前项目中有一个叫 func 的函数,然后从某个模块中又通过 “from module_name import *” 导入了一个也叫 func 的函数。那么此时在当前项目中使用 func 时,实际上使用的是从模块中导入的那个 func 函数,而不是原本自己定义的那个。
但是在 my_package/init.py 文件中,可以定义 all 列表来指定当用户执行 from modname import * 时应该导入哪些模块或对象。
例如有如下包结构:
my_package/
__init__.py
module1.py
module2.py
module3.py
并且在 all 这样设置:
__all__ = ['module1', 'module2']
如果 module1.py 中有一个函数 func1,module2.py 中有一个类 MyClass,现在当用户执行 from my_package import * 时,只会导入 module1 和 module2 这两个模块名.
from pizza import make_pizza as mp
mp(16,'pepperoni')
import pizza as p
p.make_pizza(16,'pepperoni')
Tips:
导入类的方法和导入函数的方法是一致的,只是类名需要需要大写,因此下面就不再过多赘述了~
已知文件 car.py,从此文件中向另一个文件导入 Car 类:
from car import Car
动态加载模块,不需要提前导入相关模块,它可以根据运行条件来选择加载不同的模块,从而增强程序的灵活性和扩展性。
方法一:Python 提供了一个 importlib 模块,可以用于实现动态加载。
import importlib
def test_func():
module_name = 'math'
math = importlib.import_module(module_name)
result = math.sqrt(16)
print(result) # 4.0
test_func()
可以需要选择时机加载模块,按需加载,按需使用,延时加载模块。
另外,importlib 还有一些扩展的用法,但不是必须掌握的,一般用上面那种方法就足够了。对于这个扩展的用法,还是来看一个例子,在下面这个例子中:
import importlib.util
# 假设要从文件路径为 /path/to/module.py 的文件加载模块
module_path = '/path/to/module.py'
module_name = 'custom_module'
spec = importlib.util.spec_from_file_location(module_name, module_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
# 现在可以使用导入的模块
print(module.some_function())
方法二:使用 __import__ 来实现动态加载。
os = __import__('os')
if platform.uname().system == 'Windows':
module = __import__('os')
else:
module = __import__('sys')
Python 包官网地址:https://pypi.org/
Python 语言提供超过 15 万个第三方库,使用 pip 安装。
官网的包下载速度可能比较慢,因此也可以使用国内的下载源来下载第三方包:
如果要使用国内镜像源配置(以使用国内知名的 Python 镜像源“阿里云”为例),主要有两种方式使用方法:
pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
另外,如果想将整个包都下载下来,则可以使用如下命令:
pip download 包名