Используя Python 3.9, у меня есть функция, которая возвращает tuple[float, float]
следующим образом:
return slope := _slope(c1, c2), _y_intercept(c1, slope)
Я использую выражение присваивания, определенное в PEP 572.
Но это выдает следующую ошибку:
test_moderate.py:None (test_moderate.py)
../../venv/lib/python3.9/site-packages/_pytest/python.py:578: in _importtestmodule
mod = import_path(self.fspath, mode=importmode)
../../venv/lib/python3.9/site-packages/_pytest/pathlib.py:524: in import_path
importlib.import_module(module_name)
/Users/me/.pyenv/versions/3.9.2/lib/python3.9/importlib/__init__.py:127: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1030: in _gcd_import
???
<frozen importlib._bootstrap>:1007: in _find_and_load
???
<frozen importlib._bootstrap>:986: in _find_and_load_unlocked
???
<frozen importlib._bootstrap>:680: in _load_unlocked
???
../../venv/lib/python3.9/site-packages/_pytest/assertion/rewrite.py:170: in exec_module
exec(co, module.__dict__)
test_moderate.py:4: in <module>
from moderate import functions as func
E File "/moderate/functions.py", line 346
E return slope := _slope(c1, c2), _y_intercept(c1, slope)
E ^
E SyntaxError: invalid syntax
collected 0 items / 1 error
Если вы
return
на этой линии, то назначение, безусловно, не имеет смысла. Простоreturn
выражение.В любом случае, вы не задали вопрос, и на ваш подразумеваемый вопрос дан ответ <49905555552766> в ссылке, которую вы дали : «Выражения присваивания без скобок запрещены в качестве аннотаций для аргументов, возвращаемых значений и присваиваний».
Наверное нужно добавить скобки
Причина, по которой я не добавил круглые скобки, заключается в том, что PyCharm показывает предупреждение о «избыточных скобках», но ошибка исчезает.