鱼C论坛

 找回密码
 立即注册
查看: 4676|回复: 15

求解惑 同样的代码,2次的结果不一样

[复制链接]
发表于 2016-9-19 22:42:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
WIN7X64  python3.5.2环境下

len(list(dir(__builtins__)))

刚开始运行第1次时输出为 151

后面在运行输出为 152

捕获.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-21 09:14:34 | 显示全部楼层
本帖最后由 冬雪雪冬 于 2016-9-21 09:20 编辑
蛋炒饭妖妖 发表于 2016-9-21 08:56
也就是第一次运行后 _  代表151
第二次运行后 _ 就代表第二次运行的结果,152
那为什么第三次的时候 _  ...


第一次运行dir(__builtins__)返回的列表没有'_',有一次交互后返回列表就多了一个下划线,所以是152。再交互后仍只有一个下划线,还是152
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 02:57:15 | 显示全部楼层
这样,我们先不急着解决这个问题,我们将问题修改一下,如果去掉 len(),那么观察下多出来的又会是什么?


请先充分思考和实验,下边刮开看答案:

是不是多了一个 '_'?这个下划线是干啥的呢?

我们不妨打开 IDLE 来做下实验:

输入:_

输出:报错了……

输入:len(list(dir(__builtins__)))

输出:151

输入:_

输出:151

输入:len(list(dir(__builtins__)))

输出:152

输入:_

输出:152

输入:1 + 1

输出:2

输入:_

输出:2

那你告诉我,'_' 是什么?

没错,在解释器中:'_' 代表交互式解释器会话中上一条执行的语句的结果(但它的存在必须是有一次交互之后)。



上边有答案噢

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 09:40:31 | 显示全部楼层
小甲鱼老师这刮奖太6了。。惊呆了我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 11:45:07 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-20 15:51:31 | 显示全部楼层
小甲鱼 发表于 2016-9-20 02:57
这样,我们先不急着解决这个问题,我们将问题修改一下,如果去掉 len(),那么观察下多出来的又会是什么?
...

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 16:32:12 | 显示全部楼层
小甲鱼 发表于 2016-9-20 02:57
这样,我们先不急着解决这个问题,我们将问题修改一下,如果去掉 len(),那么观察下多出来的又会是什么?
...

小甲鱼老师,别嫌弃我白痴。。。。

如果 _ 代表上一次交互后的结果的话,那为什么第三次不会加1呢。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 22:34:28 | 显示全部楼层
捕获.PNG

我看到多了个  "_"  图中标红

完全一脸懵逼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 23:57:15 | 显示全部楼层
python太神了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-21 07:55:02 | 显示全部楼层
小甲鱼 发表于 2016-9-20 02:57
这样,我们先不急着解决这个问题,我们将问题修改一下,如果去掉 len(),那么观察下多出来的又会是什么?
...

这个刮奖太太太。。我都惊了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-21 07:56:57 | 显示全部楼层
蛋炒饭妖妖 发表于 2016-9-20 16:32
小甲鱼老师,别嫌弃我白痴。。。。

如果 _ 代表上一次交互后的结果的话,那为什么第三次不会加1呢。。 ...

观察好仔细,同问@鱼神
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-21 08:36:49 | 显示全部楼层
蛋炒饭妖妖 发表于 2016-9-20 16:32
小甲鱼老师,别嫌弃我白痴。。。。

如果 _ 代表上一次交互后的结果的话,那为什么第三次不会加1呢。。 ...

不论有多少次交互,只保留最后一次,即只有一个"_"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-21 08:56:54 | 显示全部楼层
冬雪雪冬 发表于 2016-9-21 08:36
不论有多少次交互,只保留最后一次,即只有一个"_"

也就是第一次运行后 _  代表151
第二次运行后 _ 就代表第二次运行的结果,152
那为什么第三次的时候 _  还是代表152呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-21 09:20:31 | 显示全部楼层
冬雪雪冬 发表于 2016-9-21 09:14
第一次运行dir(__builtins__)返回的列表没有'_',有一次交互后返回列表就多了一个下划线,所以是152。再 ...

可是我第一次运行后  _  是有数值的呀( ⊙ o ⊙ )。。。

不知道图片传的对不对。。。
捕获.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-21 09:23:41 | 显示全部楼层
蛋炒饭妖妖 发表于 2016-9-21 09:20
可是我第一次运行后  _  是有数值的呀( ⊙ o ⊙ )。。。

不知道图片传的对不对。。。

第一次运行前是没有下划线的,第一次运行len(dir(__builtins__)),则把数量返回并赋值给下划线,但这时数量是不包含下划线的,再运行则有了下划线。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-21 12:08:18 | 显示全部楼层
冬雪雪冬 发表于 2016-9-21 09:23
第一次运行前是没有下划线的,第一次运行len(dir(__builtins__)),则把数量返回并赋值给下划线,但这时数 ...

哦哦哦哦哦哦

懂了懂了~~~~

谢谢你这么耐心~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-22 21:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表