有没有办法在 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 生成代码完成等。
有没有一个好的方法来完成这项工作?
我正在尝试使用列表理解为延迟执行创建一个 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)
我哪里错了?
我只是想让 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)
问题: