目录

4.1 算术运算符:对数字做数学运算

        4.1.1 常用算术运算符一览

        4.1.2 AI 场景实例:计算 Token 消耗与参数调节

4.2 比较运算符:让 AI“判断”条件

        4.2.1 常用比较运算符

        4.2.2 AI 场景实例:参数校验与比较

4.3 赋值运算符:给变量“喂数据”

        4.3.1 基本赋值与复合赋值

        4.3.2 AI 场景实例:累加 token 计数

4.4 逻辑运算符:组合多个条件(像 AI 的多重判断)

        4.4.1 三个逻辑运算符

        4.4.2 真值表(一目了然)

        4.4.3 AI 场景实例:安全调用 API 的前置条件

4.5 位运算符:底层的二进制操作(了解即可)

        4.5.1 位运算符列表

        4.5.2 简单示例(不必深究)

4.6 成员运算符:检查元素是否在容器中

        4.6.1 AI 场景实例:过滤敏感词、检测结束符

4.7 身份运算符:比较对象身份(是否同一个)

        4.7.1 何时使用?

4.8 运算符优先级:谁先计算?

        4.8.1 优先级表(从高到低)

        4.8.2 AI 场景示例:验证参数合法性

4.9 综合实战:AI 请求参数校验与决策

4.10 本章小结


运算符是编程语言中用来对数据进行计算、比较、组合的符号。学会了变量和数据类型后,运算符就是你让数据“动起来”的工具。

本章所有例子都围绕 AI 大模型 的实际场景——比如调节温度系数、对比模型性能、组合多个判断条件、处理 Token 计数等。学完后,你将能够写出更智能的条件判断与数据运算代码。

4.1 算术运算符:对数字做数学运算

算术运算符用于对数字(整数、浮点数)进行加、减、乘、除等操作。在 AI 开发中,你可能需要计算 Token 总数、调整参数值、平均延迟等。

4.1.1 常用算术运算符一览

运算符

含义

例子

结果

+

加法

1000 + 350

1350

-

减法

4096 - 2048

2048

*

乘法

0.7 * 2

1.4

/

除法(结果总是浮点数)

10 / 3

3.333...

//

整除(取整数部分)

10 // 3

3

%

取余(模运算)

10 % 3

1

**

幂运算

2 ** 10

1024

4.1.2 AI 场景实例:计算 Token 消耗与参数调节

# 1. 计算总 Token 数
input_tokens = 1200
output_tokens = 348
total_tokens = input_tokens + output_tokens
print(f"本次请求共消耗 {total_tokens} 个 token")   # 1548

# 2. 温度系数放大与缩小
temperature = 0.85
higher_temp = temperature * 1.2   # 提高随机性
lower_temp = temperature / 1.5     # 降低随机性
print(f"原温度:{temperature},提高后:{higher_temp:.2f},降低后:{lower_temp:.2f}")

# 3. 整除与余数:将 token 分成批次处理(每批 512 个)
batch_size = 512
total_tokens = 1500
batches = total_tokens // batch_size       # 2 整批
remainder = total_tokens % batch_size       # 476 个剩余
print(f"需要 {batches} 个完整批次,剩余 {remainder} 个 token")

# 4. 幂运算:计算 2 的 n 次方(模型隐藏层维度常见值)
hidden_size = 2 ** 12   # 4096 维
print(f"隐藏层维度:{hidden_size}")

💡 注意:除法 / 的结果总是浮点数,就算两个整数相除。5/2 得到 2.5 而不是 2。想要整数除法用 //

4.2 比较运算符:让 AI“判断”条件

比较运算符用于比较两个值的大小或是否相等,结果是一个布尔值(TrueFalse)。AI 中常用于判断是否超出 token 限制、对比模型版本、停止生成条件等。

4.2.1 常用比较运算符

运算符

含义

例子(结果为 True 的例子)

==

等于

"gpt-4" == "gpt-4"

!=

不等于

"gpt-4" != "claude-3"

>

大于

4096 > 2048

<

小于

0.1 < 0.9

>=

大于等于

100 >= 100

<=

小于等于

0.5 <= 1.0

4.2.2 AI 场景实例:参数校验与比较

# 1. 检查 temperature 是否在合法范围
temperature = 1.2
is_valid = (0.0 <= temperature <= 2.0)   # Python 支持链式比较
print(f"温度{ temperature }是否合法?{is_valid}")

# 2. 比较两个模型的版本
model_a = "gpt-4-turbo"
model_b = "gpt-3.5-turbo"
is_same = (model_a == model_b)
print(f"模型相同?{is_same}")   # False

# 3. 检查生成的 token 是否超过最大限制
max_tokens_limit = 4096
output_tokens = 5000
is_exceed = output_tokens > max_tokens_limit
print(f"超出限制?{is_exceed}")   # True

if is_exceed:
    print("警告:输出 token 过多,请减少 max_tokens 或截断结果")

# 4. 比较两个浮点数(注意误差问题)
temperature_1 = 0.7
temperature_2 = 0.7
# 直接比较通常可以,但如果是计算出来的,推荐用误差范围
threshold = 1e-9
is_equal = abs(temperature_1 - temperature_2) < threshold
print(f"温度相等?{is_equal}")

⚠️ 陷阱:浮点数比较不要直接用 ==,因为 0.1 + 0.2 == 0.3 可能是 False(浮点误差)。推荐使用 abs(a-b) < 1e-9

4.3 赋值运算符:给变量“喂数据”

赋值运算符用于将值赋给变量,最基础的 = 你已经见过。还有复合赋值运算符可以同时进行计算和赋值,写起来更简洁。

4.3.1 基本赋值与复合赋值

运算符

例子

等价写法

=

x = 5

直接赋值

+=

x += 3

x = x + 3

-=

x -= 2

x = x - 2

*=

x *= 4

x = x * 4

/=

x /= 2

x = x / 2

//=

x //= 3

x = x // 3

%=

x %= 3

x = x % 3

**=

x **= 2

x = x ** 2

4.3.2 AI 场景实例:累加 token 计数

# 1. 统计多轮对话的 token 总数
total_tokens = 0

# 第一轮
prompt_tokens = 150
completion_tokens = 80
total_tokens += prompt_tokens + completion_tokens   # total_tokens = 0 + 230

# 第二轮
prompt_tokens = 200
completion_tokens = 110
total_tokens += (prompt_tokens + completion_tokens) # total_tokens = 230 + 310 = 540

print(f"总共消耗 token 数:{total_tokens}")

# 2. 动态调整温度系数
temperature = 0.8
temperature += 0.1    # 提高一点随机性
print(f"调整后温度:{temperature}")   # 0.9

temperature *= 0.9    # 稍微降低
print(f"再调整:{temperature}")        # 0.81

# 3. 批次处理中更新剩余 token
remaining_tokens = 1024
batch_size = 512
remaining_tokens -= batch_size   # 使用一批后剩余
print(f"剩余 token:{remaining_tokens}")   # 512

4.4 逻辑运算符:组合多个条件(像 AI 的多重判断)

逻辑运算符用于连接布尔表达式,得到最终的布尔结果。AI 场景中常用来综合判断:是否满足所有条件、是否至少满足一个条件、是否取反。

4.4.1 三个逻辑运算符

运算符

含义

规则

and

两边都为 True 结果才为 True

or

至少一边为 True 结果为 True

not

取反,TrueFalseFalseTrue

4.4.2 真值表(一目了然)

A

B

A and B

A or B

not A

True

True

True

True

False

True

False

False

True

False

False

True

False

True

True

False

False

False

False

True

4.4.3 AI 场景实例:安全调用 API 的前置条件

# 1. 检查调用大模型 API 的所有条件
has_api_key = True
has_quota = False
is_network_ok = True

# 必须同时满足:有 key 并且有余额并且网络正常
can_call = has_api_key and has_quota and is_network_ok
print(f"可以调用 API?{can_call}")   # False(因为 has_quota 为 False)

# 2. 至少满足一个条件才使用缓存
cache_hit = False
online_result_valid = True
use_result = cache_hit or online_result_valid
print(f"可以使用缓存/在线结果?{use_result}")   # True

# 3. 取反:如果温度设置不合理,则发出警告
temperature = 2.5
is_invalid = not (0.0 <= temperature <= 2.0)   # 等价于 temperature < 0 or temperature > 2
if is_invalid:
    print(f"警告:温度 {temperature} 超出 [0,2] 范围")

# 4. 组合判断:满足条件则停止生成
stop_words = ["再见", "结束"]
response = "好的,再见"
should_stop = "再见" in stop_words or "结束" in stop_words   # in 是成员运算符,后文会讲
print(f"是否停止生成?{should_stop}")   # True

💡 短路求值and 如果左边为 False,右边不会执行;or 如果左边为 True,右边不会执行。利用这个特性可以写出更简洁的代码。

# 简短的默认值设置
temperature = 0.0
safe_temp = temperature or 0.7   # 如果 temperature 为 0(假值),则取 0.7
print(safe_temp)                 # 输出 0.7(因为 0.0 被视为 False)

4.5 位运算符:底层的二进制操作(了解即可)

位运算符直接操作整数的二进制位。AI 开发中很少直接用,但在某些高性能场景(如模型量化、压缩)或编写底层库时会用到。零基础了解概念即可。

4.5.1 位运算符列表

运算符

含义

例子

&

按位与

5 & 3 = 1

|

按位或

5 | 3 = 7

^

按位异或

5 ^ 3 = 6

~

按位取反

~5 = -6

<<

左移

5 << 1 = 10

>>

右移

5 >> 1 = 2

4.5.2 简单示例(不必深究)

# 二进制:5 -> 0101, 3 -> 0011
print(5 & 3)   # 0001 -> 1
print(5 | 3)   # 0111 -> 7
print(5 ^ 3)   # 0110 -> 6

# 左移一位相当于乘以 2
tokens = 512
double_tokens = tokens << 1   # 1024

在 AI 中,位运算偶尔用于权限标记(如模型支持的功能位标志)或字符处理。初学者知道有这些东西即可。

4.6 成员运算符:检查元素是否在容器中

成员运算符用于判断一个值是否存在于某个序列(如字符串、列表、元组等)中。AI 场景:检查某个词是否在黑名单中,判断输出是否包含结束标志等。

运算符

含义

in

在...里面,返回 True

not in

不在...里面,返回 True

4.6.1 AI 场景实例:过滤敏感词、检测结束符

# 1. 检查用户输入是否包含敏感词
sensitive_words = ["暴力", "色情", "政治"]
user_input = "请解释一下暴力美学"
has_bad_word = any(word in user_input for word in sensitive_words)   # 简单写法:循环每个词判断

# 更易懂的写法:
has_bad_word = False
for word in sensitive_words:
    if word in user_input:
        has_bad_word = True
        break

if has_bad_word:
    print("输入包含敏感词,请修改")

# 2. 检查模型回复是否包含结束标记
response = "这是最终答案。[END]"
if "[END]" in response:
    print("检测到结束标记,停止流式输出")

# 3. 判断模型名称是否在可用模型列表中
available_models = ["gpt-4", "gpt-3.5", "claude-3"]
model_choice = "llama-2"
if model_choice not in available_models:
    print(f"错误:模型 {model_choice} 不在可用列表中")

💡 in 对于字符串是子串判断"cat" in "catalog" 返回 True。如果希望精确匹配单词,可以用空格分割后再判断。

4.7 身份运算符:比较对象身份(是否同一个)

身份运算符用于判断两个变量是否指向内存中的同一个对象。与 == 不同,== 比较的是值是否相等,而 is 比较的是对象身份(可以理解为 id 是否相同)。

运算符

含义

is

是同一个对象

is not

不是同一个对象

4.7.1 何时使用?

在 AI 开发中,通常用 == 比较值就够了,但有时需要判断是否为 None 或是否同一个配置对象。

# 判断变量是否为 None(推荐使用 is,而不是 ==)
api_response = None
if api_response is None:
    print("API 未返回任何结果")

# 两个变量指向同一个对象
config_a = {"temperature": 0.7}
config_b = config_a   # config_b 和 config_a 指向同一个字典
print(config_a is config_b)   # True

config_c = {"temperature": 0.7}   # 新字典,内容相同但不同对象
print(config_a is config_c)   # False
print(config_a == config_c)   # True(值相等)

⚠️ 注意:对于小的整数和短字符串,Python 可能会做驻留优化,导致 is 也返回 True,但不要依赖这种行为。判断相等永远用 ==,判断是否为 Noneis

4.8 运算符优先级:谁先计算?

当表达式中有多个运算符时,Python 按照优先级决定计算顺序。你可以使用括号 () 强制改变顺序。

4.8.1 优先级表(从高到低)

优先级

运算符

1

() 括号

2

** 幂运算

3

~ 按位取反

4

*///% 乘除取余

5

+- 加减

6

<<>> 移位

7

& 按位与

8

^ 按位异或

9

| 按位或

10

==!=><>=<=isis notinnot in 比较/成员/身份

11

not 逻辑非

12

and 逻辑与

13

or 逻辑或

4.8.2 AI 场景示例:验证参数合法性

# 错误写法:不加括号可能逻辑错误
temperature = 1.5
max_tokens = 3000
# 想要检查 temperature 范围且 max_tokens 不超过 4096
# 错误写法(比较运算符优先级高于 and)
# condition = 0 <= temperature <= 2 and max_tokens <= 4096   # 实际没问题,因为链式比较特殊
# 更好的做法是加括号
condition = (0 <= temperature <= 2) and (max_tokens <= 4096)
print(condition)   # True

# 混合算术和比较
total_tokens = 1200 + 350
limit = 2048
is_within = total_tokens <= limit   # 加法先计算,再比较
print(f"总 token {total_tokens} 是否在限制内?{is_within}")

# 使用括号改变优先级
result = 2 ** 3 * 4   # 先幂 (8) 再乘 = 32
result2 = 2 ** (3 * 4) # 先括号 (12) 再幂 = 4096
print(result, result2)

💡 建议:当你不太确定优先级时,直接加括号 () 明确顺序,代码也更易读。

4.9 综合实战:AI 请求参数校验与决策

将本章所有运算符融合成一个脚本,模拟调用 AI 模型前的完整检查过程。

# 模拟 AI 请求参数校验器

# 用户配置(实际可能来自 input 或配置文件)
model = "gpt-4"
temperature = 1.3
max_tokens = 5000
top_p = 0.6
user_prompt = "帮我写一首诗"
stop_word = "END"

# 系统常量
ALLOWED_MODELS = ["gpt-4", "gpt-3.5", "claude-3"]
MAX_TOKENS_LIMIT = 4096
TEMPERATURE_MIN = 0.0
TEMPERATURE_MAX = 2.0

# 1. 检查模型合法性
model_valid = model in ALLOWED_MODELS

# 2. 检查温度范围
temp_valid = (TEMPERATURE_MIN <= temperature <= TEMPERATURE_MAX)

# 3. 检查 max_tokens 范围
tokens_valid = (1 <= max_tokens <= MAX_TOKENS_LIMIT)

# 4. 检查 top_p 范围(一般是 0~1)
top_p_valid = (0.0 < top_p <= 1.0)

# 5. 检查 prompt 不为空且长度不超过 8000 字符
prompt_valid = (user_prompt != "") and (len(user_prompt) <= 8000)

# 6. 综合判断所有条件
all_valid = model_valid and temp_valid and tokens_valid and top_p_valid and prompt_valid

# 输出结果
print("=" * 50)
print("AI 请求参数校验结果")
print(f"模型:{model} -> {'✅' if model_valid else '❌'}")
print(f"温度:{temperature} -> {'✅' if temp_valid else '❌'}")
print(f"max_tokens:{max_tokens} -> {'✅' if tokens_valid else '❌'}")
print(f"top_p:{top_p} -> {'✅' if top_p_valid else '❌'}")
print(f"提示词长度:{len(user_prompt)} -> {'✅' if prompt_valid else '❌'}")
print(f"是否可以发起请求:{'✅ 是' if all_valid else '❌ 否'}")
print("=" * 50)

# 如果不合法,给出具体建议
if not all_valid:
    suggestions = []
    if not model_valid:
        suggestions.append(f"请选择模型:{', '.join(ALLOWED_MODELS)}")
    if not temp_valid:
        suggestions.append(f"温度范围为 {TEMPERATURE_MIN}~{TEMPERATURE_MAX}")
    if not tokens_valid:
        suggestions.append(f"max_tokens 范围为 1~{MAX_TOKENS_LIMIT}")
    if not top_p_valid:
        suggestions.append("top_p 应介于 0 和 1 之间(通常 0.1~0.95)")
    if not prompt_valid:
        suggestions.append("提示词不能为空且长度不超过 8000 字符")
    print("改进建议:")
    for s in suggestions:
        print(f"- {s}")

运行此脚本(修改部分无效值)可以看输出变化。

4.10 本章小结

运算符类别

常用运算符

AI 典型应用

算术

+ - * / // % **

Token 统计、参数缩放、批次分割

比较

== != > < >= <=

校验温度范围、比较模型版本、限制长度

赋值

= += -= *= /=

累加 token 总数、动态调参

逻辑

and or not

多条件组合校验(API 调用前检查)

成员

in not in

敏感词过滤、可用模型判断

身份

is is not

判断是否为 None

位运算

& | ^ ~ << >>

底层优化(了解即可)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐