首页 > 解决方案 > 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 的帮助命令时它工作正常。如果有人知道如何解决这个问题,请告诉我。提前致谢。

标签: pythondiscord.py

解决方案


这是因为 python 的f-string是一个运行时工具,可以在运行时对字符串进行膨胀。另一方面,文档字符串编译时工具,甚至在代码被解释之前就被解析。
简而言之,您无法从编译时的运行时设施中受益,因为实际上没有任何东西在运行!
有关更多信息,此线程可能会有所帮助。


推荐阅读