python - 同一 python 版本的不同副本之间的行为不一致

标签 python

我最近在研究以下代码:

print(getattr(__builtins__, "__import__")("random"))

在我的本地 Python 版本上,它似乎按预期工作:

<module 'random' from 'C:\\Users\\lkfjsa\\Programs\\Python3.6.1\\lib\\random.py'>

我的版本是:

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32

然后我继续在 repl.it 上尝试同样的事情:Code Here

我能找到的关于该版本的最多信息是:

Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux

然后给出这个输出:

Traceback (most recent call last):
  File "python", line 1, in <module>
AttributeError: 'dict' object has no attribute '__import__'

我真的很困惑……有人愿意解释一下吗?

最佳答案

因为可能由于 repl.it 的沙盒实现或类似的东西,他们的 __builtins__ 版本实际上是一个 dict

   type(__builtins__)
=> <class 'dict'>
   __builtins__['__import__']
=> <built-in function __import__>
   __builtins__['__import__']('random')
=> <module 'random' from '/usr/local/lib/python3.6/random.py'>

关于python - 同一 python 版本的不同副本之间的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46107929/

相关文章:

python - 即使引发 ValueError,Pytest assertRaisesWithMessage(ValueError) 也会失败

python - BitString - 无法在 BitStream 中加载我的值

python - 创建在 python virtualenv 中执行命令的 docker 镜像

python - 使用 redis.StrictRedis() 在 redis 中插入一个新数据库

python - Panda AssertionError 列已传递,传递的数据有 2 列

python - 如何计算 pandas 中分类变量的滚动计数

python - 在Cloudera VM中阅读教程CSV文件时的异常(exception)

python - 如何代入 Python 中的正则表达式组

python - 在字符串列表中查找完全匹配

python - 我如何根据部门汇总员工并使用 groupby pandas 显示每个部门的平均工资?