上一篇讲了数据有哪些类型,这一篇讲脚本怎么拿这些数据做判断。条件语句就是让代码”自己做决定”的开关:满足条件就干某件事,不满足就跳过或干别的。

安全分析师为什么要会这个?自动化脚本的核心就是判断——状态码是不是异常、登录是不是失败、IP 在不在黑名单。这些全靠条件语句。


先看全景:三个关键字 + 两类运算符

部件关键字/符号干什么
起手if必须有,开启一个条件判断
再判断elif前面都不满足时,再试一个新条件(可多个)
兜底else前面全不满足时执行(可选,最多一个)
比较运算符> < >= <= == !=比较两个值,得出 True / False
逻辑运算符and or not把多个条件组合起来

两条铁律语法(违反就报错),先记住:

  1. 每个 if / elif / else 头部结尾必须有冒号 :
  2. 头部下面的”动作”必须缩进(且多行要缩进一致)

条件语句怎么运作

一个条件语句,本质是拿两个值比一比,得出一个布尔值(True / False)。比较用这 6 个运算符:

运算符含义
>大于
<小于
>=大于等于
<=小于等于
==等于(注意是两个等号)
!=不等于

==!= 也常用来比字符串。最常见的新手 bug:把”判断相等”的 == 写成”赋值”的 =


if:条件满足才执行

if 开启判断。下面这段:HTTP 响应状态码等于 200 时,打印 “OK”:

if status == 200:
    print("OK")

拆成两部分看:

头部(header) —— 第一行 if status == 200:if 后面跟条件,条件可以加括号 if (status == 200):,效果一样(加不加看可读性)。结尾必须有冒号。

主体(body) —— 冒号下面缩进的部分,告诉 Python 条件为 True 时干什么。这里就是打印 “OK”。主体必须比头部缩进更深,多行动作要缩进一致。

如果 status 不等于 200,条件为 False,这段直接跳过,程序继续往下走。


else:前面都不满足时的兜底

else 引出的代码,只在它前面所有条件都为 False 时才执行:

if status == 200:
    print("OK")
else:
    print("check other status")

状态码不是 200 时,打印 “check other status”。else 同样要冒号 + 缩进,但 else 后面不跟条件(它就是”其他所有情况”)。


elif:多个备选条件

有多个互斥的情况要分别处理时,用 elif(else if 的缩写)。它引出一个新条件,只在前面条件都为 False 时才检查。elif 可以有多个:

if status == 200:
    print("OK")
elif status == 400:
    print("Bad Request")
elif status == 500:
    print("Internal Server Error")
else:
    print("check other status")

Python 从上往下:先看是不是 200,不是就看是不是 400,还不是就看 500,全不是就走 else

关键区别:elif vs 多个 if 一串 elif 里,一旦命中一个 True,后面的就不再检查(短路)。 但如果你写成多个独立的 if,每个都会被检查一遍。 处理互斥情况(状态码只可能是其中一个)→ 用 elif,又快又对。


组合条件:and / or / not

复杂判断需要把多个条件拼起来。

and —— 两个条件要满足

HTTP 状态码 200~226 都算成功响应。用 and 把”≥200”和”≤226”两个条件连起来,两个都为 True 才打印:

if status >= 200 and status <= 226:
    print("successful response")

or —— 只要一个满足就行

状态码 100 和 102 都是信息类响应。用 or,任一为 True 就打印:

if status == 100 or status == 102:
    print("informational response")

not —— 把条件反过来

not 取反:原本 True 变 False,False 变 True。想在状态码不在成功范围时提醒检查:

if not(status >= 200 and status <= 226):
    print("check status")

Python 先算括号里”status 在 200~226 之间”是否成立,再用 not 翻转——所以当 status 小于 200 或大于 226 时才打印。

这里的括号是必须的,不是可选的。 Python 先算括号内,所以 not(A and B) 是对”A 且 B 的整体”取反。如果去掉括号写成 not A and B,not 只会作用在 A 上,逻辑就全错了。涉及 not 组合时,养成加括号的习惯。


一段安全脚本里它长什么样

把这些拼起来,一个最朴素的”状态码分流”就成型了——这正是监控脚本、日志分析、API 健康检查的骨架:

if status >= 200 and status <= 226:
    print("成功")
elif status == 401 or status == 403:
    print("⚠️ 鉴权/权限问题,记下来")   # 安全分析师会盯这类
elif status >= 500:
    print("服务器错误")
else:
    print("其他状态,人工看一眼")

print 换成”写日志""发告警""加进可疑 IP 集合”,就是真实的自动化响应了。


一句话总结

if 起手、elif 加备选、else 兜底;条件用 6 个比较运算符得出真假,用 and/or/not 组合。两条铁律别忘:头部加冒号、主体要缩进。 当你能让脚本”看到 200 就放行、看到 403 就记一笔、看到 500 就告警”,你就把人工盯屏变成了自动判断——这就是用 Python 自动化安全任务的起点。