Python学习笔记9:入门知识(九)

缩进

什么是缩进?

缩进,简单的理解为本行的首字符相比上一行的首字符位置相对靠后。目前笔者接触的编程语言缩进一般是4字符,直接可以按tab键就行。

为什么突然讲缩进?

Python这门语言,是依靠缩进来判断当前行与上一行的关系。也就是说,在某些代码块里面,你必须依靠缩进来让代码整洁明了,同时你也需要根据缩进来解读代码。

虽然我本身没学过Python,但是我有学习其他编程语言的基础,所以理解接收起来快一点。在我看Python crash course的时候,书中也提到了缩进的注意事项,所以在这边再单独讲一下缩进。

什么时候用缩进?

通常来说,当你使用流程语句,控制语句,循环语句,定义函数,定义类信息时,会需要使用缩进。除了这些一般情况下都不需要使用缩进。

当你的某一行代码,不需要在它上一个代码块中运行时,你就取消一个缩进,保持与上一个代码块相同的缩进量。

我用代码演示一下。

  1. 只有一级嵌套

  2. 假如我在for循环后的下一行(图146行)不缩进,会怎么样呢?

    这里会运行失败并且报错,并且你的IDE会直接标红提示。

  3. 我们已经知道了for循环后的第一行(图148行)需要缩进,并且我们在循环里面要做两件事情,那么第二行不缩进的话,第二件事会在循环里面做吗?

    你会发现,你本应在循环里面做的第二件事,最终并没有做五次,而是在循环结束后只做了一次。这说明Python根据你代码中155行中的缩进量判断,你这个语句不属于循环语句中的操作,所以放到了循环语句的同级别执行。

  4. 假如我们的语句里面又嵌套语句怎么办?

    大家跟着思路来阅读这段代码。

    首先阅读看到,代码嵌套了两层for循环,那么这个代码的整体的层级就是3。因为你代码本身为一级,代码中流程,控制,循环等语句,代码层级加1。那么本段代码的层级就等于:1(self) + 1(name_list) + 1(name) = 3。注意同级别的这些语句,不会增加代码层级。比如你在代码163行的位置插入一个for循环,本地代码的层级还是不变。

    其次阅读发现第一层里面,做了三件事:打印明月望秋思 ,执行一个for循环代码块 ,打印学习Python。这三个操作,因为是self中的操作,我们设定这三个操作为1_1,1_2,1_3。这三个操作的代码没有缩进。

    再次阅读,发现操作1_2里面又做了三件事:打印name ,执行一个for循环代码块,打印** name do something**。同样的,这三个操作命名为1_2_1,1_2_2,1_2_3。这三个操作的代码有一个缩进。

    再次阅读,发现操作1_2_2里面又做了两件事:打印word ,打印word do something。同样的,这两个操作命名为1_2_2_1,1_2_2_2。这两个操作的代码有两个缩进。

    那么我们可以解读出哪些信息呢?

    第一:代码的层级,只和最大的那一层的层级有关,和数量无关。

    第二:代码的缩进量与代码层级有关,缩进量为代码层级减一。

    在我们读代码的时候,就可以根据第二条,拆分代码,拆分出不同的级,再按级分析代码。省的看到一大片代码无处下手。

    在我们写代码的时候,两条结合。你写的当前代码是多少级的代码,就要设置好级别减一的缩进量。你当前这行的代码想在哪一级别执行,你就按级别减一设置缩进量。当然这些得到前提是要符合代码的规范性和程序的逻辑性,不然最后写出无法运行,无法得到想要的运行结果的程序那不是很尴尬。
    个人总结,大佬勿cue。

    最后

    今天公司团建,有点肝不动了。明天在家直接肝两篇,并且终结入门章。

    点赞收藏关注不迷路,感谢大家!!!

相关推荐
青青子衿_212 分钟前
TikTok爬取——视频、元数据、一级评论
爬虫·python·selenium
wdfk_prog21 分钟前
[Linux]学习笔记系列 -- [kernel]workqueue
linux·笔记·学习
wdfk_prog22 分钟前
[Linux]学习笔记系列 -- [kernel]usermode_helper
linux·笔记·学习
忘却的旋律dw40 分钟前
使用LLM模型的tokenizer报错AttributeError: ‘dict‘ object has no attribute ‘model_type‘
人工智能·pytorch·python
冬夜戏雪43 分钟前
【学习日记】【刷题回溯、贪心、动规】
学习
一只爱做笔记的码农1 小时前
【BootstrapBlazor】移植BootstrapBlazor VS工程到Vscode工程,报error blazor106的问题
笔记·学习·c#
20岁30年经验的码农1 小时前
Java RabbitMQ 实战指南
java·开发语言·python
xixixi777771 小时前
“C2隐藏”——命令与控制服务器的隐藏技术
网络·学习·安全·代理·隐藏·合法服务·c2隐藏
名字不相符1 小时前
攻防世界WEB难度一(个人记录)
学习·php·web·萌新
陈天伟教授2 小时前
基于学习的人工智能(4)机器学习基本框架
人工智能·学习·机器学习