我正在用python构建国际象棋程序。目前,我的董事会如下所示:
8 [r] [n] [b] [q] [k] [b] [n] [r]
7 [p] [p] [p] [p] [p] [p] [p] [p]
6 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
5 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
4 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
3 [ ] [ ] [ ] [ ] [ …Run Code Online (Sandbox Code Playgroud) 我想将上下文装饰器与带参数或不带参数的可能性结合起来。
让我们从一个可以使用参数和不使用参数的装饰器开始,例如:
import functools
def decorator(func=None, *, label=""):
if func is None:
return functools.partial(decorator, label=label)
@functools.wraps(func)
def wrap(*args, **kwargs):
result = func(*args, **kwargs)
print(f"RESULT {label}: {result}")
return result
return wrap
if __name__ == "__main__":
@decorator(label="with arguments")
def dec_args():
return 1
@decorator
def dec_no_args():
return 0
dec_args()
dec_no_args()
Run Code Online (Sandbox Code Playgroud)
还有ContextDecorator可以用作上下文管理器或装饰器的:
from contextlib import ContextDecorator
class ctxtdec(ContextDecorator):
def __init__(self, label:str=""):
self.label = label
print(f"initialized {self.label}")
def __enter__(self):
print(f"entered {self.label}")
def __exit__(self, exc_type, exc_value, traceback):
print(f"exited {self.label}")
if __name__ == "__main__":
def …Run Code Online (Sandbox Code Playgroud) 如何使用python在终端中以ansi颜色打印文本?我有这个代码来测试什么代码对文本有什么影响:
for i in range(0, 55):
print(f"\033[{i}mAt {i} THIS happens! \033[0m")
Run Code Online (Sandbox Code Playgroud)
但我看到的是:
?[0mAt 0 THIS happens! ?[0m
?[1mAt 1 THIS happens! ?[0m
?[2mAt 2 THIS happens! ?[0m
?[3mAt 3 THIS happens! ?[0m
?[4mAt 4 THIS happens! ?[0m
...
Run Code Online (Sandbox Code Playgroud)
我知道terminal.ansi主题设置中有颜色,但如何访问它们?