当前位置: 首页 > news >正文

Python 编程基础 | 第六章-包与模块管理 | 1、包与模块简介

一、模块

在程序开发过程中,文件代码越来越长,维护越来越不容易。可以把很多不同的功能编写成函数,放到不同的文件里,方便管理和调用。在Python中,一个.py文件就称之为一个模块(Module)。

1、简介

模块是一个包含所有你定义的函数和变量的文件,以.py后缀结尾。模块可以被别的程序引入和使用其中的函数功能。下面是一个使用 Python 标准库中模块的例子,如下:

import sys
print('命令行参数如下:')
for i in sys.argv:print(i)
print('Python 路径为:', sys.path)

module来源有三种,如下:

  • Python内置模块(标准库)
  • 第三方模块
  • 自定义模块

2、import语句

想使用Python模块,只需在另一个源文件里执行import语句,语法如下:

import module1[, module2[,... moduleN]

当解释器遇到 import 语句,如果在当前的搜索路径中能搜索到模块,就会直接导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 showmeai,需要把命令放在脚本的顶端:

fibo.py 文件(D:\Python_Project\example\day01)

# 定义到 n 的斐波那契数列
def fib(n):a, b = 0, 1while b < n:print(b, end=' ')a, b = b, a+bprint()

demo.py 文件(D:\Python_Project\example\day01)

import fibo
fibo.fib(10)

当使用import语句的时候,Python解释器会在搜索路径中寻找对应模块,搜索路径是由一系列目录名组成的,它是在Python编译或安装的时候确定的,安装新的库应该也会修改,搜索路径被存储在sys模块中的path变量。

3、from … import 语句

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:

from modname import name1[, name2[, ... nameN]]

要导入模块 fibo 的 fib 函数,使用如下语句:

from fibo import fibfib(10)

这个声明不会把整个fibo模块导入到当前的命名空间中,它只会将fibo里的fib函数引入进来。

4、from … import * 语句

把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:

from modname import *

要导入模块 fibo 的所有函数,使用如下语句:

from fibo import *fib(10)

5、标准模块

Python本身带着一些标准的模块库,有些模块直接被构建在解析器里,能很高效的使用。比如模块sys,它内置在每一个Python解析器中,例如:

import sysprint(sys.path)

二、包

包是一种管理Python模块命名空间的形式,经常会以「包.模块」的形式来导入模块,例如:一个模块的名称是C.D, 那么表示一个包C中的子模块D。使用这种形式不用担心不同库之间的模块重名的情况,Python包结构如下:

在这里插入图片描述

在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。目录只有包含一个叫做__init__.py的文件才会被认作是一个包。最简单的处理是放一个空的__init__.py文件,用户可以每次只导入一个包里面的特定模块。

http://www.lryc.cn/news/198342.html

相关文章:

  • 为中小企业的网络推广策略解析:扩大品牌知名度和曝光度
  • 资源受限MCU Flash空间占用优化
  • 冰蝎默认加密的流量解密
  • C#字符串操作:拼接、截取、分割等高效处理方法
  • 垃圾邮件(短信)分类算法实现 机器学习 深度学习 计算机竞赛
  • 每日一题 1726. 同积元组(中等,计数)
  • LeetCode 2894. 分类求和并作差【数学,容斥原理】1140
  • 100天掌握网络安全知识点!
  • 【ArcGIS绘图系列1】在ArcGIS中制作柱状图与饼状图
  • 【c++】跟webrtc学std array 1: 混音的多维数组
  • App出海起量难?传参安装打开获客增长新途径
  • 当AI遇上3D建模:一场创意与技术的完美碰撞!
  • 工作中的有效沟通
  • 1.集合框架
  • 2023年下半年软考考试重磅消息
  • Spring Boot如何优雅实现动态灵活可配置的高性能数据脱敏功能
  • 九月 Web3 游戏报告:数量增长,巨头入场,用户获取和留存仍存挑战
  • Scala语言入门
  • MyBatisPlus-02
  • vscode中快速生成vue3模板
  • Liunx C运算符
  • 【反射】Class类
  • PyQt 问题记录
  • 云安全—责任共担
  • 使用Vscode终端设置window环境变量设置不上
  • 【微信小程序】自定义组件布局会议OA其他页面(附源码)
  • 如何使用 MiniGPT-v2
  • python -pandas -处理excel合并单元格问题
  • KT6368A的封装怎么画 原理图怎么画 资料怎么看 怎么下载呢
  • Linux杀掉僵尸进程方法