Python shell中运行代码的输出与IDLE中运行脚本的输出不同

时间:2017-11-17 07:05:49

标签: python python-3.x

我在Windows 10上使用Python 3.6.3。

我使用以下代码创建了一个.py文件:

invalid use of incomplete type ‘class B<int>’

并用python IDLE打开它。按完F5(运行模块)后,我得到了这个:

enter image description here

令我困惑的是,如果我将两行代码直接写入Python shell,我可以得到所需的结果,如你所见:

enter image description here

第一张图片中的错误消息显示我创建了另一个.py文件(E:\ py \ http.py)。这是另一个我不理解的地方,因为这个文件似乎与import urllib.request urllib.request.urlopen('https://github.com').read().decode('utf-8') 没有任何关系。

relaceSpy.py中的代码如下:

http.py

如果我删除def get_page(url): import requests proxies = { "http": "http://127.0.0.1:2012", "https": "https://127.0.0.1:2012", } r=requests.get(url, proxies=proxies) return r.text get_page('https://youtube.com') 然后在IDLE中打开并运行http.py,我什么都得不到:

enter image description here

3 个答案:

答案 0 :(得分:1)

我找到了原因。如果我更改以下代码行

urllib.request.urlopen('https://github.com').read().decode('utf-8')

为:

print (urllib.request.urlopen('https://github.com').read().decode('utf-8'))

(即添加print)然后运行脚本,我会得到我想要的。

但我不明白为什么会这样。

答案 1 :(得分:0)

您的IDE可能使用与shell不同的设置和环境。检查IDE中的python版本,软件包版本和自定义环境设置。

答案 2 :(得分:0)

这是因为您拥有指定包的标识。换句话说,您创建的文件名称可能是http,即使用urllib.request。只需搜索并替换名称