如何在Python中制作可重用函数

时间:2018-07-06 00:41:49

标签: python python-3.x

我是编程和Python的新手。我编写了一个简单的随机报价生成器,将列表中的各种报价作为列表加载到字典中。然后,它随机选择一个列表,然后从列表中选择一个特定的报价,并将其输出到屏幕。它大部分已经完成,但是我正在寻找清理代码以使其更高效的方法。现在,我有一组14种不同的类别,用户可以从中进行选择以填充字典。这些类别选择中的每一个都调用一个函数来更新字典,并调用config.ini文件来保存用户首选项。这导致成百上千行几乎相同的代码,其中唯一的区别是所使用的特定类别和文件。我正在寻找一种重写它的方法,以便每次都可以重复使用相同的功能,并且只需传递正确的信息即可使其正常工作。我在下面发布了相关代码的摘要。我正在使用Python 3.6和TKinter。感谢您提供的任何帮助。

高级检查按钮,用于调用update_adversity函数并在字典中添加/删除逆境类别报价

    self.adversity = BooleanVar()
    self.adv = Checkbutton(self, text = 'Adversity/Hardship', variable = self.adversity, command = self.update_adversity)
    self.adv.grid(row = 1, column = 0, sticky = 'W', padx = 0, pady = 0)
    if 'adversity' in quotes:
        self.adversity.set(1)
    elif 'adversity' not in quotes:
        self.adversity.set(0)

根据检查按钮的值在字典中添加/删除逆境列表

def update_adversity(self):
    if self.adversity.get() == True:
        config.set('categories', 'adversity', 'True') # updates config file
        with open('adversity.py', 'r', encoding = 'UTF8') as f:
            new_quotes_added = f.readlines()
            quotes['adversity'] = new_quotes_added
            try:
                del quotes['default']
                config.set('categories', 'default', 'False') # updates config file
                return quotes
            except:
                return quotes
    elif self.adversity.get() == False:
        config.set('categories', 'adversity', 'False') # updates config file
        try:
            del quotes['adversity']
            if quotes == {}:
                with open('default.py', 'r', encoding = 'UTF8') as f:
                    quotes['default'] = f.readlines()
                    config.set('categories', 'default', 'True') # updates config file
                return quotes
            else:
                return quotes
        except:
            return quotes

0 个答案:

没有答案