python学习之那些由print引起的困惑

Posted jjzz1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之那些由print引起的困惑相关的知识,希望对你有一定的参考价值。

该文索所起之因:在练习列表的操作时,要输出一波操作后的列表,但是一直让本人耿耿于怀的时下边的这个现象:

技术图片

红色框框里是字符串,黄色框框里是列表,同样是只对一个元素进行的操作,为啥输出时字符串是作为一个整体输出,而列表却输出了一个“None”,什么情况?于是多次实验,不管是remove还是extent等等,都输出一个“None”。“None”“None”“None”你就只会一个“None”吗?竟然给我一个空?一万个“WTF”油然而生。

? 难受,欲求其果,遂翻遍整个百度,扑天盖地都是关于string和list的使用,结果然并卵。思定,是我见识太短浅?不对,一定是我思考的方式不对,那比较看看吧,目前我掌握的信息有:

  1. 字符串是不可变类型,而列表是可变类型;
  2. 对字符串进行相关的操作时,都会在内存中新建一个新的字符串做结果;
  3. 对列表进行操作时,都是直接是在列表本身进行的;

hold on ,hold on !有点意思,罪魁祸首是不是要从这里查起呢?于是翻出《Learning Python 5th Edition 》--不愧是一本神书,Look what I get:

技术图片

? 果不其然,numbers,strings,tuples都是immutable,并且they cannot be changed inplace after they are created。而lists,dictionaries and sets are not--they can be changed in place freely。

? 实施正如所想,之所以对字符串进行操作后,哪怕仅仅只是对一个元素进行了修改,都是会得到一个新建的字符串,我称其为影分身,所以输出时,它可以代替实体显示在我们面前;而列表不一样,所有的操作都是在列表本体直接进行,它没有影分身任我们宰割,所以输出其操作流程时,我们只能得到一个空响。

? 真相大白,水落石出,一身轻松!

<<<<<<<<表达如有不妥之处,还请各路大神指正!

以上是关于python学习之那些由print引起的困惑的主要内容,如果未能解决你的问题,请参考以下文章

《学习之道》第九章困惑情绪都不能称为拖延

Python面向对象学习之八,装饰器

坚持Selenium+Python学习之从读懂代码开始 DAY5

python基础学习之02 元组

python3学习之print

python学习之-类的定义对对象的概念