代码块block和缓存机制 狭义的代码块 Python的程序是由代码块组成的。从狭义上讲,Python通过缩进来定义代码块ifnameVTester:print(VTester祝大家新年快乐)print(VTester祝大家身体ahrefhttps:www。q578。coml160targetblankclassinfotextkey健康a)print(VTester祝大家万事如意)else:print(祝大家新年快乐)print(祝大家身体ahrefhttps:www。q578。coml160targetblankclassinfotextkey健康a)print(祝大家万事如意) 整个if。。else。。语句是一个代码块。 同时这个大的代码块里的if分支是一个代码块,else分支也是一个代码块。 所以代码块可以嵌套。 广义代码块 从广义上讲,Python程序是由代码块组成的。一个代码块(block)是一个Python程序执行的单元。下面这些都是代码块:模块module函数的body类的定义一个Python文件交互式Python中每一行代码都是一个代码块 缓存机制 但是,在同一个Python的代码块中,也存在这样的缓存机制。我们称它为块级缓存吧。如果是同一个代码块,会重复利用常量对象。 因为这个缓存是代码块内的小缓存,总共也不会有太多的对象,所以可以尽可能多的缓存对象。 看这个例子:Python3。10。0(v3。10。0:b494f5935c,Oct42021,14:59:19)〔Clang12。0。5(clang1205。0。22。11)〕ondarwinTypehelp,copyright,creditsorlicenseformoreinformation。aVTesterbVTester1id(a)4308804080id(b)4308807920cVTdVTester1id(c)4308808208id(d)4308808208 注意观察结果:a和b的地址是不同的(4308804080,4308807920),因为交互式Python中每一行代码都是独立的代码块,不会共同对象。而c和d两个变量地址是相同的(4308808208),因为它们是在同一行定义的,是在同一个代码块中,会重复利用对象。 它的原因就是:代码块缓存机制。 Pycharm在执行代码时会把整个文件作为一个代码块执行。 既然是同一个代码块,就会重用对象了。 所以两个中文的字符串VTester也是同一个地址。 有问题给我留言。