[问与答]Python 中 __all__ 的作用 ?

你要是看Python的源码或者相关框架的源码,总是在 __init__.py 或者是源文件的开头看到一个 __all__ 变量的定义,今天就说说它的作用. orangleliu

问题出处

Can someone explain all in Python?

问题

我越来越多的使用Python了,经常看到 __all__ 变量再各种 __init__.py 文件中,谁能解释为什么那么做呢?

解答

它是一个string元素组成的list变量,定义了当你使用 from <module> import * 导入某个模块的时候能导出的符号(这里代表变量,函数,类等)。

举个例子,下面的代码在 foo.py 中,明确的导出了符号 bar, baz

__all__ = ['bar', 'baz']

waz = 5
bar = 10
def baz(): return 'baz'

导入实现如下:

from foo import *

print bar
print baz

# The following will trigger an exception, as "waz" is not exported by the module
# 下面的代码就会抛出异常,因为 "waz"并没有从模块中导出,因为 __all__ 没有定义
print waz

如果把 foo.py__all__ 给注释掉,那么上面的代码执行起来就不会有问题, import * 默认的行为是从给定的命名空间导出所有的符号(当然下划线开头的私有变量除外)。

注意

需要注意的是 __all__ 只影响到了 from <module> import * 这种导入方式,对于 from <module> import <member> 导入方式并没有影响,仍然可以从外部导入。

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行Python接口自动化测试面试时,以下是一些常见问题和参考答案: 1. 你如何启动接口自动化测试?你如何加载用例并执行批量测试并生成报告? 答:可以使用一个测试框架(例如pytest)来管理和执行接口自动化测试。通过编写测试用例文件,并使用测试套件加载和执行这些用例。执行完成后,可以生成测试报告来展示测试结果。 2. 在接口自动化测试,测试数据应该放在哪里? 答:对于一些基础配置(如环境地址、手机号码、不经常变化的数据),可以将其放在配置文件。而接口测试用到的数据可以放在数据库表,也可以放在Excel文件,通常Excel文件存放的是单接口测试用例。 3. 如何设置一个高质量的测试框架? 答:要设置一个高质量的测试框架,可以考虑以下几点: - 使用合适的测试框架和工具,如pytest或unittest,以便管理和执行测试用例。 - 编写可重用的测试代码和测试工具,并使用模块化的方式组织测试用例和测试步骤。 - 设计良好的测试用例,包括边界值测试、异常情况测试等,覆盖各种测试场景。 - 使用适当的断言和日志记录,以便在测试失败时快速定位问题。 - 定期维护和更新测试框架,以适应项目需求和新的测试技术。 4. 如果在接口自动化使用了数据库,你会使用哪个数据库,并如何操作该数据库? 答:在接口自动化使用的数据库可以根据项目需求而定。常见的数据库有MySQL、SQLite、PostgreSQL等。对于数据库操作,可以使用Python的数据库驱动程序(如MySQLdb、psycopg2)来连接和执行SQL语句,以完成对数据库的操作。 5. 如果某些接口需要鉴权(需要验证权限),如何实现这些接口的自动化测试? 答:对于需要鉴权的接口,在自动化测试可以通过以下方式实现: - 在测试框架预先设置鉴权信息,例如在配置文件配置访问令牌或用户名密码等,并在发送请求时自动带上这些鉴权信息。 - 使用模拟登录或生成访问令牌的方法,在测试开始前获取鉴权信息,并在测试使用该信息进行接口访问。 这些问题和答案仅供参考,你可以根据自己的经验和项目需求来适应和补充。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [面试问题python-接口自动化](https://blog.csdn.net/qq_38224014/article/details/123719060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值