小编Old*_*ool的帖子

Python:如何使用嵌套枚举作为嵌套它的函数的默认参数?

有没有办法在 python 中做这样的事情?

from enum import Enum, auto
def some_func(mode = Mode.A):    
    class Mode(Enum):
        A = auto()
    print(mode == Mode.A)
Run Code Online (Sandbox Code Playgroud)

期望的结果

>>> some_func()
True
Run Code Online (Sandbox Code Playgroud)

上面的代码片段失败NameError: name 'Mode' is not defined可能是因为class Mode解释器读取时未定义def some_func(mode = Mode.A):

您当然可以将枚举放在函数之外,但是,如果我建议的或类似的方法有效,我宁愿将其保留在函数内部。将其保留在内部封装了要使用的模式,希望允许.语法将其与其他类似的类区分开来Mode

我知道很多 python 代码只是使用字符串来达到此目的,而不关心枚举。不过我想找到使用枚举的解决方案。枚举更容易维护并帮助 IDE 生成代码完成等。

有没有一个好的方法来完成这项工作?

python enums encapsulation inner-classes

5
推荐指数
1
解决办法
1331
查看次数

你如何创建一个 lambdas 的 python 列表理解?

我正在尝试使用列表理解为延迟执行创建一个 lambda 列表。下面是一个简单的例子。

def func_a(message: str) -> None:
    print('a: ' + message)
    
def func_b(message: str) -> None:
    print('b: ' + message)

msg = 'some message'
funcs = [func_a, func_b]
funcs_w_args = [lambda : func(msg) for func in funcs]

for func in funcs_w_args:
    func()
Run Code Online (Sandbox Code Playgroud)

结果是

b: some message
b: some message
Run Code Online (Sandbox Code Playgroud)

而想要的结果应该是

a: some message
b: some message
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

python lambda list-comprehension deferred-execution

4
推荐指数
1
解决办法
102
查看次数

如何在 JupyterLab 1.1.4 版的单元格中包装代码

我只是想让 Jupyterlab 1.1.4 版在单元格中包装代码。

我使用 AdvancedSettingsEditor 来实现在此处找到的解决方案: 在 JupyterLab 代码编辑器中启用自动换行

但是我得到一个错误

codeCellConfig is not a valid property
Run Code Online (Sandbox Code Playgroud)

因此 AdvancedSettingsEditor 将不允许我保存更新的配置文件。

如果我能看到有效属性的列表(可能取决于 JupyterLab 版本),我就可以进行一些试验和错误。但是,我一直无法找到这样的列表。

我将以下文本放在 AdvancedSettigsEditor 为我打开的文件中:

{
//"definitions":  {
    //"editorConfig":  {
      //  "properties":  {
           "codeCellConfig":  {
                "lineWrap": "wordWrapColumn",
                 "wordWrapColumn": 80
            }
        //}
    //}
//}
}
Run Code Online (Sandbox Code Playgroud)

鉴于此处提供的信息,注释掉的属性都是尝试使这项工作:https : //github.com/jupyterlab/jupyterlab/issues/5277

他们都因相同的错误而失败

<whatever_the_property_name> is not a valid property
Run Code Online (Sandbox Code Playgroud)

问题:

  • 如何让 Jupyterlab 1.1.4 版将代码包装在代码单元中?
  • 配置文件实际在哪里(在 Windows 上)?
  • 在哪里可以找到对该配置文件有效的属性列表?

python jupyter-lab

2
推荐指数
1
解决办法
666
查看次数