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
功能的副本我可以使用新名称没问题,这是语法检查中的误报还是只是用法问题?有没有办法解决这个问题?
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