【问题标题】:How to organize Python code into collapsable / expandable chunks?如何将 Python 代码组织成可折叠/可扩展的块?
【发布时间】:2019-11-21 15:00:40
【问题描述】:

在 Pycharm 中,有一个“代码结构”侧栏,它提供了一个树来浏览代码,但是,它仅在代码具有类、方法和对象时才有用。如果代码中没有任何内容,那么它是无用的。 我的问题是:有什么方法可以让我把它定义为一个块,并且我希望能够折叠它并展开它?类似于 Jupyter 的东西,其中代码本质上被划分为单元格。

目前,我正在这样做:

# ---------------------------------- chunck x blah blah -----------------------

编辑: 大多数cmets说我很笨,我不知道如何有效地编码,我应该使用函数和类。伙计们,我知道如何使用它们,这不是我的问题。谢谢。

【问题讨论】:

  • 这看起来很奇怪,但是如果你有大量的参数被传递,你总是可以使用字典、命名元组,甚至创建一个类。你需要函数。
  • Pycharm 是否也为if 语句提供块折叠?如果是这样,您可以使用if True: 作为一种廉价的方式来表示块。
  • @AlexDeft 这就是函数的用途。如果你不想使用函数,也不想使用现有的评论解决方案,你到底在寻找什么?
  • @ColinMac 是的,这是标准做法,尽管有时您可以使用简单的两行或三行脚本逃脱,但即便如此,许多组织仍会要求您的脚本正确模块化(即包装在函数/类,例如,在我的工作场所,我们使用click 库制作所有脚本)。最后,这让每个人的事情都变得更好。写代码的人,读代码的人……
  • @AlexDeft 这不是函数的唯一意义,尽管它肯定是创建函数的一个很好的理由。它们也可以用来表达意图,它给代码块一个有意义的名字。这比块开头的评论要好。

标签: python pycharm


【解决方案1】:

PyCharm 允许您在启用“科学模式”时定义“代码单元”。这些代码单元是可折叠和可扩展的。引用PyCharm website

“代码单元”是在 集成的 Python 控制台。您可以通过添加简单地定义单元格 将 cmets #%% 内联到您的常规 Python 文件。 PyCharm 检测到 这些 cmets 并在左侧排水沟中向您显示一个特殊的运行图标。 单击此图标会触发单元格的执行:

唯一的问题是科学模式及其代码单元功能仅在 PyCharm 专业版中可用。

【讨论】:

  • 哇!这真太了不起了!我以为这只有在你使用 Pycharm 打开 Jupyter 文件时才可用。
  • 我可以知道该屏幕截图中使用的代码着色样式吗?
  • @AlexDeft 我有理由确定这是 monokai 配色方案。
【解决方案2】:

原来答案很简单: 选择代码,右键,自定义折叠

【讨论】:

    【解决方案3】:

    我有时使用True 条件语句在 PyCharm 和其他 IDE 中创建可折叠块。这也有助于我在视觉上关联所有缩进的代码,在需要时访问它,并在我专注于代码的其他部分时折叠它。

    if True:
       # block code goes here
    

    一种更好的方法是在条件中使用描述性字符串。对于折叠的块,描述保持可见。如果需要,您也可以随时通过否定禁用这些。

    if 'Define similarities':
        Dot = lambda x, y: x @ y
        CosSim = lambda x, y: x @ y / (x @ x)**0.5 / (y @ y)**0.5
    

    【讨论】:

      【解决方案4】:

      您可以选择一个区域,然后按 ctr+alt+t,然后选择 。这将使用使该区域可折叠的注释围绕该区域。您也可以通过在区域周围添加以下内容来手动执行此操作:

      # <editor-fold desc="This text is shown when collapsed">
      
      # </editor-fold>
      

      【讨论】:

        猜你喜欢
        • 2014-08-25
        • 1970-01-01
        • 2019-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 1970-01-01
        相关资源
        最近更新 更多