gpt4 book ai didi

带有语句 : 'Syntax error: invalid syntax' 的 Python

转载 作者:太空宇宙 更新时间:2023-11-04 07:54:06 30 4
gpt4 key购买 nike

我尝试了以下代码:

with x as 1:
y = 1
with z as 1:
w = 1

编译器报告了 SyntaxError:语法无效。有什么问题?

[已编辑:]我想做的是:

import tensorflow as tf
with tf.variable_scope("model"):
y = 1
with tf.variable_scope("model2"):
z = 1

我想更改 tensorflow 中的名称范围以共享变量。我查看了在线教程,但这并没有太大帮助。

最佳答案

略微过度简化,您的代码:

with x as 1:
y = 1

... 翻译成这样:

try:
1 = x.__enter__()
y = 1
finally:
1.__exit__()

编写 1 = x.__enter__() 显然会引发一个 SyntaxError: can't assign to literal,因为分配 a 没有任何意义文字常量 1 的新值。

with 语句中做同样的事情会引发同样的异常。 (在旧版本的 Python 中(我认为只有 2.5?),错误消息不是很有用,它只是说 SyntaxError: invalid syntax,但问题是一样的。)


根据 x 中的内容,通过 SyntaxError 可能会引发一个新的异常,AttributeError: __enter__。只有context managers可用于 with statement .粗略地说,这些东西知道如何在它们自己之后清理,并且无论如何让它们在某个代码块的末尾清理是很重要的。文件是典型的例子:当你退出这个 block 时,它们会调用 self.close(),这确保你不会因为有数百个打开的文件而出现操作系统错误,或者无法刷新最后write,或者其他类似的问题。

有关 with 的更多信息,请参阅 PEP 343 ,最初将 with 添加到 Python 2.5 的提案,或 Understanding Python's "with" statement (from effbot) .


那么,这里的问题是:你想做什么?如果您只想将值 1 赋给名称 x,您已经知道该怎么做,因为您在紧接着的下一行:只是 x = 1。如果您正在尝试做一些不同的事情……好吧,可能有一种方法可以做到,但是 with 可能远不是正确的答案。

关于带有语句 : 'Syntax error: invalid syntax' 的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51052807/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com