Python 2.7 Python使用gi.repository组合了两个函数

Python 2.7 Python使用gi.repository组合了两个函数,python-2.7,notifications,Python 2.7,Notifications,我在代码中使用gi.repository进行桌面通知,我创建了两个不同的函数,以便从本地计算机加载两个不同的图像,并根据满足的条件将它们显示在桌面通知气泡中。为此,我编写了一个简单的代码,向您展示我需要实现的目标。我希望我的代码尽可能保持干净,我想知道这两个函数是否可以合并在一起,并仍然加载图像。我可能会在代码中使用8个不同的图像,而拥有8个相同的函数看起来不太好 import gi gi.require_version("Notify", "0.7") from gi.repository i

我在代码中使用
gi.repository
进行桌面通知,我创建了两个不同的函数,以便从本地计算机加载两个不同的图像,并根据满足的条件将它们显示在桌面通知气泡中。为此,我编写了一个简单的代码,向您展示我需要实现的目标。我希望我的代码尽可能保持干净,我想知道这两个函数是否可以合并在一起,并仍然加载图像。我可能会在代码中使用8个不同的图像,而拥有8个相同的函数看起来不太好

import gi
gi.require_version("Notify", "0.7")
from gi.repository import Notify, GdkPixbuf

def sunny(arg1, arg2):
    notification = Notify.Notification.new(arg1, arg2)
    image = GdkPixbuf.Pixbuf.new_from_file("_sunny_day.png")
    notification.set_icon_from_pixbuf(image)
    notification.set_image_from_pixbuf(image)
    notification.show()

def cloudy(arg1, arg2):
    notification = Notify.Notification.new(arg1, arg2)
    image = GdkPixbuf.Pixbuf.new_from_file("_cloudy_day.png")
    notification.set_icon_from_pixbuf(image)
    notification.set_image_from_pixbuf(image)
    notification.show()

while 1:
    var1 = 'Something will be here, maybe URL'

    if var1 == 'Sunny':
        sunny('Arg1', 'Arg2')
    elif var1 == 'Cloudy':
        cloudy('Arg1', 'Arg2')

由于这两个函数之间唯一不同的是图像路径,只需传入:

def weather(arg1, arg2, image_path):
    notification = Notify.Notification.new(arg1, arg2)
    image = GdkPixbuf.Pixbuf.new_from_file(image_path) # Here
    notification.set_icon_from_pixbuf(image)
    notification.set_image_from_pixbuf(image)
    notification.show()
然后使用它:

weather(arg1, arg2, "_sunny_day.png")
weather(arg1, arg2, "_cloudy_day.png")

我不知道你到底想叫这个函数什么<代码>天气只是一个占位符

我想就是这样!你让我开心。我一秒钟都没想到。谢谢lot@uzdisral没问题。一旦你发现自己有重复的代码,看看有什么不同,并尝试使它成为函数的一个新参数。如果您能在适当的情况下做到这一点,您将学会真正清理代码。