如何解决如何在 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”中写下你的实际文本/消息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。