[Python] Python中的模块、包和内置函数

2023-10-26

1.模块

python 模块简单来说就是一个.py文件,程序的目的是运行,而模块的目的是供其他程序导入并且使用。
模块也有对象,每个模块对象都有一个特殊属性:__dict__,这是一个包含模块符号表的字典。

导入模块

import importable
import imporable1,imporable2
import importabl as name  #重命名

import 语句并不是需要模块对象或直接操作模块对象,它仅仅是需要导入模块的定义。

导入某一模块中的对象

from os import path
from importable import object
from importable import object as name
from importable import (object1,obj2,...,obj3)
from importable import* #可能会有名称冲突

如果使用最后那种格式,则将导入所有的非私有的对象,或者变量all中存放的名称列表。
导入一个模块时,Python会在sys.path列表中的路径中依次搜索该模块,我的sys.path路径如下:

path = [
    '/home/jiayongqiang/Downloads/deb package/pycharm-community-2017.3.4/helpers',
    '/usr/lib/python35.zip',
    '/usr/lib/python3.5',
    '/usr/lib/python3.5/plat-x86_64-linux-gnu',
    '/usr/lib/python3.5/lib-dynload',
    '/home/jiayongqiang/PycharmProjects/demo1/venv/lib/python3.5/site-packages',
    '/home/jiayongqiang/PycharmProjects/demo1/venv/lib/python3.5/site-packages/setuptools-28.8.0-py3.5.egg',
    '/home/jiayongqiang/PycharmProjects/demo1/venv/lib/python3.5/site-packages/pip-9.0.1-py3.5.egg',
]

如果自定义的模块和内置模块名称相同,那么会先使用自定义的模块,从而会导致一些问题,因此在自定义模块名时,不能和内置模块或其他Python库中的名称相同。

一般内置模块使用小写字母命名,所以自定义模块第一个字母大写,可以避免
可以在命令行使用如下命令检测是否内置有对应名称的模块,抛出异常则说明没有:

$ python -c "import sys"
$ python -c "import CustomModule"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named 'CustomModule'
$ 

在pytho加载某个模块时,首先会找该模块同名、以.pyo结尾的文件,.pyo文件表示最优化的字节码编译版本,如果不存在该.pyo文件,则查找是否存在.pyc文件,该文件为非优化的字节码编译版本,如果不存在,则会加载.py文件,并将该文件编译成字节码编译文件。因此,无论哪种形式,Python都以字节码编译的形式将文件加载到内存中,从而在解释器执行时,有更快的速度,只需要加载、运行代码,而不是加载、编译、运行。

2.包

包是一个目录,包含一组模块和__init__.py文件,支持多层嵌套。格式如下:

├── MyPackage
│   ├── Basketball.py
│   ├── Football.py
│   └── __init__.py

使用时,通过import导入:

import MyPackage.Football
s = MyPackage.Football.play()

或者重命名简化模块名:

import MyPackage.Football as football
s = football.play()

或者使用from importable import …:

from MyPackage import Football
Football.play()

或者使from importable import*导入,这种导入方式需要在__init__.py中创建一个__all__变量存储名称,如:

__all__ =["Basketball","Football"]

再进行导入:

import sys
from MyPackage import *
Football.play()

3.常用内置函数

Python中提供了一些常用内置函数,其中有些已经用的非常多了,在这里进行下总结

3.1迭代操作

any(i):如果可迭代类型对象i(下同)中的任一项都为True,则返回True,否则返回False
all(i):如果i中的每一项都为True,则返回True,否则返回False
enumerate(i,start):常用于for…in…循环中,返回一个枚举对象,该对象也为一个迭代子,每次迭代会返回一个二元组,第一项为迭代次数,第二项为enumerate中的迭代项。索引起始值为0或start(如果指定),如:

>>> l = ["java","python","android"]
>>> for i,j in enumerate(l):
    print(i,j)
0 java
1 python
2 android
>>> 

len(x):返回x的长度,组合类型返回数据项个数,str类型返回字符个数
max(i,key):返回i中的最大项
min(i,key):返回i中的最小项
range(start,end,step):返回一个整数迭代子
reversed(i):反转i,并作为一个迭代子返回
sorted(i,key,reversed):对i进行排序并返回,key用于提供DSU修饰排序,reversed如果为True,则排序以反序进行。
sum(i,start):求和,如果指定start,则加上start值
zip(i1,...,in):以一个或多个iterable为参数,返回一个迭代子,该迭代子将返回元组,第一个元组中存放每个iterable的第一个数据项,第二个元组中存放每个iterable的第二个数据项,以此类推,如:

>>> for t in zip(range(4),range(2,24,2),range(3,20,2)):
    print(t)
(0, 2, 3)
(1, 4, 5)
(2, 6, 7)
(3, 8, 9)
>>> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Python] Python中的模块、包和内置函数 的相关文章

随机推荐

  • windows下安装redis和redis扩展

    windows下安装redis 下载地址 https github com MSOpenTech redis releases Redis 支持 32 位和 64 位 这个需要根据你系统平台的实际情况选择 这里我们下载 Redis x64
  • 链路mtu

    常常见到交换机和网卡说明中提到支持Jumbo Frame 但我一直对以太网的Jumbo Frame 巨帧 如何使用不太理解 今日在网上找到2则现摘录下来 相信看了以后大家会有收获 这是一种厂商标准的超长帧格式 专门为千兆以太网而设计 目前还
  • 移动硬盘需要格式化才能打开如何解决?

    当我们把移动硬盘接入 就提示需要格式化 这是对我们有多大的仇怨啊 其实不是这样的 当频繁使用可移动硬盘很容易造成损坏 有时甚至会提示格式化 而提示要格式化是硬盘出现了问题导致的 那么什么原因才会出现的情况呢 遇到移动硬盘需要格式化才能打开如
  • 【算法训练 (day2)】积木画(dp问题)

    目录 一 问题 题目描述 输入格式 输出格式 输出样例 二 解题思路 合法性判定 状态压缩 推导dp式 代码实现 一 问题 题目描述 小明最近迷上了积木画 有这么两种类型的积木 分别为 I 型 大小为 2 个单位面积 和 L 型 大小为 3
  • Spdlog库编译/交叉编译

    1 只包含头文件 速度很快 无需依赖第三方库 支持跨平台 Linux Windows on 32 64 bits 支持多线程 可对日志文件进行循环输出 可每日生成日志文件 可支持控制台日志输出 可选的异步日志 可定义日志格式 2 获取spd
  • centos7下opencv3.4.1 的安装和编译全解

    centos7下opencv3 4 1 的安装和编译全解 一 下载和安装 1 下载网址 https opencv org 注意系统版本 2 linux下依赖库安装 正式安装opencv之前 需要安装好opencv编译的依赖包 列举如下 1
  • 【Pandas】修改Pandas的行或列的名字(重命名)

    pandas DataFrame rename 使用函数 DataFrame rename mapper None index None columns None axis None copy True inplace False leve
  • 编译Android 2.3源码错误总结

    虽然版本2 3很老了 但是这是在完全新的Ubuntu上面编译的 可以使我们更加熟练 1 host C acp lt build tools acp acp c
  • BP神经网络在数据预测上的应用

    用BP神经网络做数据预测有两种形式 1 根据自身已有的数据预测未来的数据 比如 根据2000 2012年已知GDP的值预测2013年GDP的值 求解 用2000 2001 2002的值作为输入 2003作为输出 然后以此类推 2001 20
  • DEDE后台添加新变量出现:Request var not allow!的解决办法

    论坛上很多人都反馈说在后台添加新变量的时候会出现 Request var not allow 的BUG错误 本文主要就是介绍如何去解决这个问题 下面看具体操纵 在DEDE根目录打开 include common inc php 文件 查找到
  • pycharm 2019.2 安装包失败

    简介 最近使用学生账号注册了pycharm 貌似全家桶都可以免费用了 就升级了pycharm到最新版 但是在使用包管理 安装包的时候出错了 提示没有匹配的版本 下面还提示一个 trusted host pypi douban com 右下角
  • es搜索 核心指标_ElasticSearch核心知识总结(一)es的六种搜索方式和数据分析

    es的六种搜索方式 query string search GET ecommerce product search 查询所有数据 took 4 耗费几毫秒 timed out false 是否超时 shards 数据拆分成5个分片 对所有
  • Qt编写软件注册功能

    一 软件目的 应项目需求 需要为编写的软件添加一层保护 防止滥用 二 软件环境 Qt5 9 Windows 主要加密算法 MD5 MD5简单介绍 MD5是一种不可逆的加密算法 类似计算hash值 不同的数据字符无论长短 经过MD5计算后都会
  • Pip快速离线安装pytorch-gpu

    Pip快速离线安装pytorch gpu 1小节讲解涉及的基本概念 读者也可直接从2小节开始 1 安装pythorch涉及的基本组件概念 1 1 显卡驱动Driver 常识概念 此处略过 1 2 CUDA CUDA Compute Unif
  • 二维邮局选址问题-带权中位数

    算法设计练习作业 邮局选址问题 将自己写的分享 有问题请指正 希望共同学习 关于邮局选址问题的理论知识就不赘述了 网上有讲解的 include
  • Python 入门基础

    第一个Python程序之打印 Hello World print Hello World 字符串定义的三种方式 type 用了检测数据类型 单引号定义法 使用单引号进行包围 name 测试 print type name 双引号定义法 na
  • Mysql审核查询平台Archery部署

    目录 1 Archery产品介绍 2 基于docker搭建Archery 2 1 系统环境 2 2 安装 Docker 2 2 1 安装 Docker Compose 2 2 2 下载Archery 2 2 3 安装并启动 2 2 4 表结
  • jdk8

    文章目录 1 场景再现 2 Supplier
  • 【计蒜客】2n皇后问题

    思路 此题与n皇后问题十分类似 也是利用递归回溯求解 这题放2n个皇后 我采取的做法是 先放n个黑皇后 再放n个白皇后 具体实现见代码 一些细节方面我都标注出来了 并且做了详细解释 代码 include
  • [Python] Python中的模块、包和内置函数

    1 模块 python 模块简单来说就是一个 py文件 程序的目的是运行 而模块的目的是供其他程序导入并且使用 模块也有对象 每个模块对象都有一个特殊属性 dict 这是一个包含模块符号表的字典 导入模块 import importable