python - Fstring 没有被读取为文档字符串 [discord.py]
问题描述
我的代码中有一个问题,我似乎无法找到解决方法。我有一个自定义帮助命令,它工作正常,但是当我将文档字符串定义为 fstring 时,它None
作为输出提供
我的帮助命令中的代码:
if cmd.help:
emd.add_field(name=f'{self.client.command_prefix}{cmd}', value=f'{aliases}\n{cmd.help}\u200b', inline=False)
found_cmd = True
else:
print(cmd.help)
emd.add_field(name=f'{self.client.command_prefix}{cmd}', value=f'{aliases}\n - \u200b', inline=False)
roll命令我试过test命令:
@commands.command()
async def roll(self, ctx, sides:int = 6, num_of_times_to_roll:int=1):
f'''syntax:`{self.client.command_prefix}roll [number of sides] [number of times to roll]` \nThis command rolls a die or dice with any number of sides and any number of times \n\n`{self.client.command_prefix}roll_side` \nThis command only takes the number of sides as an input'''
我认为 python 不会将 fstrings 读取为 docstrings,因为当我尝试使用普通 docstrings 的帮助命令时它工作正常。如果有人知道如何解决这个问题,请告诉我。提前致谢。
解决方案
这是因为 python 的f-string是一个运行时工具,可以在运行时对字符串进行膨胀。另一方面,文档字符串是编译时工具,甚至在代码被解释之前就被解析。
简而言之,您无法从编译时的运行时设施中受益,因为实际上没有任何东西在运行!
有关更多信息,此线程可能会有所帮助。
推荐阅读
- reactjs - 无法在 dangerousSetInnerHTML 中正确呈现内容
- cucumber-jvm - 如何在自定义 softAssertion 期间将捕获的屏幕截图附加/嵌入到 Cucumber 报告中?
- electron - 如何通过 contextBridge / IPCRenderer 将结果发送给发件人?
- javascript - 仅当通过另一个文件提供链接时如何显示按钮(React)
- flutter - DateRangePicker 上未设置初始日期范围
- r - R中使用玻尔兹曼Sigmoidal方程的自启动模型函数是什么?
- c# - 如何使用 SpawnCount 生成选定对象
- apache - 为什么我的 VirtualHost 配置不起作用?
- mysql - Woocommerce mysql 查询以获取特定类别的所有产品,包括主图像 url 和产品页面 url
- regex - Automata - 正则表达式(联合案例)