Python Telegram Bot运行main.py时f-string行报SyntaxError无效语法求助
问题排查及解决方案
1. 语法错误核心原因:Python版本不兼容f-string语法
f-string(格式化字符串字面值)是Python 3.6版本才正式支持的语法特性,如果你当前运行环境的Python版本低于3.6,执行到f-string行就会抛出你遇到的SyntaxError: invalid syntax错误。
- 验证方法:执行命令
python --version查看当前使用的Python版本 - 解决方法二选一:
- 升级运行环境的Python版本到3.6及以上
- 将f-string替换为低版本兼容的格式化写法,将报错行替换为:
"Update Address ({}/{})".format(address_changes, config.wallet_changes),
2. 额外存在的代码缩进错误
你贴出的代码中,update_wallet_address_button函数定义后,函数体的第一行connection = get_connection()没有缩进,Python强制要求函数内部代码必须相对def定义行增加缩进(通常统一用4个空格),否则也会触发语法错误,修正后的函数开头应为:
def update_wallet_address_button(message): connection = get_connection() # 后续函数内代码保持同等缩进即可
后续优化建议
你代码中address_changes = cursor.fetchone()["address_change_status"] 行存在隐含风险:如果数据库中未查询到对应用户的记录,cursor.fetchone()会返回None,直接取字典key会抛出异常,建议补充非空判断,示例:
res = cursor.fetchone() address_changes = res["address_change_status"] if res else 0
内容的提问来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

