我尝试按键绑定宏以将 python 文本发送到调试控制台并将焦点返回到 Visual Studio Code 中的编辑器。这是我尝试过的:
settings.json:
{
"macros": {
"selectionToReplAndReturnToEditor": [
"editor.debug.action.selectionToRepl",
"workbench.action.focusActiveEditorGroup"
]
}
}
Run Code Online (Sandbox Code Playgroud)
keybindings.json:
[
{
"key": "alt+f9",
"command": "workbench.action.focusActiveEditorGroup",
},
{
"key": "alt+f10",
"command": "workbench.debug.action.focusRepl",
},
{
"key": "ctrl+enter",
"command": "macros.selectionToReplAndReturnToEditor",
"when": "editorTextFocus && editorHasSelection && editorLangId == 'python' && inDebugMode"
}
]
Run Code Online (Sandbox Code Playgroud)
现在,Ctrl+Enter确实在调试控制台中执行文本,但不会将焦点返回到编辑器。Ctrl+Enter后面跟着Alt+F9可以做到这一点,但当然,我想绑定一个键。难道我做错了什么?我需要在宏中等待一些时间吗?我怎样才能做到这一点?
我想分配给d无论是a或,如果a是None,b或者,如果b是也None,c。这有效:
a = b = c = np.array([1])
d = a or b or c
Run Code Online (Sandbox Code Playgroud)
但是,这不会:
a = b = c = np.array([1, 2])
d = a or b or c
Run Code Online (Sandbox Code Playgroud)
ValueError:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()
显然,或者正在逐元素地用于具有多个元素的数组。我可以做什么来实现
d = a or b or c
Run Code Online (Sandbox Code Playgroud)
使用 NumPy 数组?
我正在寻找某种“二元”(非三元)if,它允许在Python中定义列表成员资格,类似于它在列表推导中的工作方式。考虑下面的代码:
abc = (1, 0, 2)
my_list = [i for i in abc if i]
# observed: [1, 2]
a = 1
b = 0
c = 2
my_list = ["d" if a; "e" if b; "f" if c]
# expected: ["d", "f"]
Run Code Online (Sandbox Code Playgroud)
虽然第一个块有效,但第二个块却不起作用(毫不奇怪)。然而,我发现这个语法非常Pythonic。有没有什么东西可以接近它,例如
my_list = ["d" if a else Nothing; "e" if b else Nothing; "f" if c else Nothing]
Run Code Online (Sandbox Code Playgroud) 以下代码不扩展布尔表达式,另请参见https://godbolt.org/z/YqbazT3eo:
#define EXPAND(x) x
#define SWITCH false
EXPAND(SWITCH || defined(_DEBUG))
Run Code Online (Sandbox Code Playgroud)
我该如何正确地做才能做到
#define FLAG EXPAND(SWITCH || defined(_DEBUG))
Run Code Online (Sandbox Code Playgroud)
(或类似)并且FLAG不会依赖于以后的更改SWITCH?