Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6Mobile wallpaper 7Mobile wallpaper 8
795 字
4 分钟
CS61A:Print 初探(附图解)
2025-12-04
2025-12-04

目录#

孩子们CS61A真的做的太好了我巴不得写100篇。

下期讲C语言的printf。

观前提醒:本文使用的知识内容包括:自定义函数,print函数嵌套,所有的指令均在命令行进行。

目录

一、print函数的基础使用

二、print函数的嵌套以及运行顺序


一、print函数的基础使用#

顾名思义就是print(打印)。比如:

>>> -2
-2
>>> print(-2)
-2

        但正如上面所看到的,直接打-2也可以输出-2,为什么要用print?

        在下面的代码中我们就可以看出两者的差别:

>>> "hello"
'hello'
>>> print("hello")
hello
>>> None
>>> print(None)
None

           其中的核心在于:print的规则是自动显示内部输入的任何表达式的值,因此尽管None不会显示任何信息也会被print忠实地打印下来。

        print还可以同时打印多个数据,并把逗号转化为空格。

>>> print(1,2,3)
1 2 3
>>> print(None,None)
None None
>>> print('hello','world')
hello world

        我们还可以在print的表达式中调用函数:

>>> def square(x):
... return x**2
...
>>> from operator import add
>>> print(add(3,2),square(4))
5 16

        我们用图解来表示这个过程(图像由GPT生成,虽然还是很丑但差不多是这个意思):

        print函数首先运行的是add(3,2),调用函数add(),求出add(3,2)=5,然后调用自定义函数square()得到16,最后再回到print函数输出5 16。

        从这个例子中我们也可以意识到,当我们运行函数的时候,他会先把里面的函数的值全部求出来,再用print输出,在下面的内容我们会有更深的理解。

二、print函数的嵌套以及运行顺序#

        如果我们输入print(print(1),print(2))会怎么样?

>>> print(print(1),print(2))
1
2
None None

这个None是什么鬼,为什么会有这样的结果?

事实上print是Non-Pure Function,这意味着print函数除了输入和输出是有side effect的,而这个副作用就是打印值。

我们可以通过代码进行验证

>>> a = print(1)
1
>>> a
>>> print(a)
None

同时我们需要注意的是,python的print是自带换行符的。

现在按照我们前面提到的所有的点,让我们用这个例子串起来吧——

①当我们运行print的时候需要先把里面的值全部求出来,才会用print进行打印;

②print运行的时候,作为调用语句的副作用,会打印出括号内的值,同时本身有返回值None;

③print在打印出值后会自动换行。

那么聪明的你就可以理解为什么是这样的结果了,同样我们用图像分解一下(图片来自CS61A):

要运行print(print(1),print(2))首先要分别运行print(1),print(2),换行打印side effect 1和2,同时返回None None,最后输出print(None,None),把逗号换成空格,得到None None。

来试试这个课后小题吧!用代码确认你的答案!

>>> def square(x):
... print("result:")
... return x**2
...
>>> from operator import add
>>> print(1,print(add(3,2)),square(4))
CS61A:Print 初探(附图解)
https://blog.csdn.net/2501_93882415/article/details/155542031
作者
Mem0rin
发布于
2025-12-04
许可协议
Unlicensed

部分信息可能已经过时