0.24 代码的基本结构:一段程序由什么组成
第〇篇【零基础预科】免费。这一篇像认识"零件清单"一样,先看清代码由什么构成,后面再逐个展开。
一、六大基本零件
几乎所有程序都由这些零件组合而成:
| 零件 | 作用 | Python 例子 |
|---|---|---|
| 变量 | 给数据起名字、存起来 | name = "eason" |
| 数据类型 | 数据是什么种类 | 字符串、数字、布尔、列表 |
| 运算 | 对数据做计算/比较 | + - * /、== > < |
| 条件 | 按情况走不同分支 | if ... else |
| 循环 | 让一段代码重复执行 | for、while |
| 函数 | 把一段逻辑打包复用 | def check(): |
后面 0.25–0.29 会逐个讲,这里先建立整体印象。
别被这张表吓到。这六样东西看着多,其实你每天用手机 App 时背后都在跑它们:把你的搜索词存进一个变量(变量)、判断它是不是空(条件)、对搜出来的结果一条条展示(循环)、把"发请求"这段逻辑打包成一个函数(函数)。你以后读任何 Python 脚本,从头到尾扫一遍,能认出这六样零件各在哪,就算入门了。
你可能会问:这六样是所有语言都通用的吗? 概念是通用的,写法不同。JavaScript、Java、Go 也有变量、条件、循环、函数,只是语法外壳不一样。就像普通话和方言说同一件事用词不同,但"谁是主语、谁做什么"的逻辑是一样的。你在 Python 里把这套逻辑搞透,换语言时只需查"这个写法在新语言里长什么样",不用重新学思考方式。
二、语句与顺序执行
语句(statement) 是一条完整的指令,通常占一行。程序默认从上到下顺序执行:
print("第一步")
print("第二步")
print("第三步")运行后屏幕上会依次出现"第一步""第二步""第三步",中间没有停顿、不会乱序。你可以亲手试一下:把第二行删掉,再跑,就只剩第一步和第三步——这说明程序是真的在逐行执行你写的内容,而不是背好了答案。这种"改一行、跑一次、立刻看到变化"的反馈循环,是学编程最快的方式。
顺序执行这个听着理所当然,但它是理解一切程序的基础。计算机没有"抢着做"的概念,你写在上面的先做,写在下面的后做。你以后写脚本时出 bug,八成是某一步"还没做完就跑到下一步了"——比如还没等服务器返回结果,就先去读它了。记住"从上到下"这条主线,再去理解条件怎么让它跳着走、循环怎么让它重复走,就清楚了。
三、注释:写给人看的话
# 这是一行注释,解释器会忽略
print("会执行") # 行尾也可以写注释写注释是好习惯:解释"为什么这么做",方便几天后的自己和别人看懂。
注释有个常见误区:不是复述代码在做什么,而是解释"为什么这么做"。# 把 target 存进变量 这种注释等于废话——代码本身已经说了;但 # 这里必须加 timeout,否则靶机不响应时会一直卡住 就很有价值,它把你踩过的坑记下来了。安全脚本尤其需要注释,因为 PoC 经常改一个参数就能打不同的版本,过两个月自己回来看,不记得当时为什么这么写,又得重新研究一遍。
还有一类注释叫"暂时不用但先留着"——把一段代码用 # 注释掉而不是删掉,因为你不确定以后还需不需要。这是临时调试的常用手段,但发出去之前要清理掉,别把一堆废注释留在正式脚本里,那会让读的人分不清哪些是活代码、哪些是垃圾。
四、缩进:Python 的规矩
很多语言用花括号 { } 表示代码块,Python 用缩进:
age = 20
if age >= 18:
print("成年") # 这行前面有缩进,属于 if
print("总是执行") # 没缩进,不属于 if- 同一代码块缩进必须一致(惯例 4 个空格);
- 缩进混乱会报
IndentationError; - 复制代码时尤其要注意缩进别被破坏。
缩进报错是新手第一个会碰到的"看不懂"的错误。典型场景:你从网上复制一段脚本,粘到自己编辑器里,跑起来报错 IndentationError: unexpected indent。这行字的意思就是"这行代码前面的空格对不上"——可能是复制时多了一个空格、也可能是 Tab 和空格混用了。解决办法很简单:找到报错那一行,把它前面的缩进删干净,按统一的 4 个空格重新对齐。别慌,这不是什么逻辑错误,就是格式没对齐。
你可能会问:为什么 Python 不用花括号,非要用缩进? 这是 Python 故意的设计选择——它逼着你把代码排版整齐。用花括号的语言,你可以把好几行挤在一行、缩进乱七八糟,机器也能读懂;Python 则要求你人也看着舒服。刚开始会觉得别扭,习惯之后你会发现 Python 代码读起来最像伪代码,几乎不用猜哪段属于哪个
if。
五、一个完整小例子(先混个眼熟)
# 判断目标是否可疑
status_code = 200 # 变量
if status_code == 200: # 条件
print("页面正常") # 缩进:属于 if
else:
print("需要检查")
for i in range(3): # 循环
print("第", i, "次")现在不必全懂,等学完后面几篇,回头看会非常轻松。
把这段代码逐行"念"给你听:先给 status_code 赋值 200;然后判断"如果它等于 200",就打印"页面正常",否则打印"需要检查";再然后,对 0、1、2 这三个数字各打印一行"第几次"。你看,变量、条件、循环全用上了,加起来才几行——这就是真实脚本的骨架。你以后看到的任何探测脚本、PoC,拆到底都是这几样东西的排列组合,只是变量更多、条件更复杂、循环套循环而已。
六、本篇小结
- 六大零件:变量、数据类型、运算、条件、循环、函数。
- 语句默认从上到下执行;注释(#)给人看、机器忽略。
- Python 用缩进表示代码块,缩进要一致。
- 先有整体零件图,再逐个深入。
下一篇 0.25 讲最基础的零件——变量。