繁体   English   中英

如何在 Python 中每次执行仅打印一次

[英]How to print only once per execution in Python

我不是一个非常有经验的程序员,我试图找到一个包含 Python 函数的库,该函数只会在第一次从同一个调用中调用该函数时打印一些内容,并且不会在每次脚本执行时打印。 因为我没有找到它,所以我创建了自己的,并且它有效。 但我不知道如何使它能够像 print(f'') 一样工作,所以我可以包含变量。 Loops+break 在这里不起作用。

这是它现在的样子:

#dictionary so we don't have scope issues
already_printed = {}
def print_only_once(msg):
    try:
        testing = already_printed[msg]
    except KeyError:
        already_printed[msg] = msg
        print(msg)
    return

我称之为:

print_only_once('my special message')

如果此消息之前已打印,则不会再次打印。 我也希望能够做这样的事情:

print_only_once(f'temp is {var1} and humidity is {var2}')

并且这个特殊消息在每次脚本执行时只会打印一次,无论它被调用多少次,包括第一次调用时 var1 和/或 var2 的不同值。

有什么帮助吗? 也许有一些东西可以做到这一点,但我找不到它。 非常感谢!

当您在调用者中格式化字符串时,您不能这样做,因为您的函数只接收格式化的字符串。

您需要让您的函数分别采用格式字符串和值。 然后您可以将格式字符串保存在您的字典中,并显式调用.format()

already_printed = set()
def print_only_once(format_string, *args, **kwargs):
    if format_string not in already_printed:
        print(format_string.format(*args, **kwargs))
        already_printed.add(format_string)

print_only_once('temp is {var1} and humidity is {var2}', var1=var1, var2=var2)

尝试做这样的事情:

already_printed = []


def print_only_once(msg_name, msg):
    if msg_name not in already_printed:
        already_printed.append(msg_name)
        print(msg)
    return

我添加了另一个名为“msg_name”的参数。 您应该在其中写下消息的内容(例如给出组名)。 你在“msg”中写下你的实际文本/消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM