【问题标题】:Name error with f-strings in python3python3中f字符串的名称错误
【发布时间】:2018-07-18 12:22:07
【问题描述】:

我在 Web 应用程序中使用以下 f 字符串。当我在本地运行它时(在网络上尝试之前)我收到一个名称错误:

NameError:名称“路径”未定义

但是路径打印正确,并且似乎在我的脑海中定义。我做错了什么?

path = f'{PROJECT_PATH["raw_data"]}/cashValues'
print("PATH", path)
filenames = [f'{path}/{i}' for i in filenames]

谢谢

完整的追溯:

Traceback (most recent call last):
  File "scripts/TableTransform.py", line 8, in <module>
    class TableTransform(object):
  File "scripts/TableTransform.py", line 14, in TableTransform
    Filenames = [f'{path}/{i}' for i in filenames]
  File "scripts/TableTransform.py", line 14, in <listcomp>
    Filenames = [f'{path}/{i}' for i in filenames]
NameError: name 'path' is not defined

【问题讨论】:

  • 无法用给出的信息重现问题。假设 PROJECT_PATHfilenames 被正确定义,这不应该给出任何错误。如果在为它们设置合理的值后实际上只运行这三行,你真的仍然得到错误吗?
  • 您确定这里发生了错误吗?你能提供完整的回溯吗?
  • 是的,它非常奇怪。我想不出为什么。如前所述,打印语句完全按照我期望的正确值打印出路径。正确指定了路径。我添加了完整的回溯
  • 试试path = f'{PROJECT_PATH["raw_data"]}//cashValues'
  • 对不起,是的,效果很好!它只需要一些围绕“raw_data”的“”

标签: python python-3.x f-string


【解决方案1】:

python 3.6.5 中的列表理解似乎有自己的范围,并且不知道该范围之外的变量。这就是它失败的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 2020-06-26
    相关资源
    最近更新 更多