Python 关键字传递导致语法错误,这是语言中的错误吗?

Posted

技术标签:

【中文标题】Python 关键字传递导致语法错误,这是语言中的错误吗?【英文标题】:Python keyword pass causing syntax errors, is this a bug in the language? 【发布时间】:2022-01-02 13:00:47 【问题描述】:

我正在使用 this KDE widget 并且很难尝试使用 python 访问它,我发现一些 help 我最初试图正确地做它,如果我在小部件中修补下面的 2 个文件将名称从pass 更改为pypass 或只是在新名称下添加此pass 功能的副本我可以使用新名称没问题,这是语法检查中的误报还是只是用法问题?有没有办法解决这个问题?

plugin/DBusService.cpp(第 6 行:void DBusService::pass(QString data) ) plugin/DBusService.hpp(第 16 行:void pass(QString data);

这些给出了单词pass的语法错误原因

#!/bin/python3
from pydbus import SessionBus
diy=SessionBus().get("org.kde.plasma.doityourselfbar","/id_10")
diy.pass('|A|Label|Tooltip|notify-send hello world|')
#!/bin/python3
from dbus import SessionBus
diy=SessionBus().get_object("org.kde.plasma.doityourselfbar","/id_10")
diy.pass('|A|Label|Tooltip|notify-send hello world|')

我确实尝试过这样设置,但我得到了一个关键错误,因为它的行为就像 javascript...

diy['pass]('string')

【问题讨论】:

可能是因为pass是python中的保留字:docs.python.org/3/reference/lexical_analysis.html#keywords。 这是一个你可以反复应用的终身提示:如果你是编程语言的新手,并且它的行为与你期望的不完全相同:很可能它不是“语言”。 请改用pass_。这是(其他)保留字(如raise)的常见习语。 【参考方案1】:

不,这不是“语言中的错误”,您不能这样做,因为pass 是语言关键字。我不知道 pydbus 是否提供了一种通过名称调用方法的好方法,绕过它的代理,但如果没有,你应该可以这样做

getattr(diy, 'pass')('string')

【讨论】:

以上是关于Python 关键字传递导致语法错误,这是语言中的错误吗?的主要内容,如果未能解决你的问题,请参考以下文章

由于 Google Big Query 中的正则表达式导致 Python 错误

vigenere密码中的itertools循环导致空间问题python

python基础语法5

python基础入门

flutter bloc pattren Stream Transformer 对象导致语法错误

java中的assert