You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python将hehe/haha/hihi识别为内置关键字if/elif/else?

用自定义词汇替代Python的if/elif/else关键字实现趣味语法

需求说明

想把Python内置的if、elif、else关键字替换成hehe、haha、hihi来写代码,不用编写完整编译器,仅做趣味用途(让代码更难读),已有映射思路但不知道具体实现。

原标准Python代码:

if x == 7 or x == 2:
    print(":)")
elif x == 3:
    print(":(")
else:
    print(":|")

期望的自定义语法代码:

hehe x == 7 or x == 2:
    print(":)")
haha x == 3:
    print(":(")
hihi:
    print(":|")

实现思路

Python的关键字无法直接重定义,所以采用文本预处理+执行的方案:先把写好的自定义语法代码替换成标准Python关键字,再执行处理后的代码。

具体实现方案

方案1:直接处理字符串代码

把自定义语法的代码写在字符串里,替换后用exec执行:

# 定义自定义词到标准关键字的映射
keyword_map = {
    "hehe": "if",
    "haha": "elif",
    "hihi": "else"
}

# 用自定义语法编写的代码
funny_code = """
x = 7
hehe x == 7 or x == 2:
    print(":)")
haha x == 3:
    print(":(")
hihi:
    print(":|")
"""

# 替换自定义词为标准关键字(用正则匹配整词,避免误替换变量名)
import re
for funny_word, real_word in keyword_map.items():
    funny_code = re.sub(rf"\b{funny_word}\b", real_word, funny_code)

# 执行处理后的标准Python代码
exec(funny_code)

方案2:读取外部自定义语法文件

如果代码写在外部文件(比如funny_script.py),可以读取文件内容后替换再执行:

import re

keyword_map = {
    "hehe": "if",
    "haha": "elif",
    "hihi": "else"
}

# 读取自定义语法文件内容
with open("funny_script.py", "r", encoding="utf-8") as f:
    code_content = f.read()

# 替换关键字
for funny_word, real_word in keyword_map.items():
    code_content = re.sub(rf"\b{funny_word}\b", real_word, code_content)

# 直接执行代码
exec(code_content)

# 可选:将处理后的代码保存为标准Python文件
with open("normal_script.py", "w", encoding="utf-8") as f:
    f.write(code_content)

注意事项

  • 用正则\b匹配整词是为了避免误替换,比如变量名hehe_x不会被改成if_x;
  • exec会直接执行代码,不要用来处理未知来源的自定义代码,避免安全风险;
  • 这只是文本替换的预处理方案,并非真正修改Python语法,最终执行的还是标准Python代码。

内容的提问来源于stack exchange,提问作者Georxy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:45:32