Python模块导入时全局变量"__all__"的作用

2023-11-06

Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,可以在py文件中,也可以在包的__init__.py中出现。

1、在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中,

     如:全局变量,函数,类。如下,test1.py和main.py

     test1.py

__all__=["test"]
def test():
	print('----test-----')

def test1():
	print('----test1----')

   main.py

from test1 import *


def main():
	test()

	#test1()

main()

两个文件在同一个目录下。

此时执行python main.py时结果如下:


但是如果放开main.py的注释后,如下:


那么在模块中的__all__变量就是为了限制或者指定能被导入到别的模块的函数,类,全局变量等,如果指定了那么只能是指定的那些可以被导入,没有指定默认就是全部可以导入,当然私有属性应该除外。

2、在包下的__init__.py中

sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]

那么就会在from sound.effects import *时,包含上面三个模块。当__init__.py为空时,只是导入这个包,并非导入模块。

__init__.py中可以执行一些初始化内容,比如:

from . import test1 导入当前目录下的test1模块

from .. import test 导入上一层目录下的test模块

因为导入 包时会首先执行下__init__.py这个文件


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python模块导入时全局变量"__all__"的作用 的相关文章

  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_

    原文地址 http www emcu it ARM Compiler IAR IAR tips and tricks html IAR tips and tricks Home Page STM32 home page CMSIS buil
  • vue项目兼容IE11

    1 npm安装babel polyfill npm install babel polyfill save dev 2 在入口文件main js中引入 import babel polyfill 3 如果也是用了官方脚手架vue cli 还
  • Tomcat项目500报错处理方法之一

    今天做的项目出现了Tomcat500错误 根据错误提示是 java lang ClassNotFoundException 搜索了很多解决方法 最终找到一个解决方案 https blog csdn net u011008029 articl
  • 类#是公共的,应在名为#.java的文件中声明

    1 如果类A被声明为公共的 public 那么必须将类A保存在名为A java的文件中 2 反之 在一个文件中最多包含一个顶级的公共类 并且该公共类的名字与文件名相同 比如文件A java中 允许定义一个或多个类 但最多允许一个顶级的公共类
  • 又一波Microsemi招聘信息

    Position Manager ASIC Design Business Unit ESC PerformanceStorage Location Shanghai China Youwill build and lead an IC d
  • Deeplabcut----(3)新建自己的训练(多只动物)

    多动物的标注比单动物复杂了N倍 动物回来会穿梭 以至于一时不知道是哪只 需要对比着视频观看找对应的 1 打开deeplabcut 新建训练 2 编辑配置文件设置动物数量 关节 骨架等 单击Edit config file开始编辑 可以按照自
  • RT-DETR原理与简介(干翻YOLO的最新目标检测项目)

    概述与简介 RT DETR是一种实时目标检测模型 它结合了两种经典的目标检测方法 Transformer和DETR Detection Transformer Transformer是一种用于序列建模的神经网络架构 最初是用于自然语言处理
  • Hugging Face——MLM预训练掩码语言模型方法

    对于许多涉及 Transformer 模型的 NLP 程序 我们可以简单地从 Hugging Face Hub 中获取一个预训练的模型 然后直接在你的数据上对其进行微调 以完成手头的任务 只要用于预训练的语料库与用于微调的语料库没有太大区别
  • PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别

    PHP CGI FastCGI PHP FPM PHP CGI是不同的PHP执行方式和处理程序 它们有以下区别 PHP CGI Common Gateway Interface PHP CGI是一种通过CGI协议与Web服务器通信的PHP执
  • 基于 LSTM 的船舶轨迹预测,单步预测

    之前给的数据和代码可能有一些问题 现在从新修改一下 末尾提供数据集和源码链接 单步预测步长 10 单步循环预测长时间的位置 从第1个位置开始 前10个位置 真实位置 预测第11个位置 然后第2个位置到第11个位置 预测值 为一组 预测第12
  • c++20新特性

    个人博客地址 https cxx001 gitee io 前言 自C 11这个大版本更新以来 后来陆续有两次小版本迭代C 14 C 17 它们主要是对C 11的补充扩展 并没有增加太多大的特性 而这次的C 20 和当年C 11一样 又是一次
  • 用卷积神经网络实现表情识别

    用卷积神经网络实现表情识别 一 卷积神经网络简介 1 定义 2 结构 3 理论 4 性质 二 在python环境下实现 三 总结 一 卷积神经网络简介 1 定义 卷积神经网络 Convolutional Neural Networks CN
  • 吴恩达机器学习python作业之单变量线性回归

    第一个方法读取数据用的是pandas 第二个方法读数据用的是numpy 第一种方法是梯度下降法 第二种方法是正规方程法 跟着佬们的思路写写改改 如果有错误请私信或评论哦 数据集理解 ex1data1 txt的数据集是两列 第一列是popul
  • 炫酷的开关--20230907

    Night Day Toggle Completed It HTML div class controls div
  • Vue3 setup语法糖使用简易教程(下)

    Vue3 setup语法糖使用简易教程 下 前几天一个月薪35k的兄弟 给我推了一个人工智能学习网站 看了一段时间挺有意思的 包括语音识别 机器翻译等从基础到实战都有 很详细 分享给大家 1 组件 1 1组件引用 组件在props里直接引入
  • python configparser读取.conf配置文件获得配置信息

    configparser是用来读取配置文件的包 配置文件的格式如下 中括号 内包含的为system 下面为key value 的配置内容 web conf内容 1 py 内容 导入模块 import os configparser 读取文件
  • 今日头条号问答微头条原创收益向百粉开放

    今日头条号 问答和微头条原创收益向百粉作者开放了 以前没有还可以开通的作者 这次可以抓紧时间去申请开通 作者宋九九 头条号发布公告称 自2021 年 1 月 13 日起 微头条创作收益和问答创作收益权益面向粉丝数不低于100作者开放 只要你
  • Spring配置文件报错 application context not configured for this file

    Spring配置文件报错 application context not configured for this file 解决方法一 点击Configure application context 选择Create new applica
  • FileZilla Server 下载、安装、配置教程

    下载filezilla server filezilla server官网 FileZilla The free FTP solution https filezilla project org FileZilla Server下载 Fil
  • Python模块导入时全局变量"__all__"的作用

    Python中一个py文件就是一个模块 all 变量是一个特殊的变量 可以在py文件中 也可以在包的 init py中出现 1 在普通模块中使用时 表示一个模块中允许哪些属性可以被导入到别的模块中 如 全局变量 函数 类 如下 test1