python变量引用的小案例

看代码,

可正常运行的代码:

years = [2021,2022,2023]

year = 2025 # 监控年份

if year in years: # 固定参数

common_params = { "filter_column": '{"A":2025}'

需求:将year引入到'{"A":2025}'替换2025,如下写,

years = [2021,2022,2023]

year = 2025 # 监控年份

if year in years: # 固定参数

common_params = { "filter_column": f'{"A":{year}}

程序运行报错。

正确代码:

years = [2021,2022,2023]

year = 2025

if str(year) in years:

common_params = { "filter_column": json.dumps({"A": year})

问题分析:

在 f-string 中:

  • {} 有特殊含义:用于插入变量。
  • 所以 f'{"A":{year}}' 会被 Python 解析为:
    • 外层:f'...{year}...'
    • 内层:"A": 被当作表达式?但 "A" 是字符串,后面跟 : 会报错!

因为 Python 把 {"A": 当成了字典字面量的一部分,但在 f-string 表达式里不允许直接写 :

f-string 的花括号内只能是表达式,不能直接写 JSON 结构!

✅ 如果坚持用 f-string(不推荐,易错):

你需要转义花括号

复制代码
common_params = {
    "filter_column": f'{{"A": "{year}"}}'
}

解释:

  • {``{ → 输出一个 {
  • }} → 输出一个 }
  • 所以 f'{``{"A": "{year}"}}' 会变成字符串:{"A": "2025"}

✅ 这样能运行,但:

  • 容易写错(比如漏掉引号)
  • 不如 json.dumps() 清晰、安全、可读

总结

写法 是否正确 说明
f'{"A":{year}}' 语法错误
f'{``{"A":{year}}}' ⚠️ 缺少引号,生成 {"A":2025}(数字),可能不符合后端要求
f'{``{"A":"{year}"}}' 能用,但不推荐
json.dumps({"A": str(year)}) ✅✅✅ 最佳实践

建议永远用 json.dumps() 来构造 JSON 字符串!

相关推荐
ZH15455891316 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
B站计算机毕业设计超人6 小时前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
B站计算机毕业设计超人6 小时前
计算机毕业设计hadoop+spark+hive交通拥堵预测 交通流量预测 智慧城市交通大数据 交通客流量分析(源码+LW文档+PPT+讲解视频)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
CodeSheep程序羊7 小时前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
独好紫罗兰7 小时前
对python的再认识-基于数据结构进行-a002-列表-列表推导式
开发语言·数据结构·python
机器学习之心HML7 小时前
多光伏电站功率预测新思路:当GCN遇见LSTM,解锁时空预测密码,python代码
人工智能·python·lstm
2401_841495647 小时前
【LeetCode刷题】二叉树的直径
数据结构·python·算法·leetcode·二叉树··递归
王大傻09287 小时前
python 读取文件可以使用open函数的 r 模式
python
JarryStudy7 小时前
HCCL与PyTorch集成 hccl_comm.cpp DDP后端注册全流程
人工智能·pytorch·python·cann
woshikejiaih7 小时前
**播客听书与有声书区别解析2026指南,适配不同场景的音频
大数据·人工智能·python·音视频