簡體   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