为啥这个 Python 代码会运行两次? [复制]

Posted

技术标签:

【中文标题】为啥这个 Python 代码会运行两次? [复制]【英文标题】:Why is this Python code running twice? [duplicate]为什么这个 Python 代码会运行两次? [复制] 【发布时间】:2013-07-05 23:40:42 【问题描述】:

我有一个只有这两行的 Python 脚本:

import requests
print len(dir(requests))

打印出来:

12
48

当我打印实际列表 dir(requests) 时,我得到了这个:

['__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__']
['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest', 'Request', 'RequestException', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__', 'adapters', 'api', 'auth', 'certs', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'utils']

我猜有多个requests 模块或类似的东西。请帮忙。

【问题讨论】:

这些是什么“实际数组”?你什么时候打印它们?请提供更多信息。 糟糕。 dir(requests) 返回的 列表。已编辑 但是你只做了一次。分别在什么情况下得到? @kindall 脚本只有这两行 在上下文方面可能值得一提的是,这个问题是对sort this earlier question的尝试的副产品 【参考方案1】:

您为脚本指定了一个标准模块的名称或由requests 包导入的其他名称。您创建了循环导入。

yourscript -> import requests -> [0 or more other modules] -> import yourscript -> import requests again

因为requests 没有完成在您第一次在支持的对象列表中看到这些差异时导入。

不要那样做。将您的脚本重命名为其他名称,一切正常。

【讨论】:

耶稣。是http.py 这个答案救了我的命。谢谢!我一次执行多个脚本,发现我创建了一个导致相同问题的循环导入。吸取教训!【参考方案2】:

第一个是你自己的模块 其次是处理 HTTP 请求的模块。 重命名你自己的模块

【讨论】:

以上是关于为啥这个 Python 代码会运行两次? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥调用 python 列表的 [-1] 会给出这个输出? [复制]

为啥我的代码在完成块中运行两次

为啥这个 SwiftUI 视图会初始化两次?

为啥 QtSerialPort 在运行超过一次或两次后不会读取?

为啥这会在我的控制台上打印两次? [复制]

为啥这个 Swift Playground 打印和循环两次?