Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6Mobile wallpaper 7Mobile wallpaper 8
770 字
4 分钟
CS61A:Print 初探(附图解)

CS61A:Print 初探(附图解)#

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

下期讲C语言的printf。

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

[TOC]


一、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是什么鬼,为什么会有这样的结果?

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

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

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

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

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

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

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

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

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

要运行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?spm=1001.2014.3001.5502
作者
Mem0rin
发布于
2025-12-04
许可协议
Unlicensed

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00