Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用可选For子句坚持DRY的最佳方法_Python_Data Structures_Iteration - Fatal编程技术网

在Python中使用可选For子句坚持DRY的最佳方法

在Python中使用可选For子句坚持DRY的最佳方法,python,data-structures,iteration,Python,Data Structures,Iteration,我有一个方法,它涉及一个很长的if/elif块来转换所提供对象的属性。我想避免使用两种方法。如果该方法可以获取一个iterable列表或一个不可iterable的对象,那么如果该对象不可iterable,如何使If/elif块仍然执行 现在,我的代码基本上如下所示: def convert_orders(orders, orderid=None): """Converts certain fields of an order object to readable and/or index

我有一个方法,它涉及一个很长的if/elif块来转换所提供对象的属性。我想避免使用两种方法。如果该方法可以获取一个iterable列表或一个不可iterable的对象,那么如果该对象不可iterable,如何使If/elif块仍然执行

现在,我的代码基本上如下所示:

def convert_orders(orders, orderid=None):
    """Converts certain fields of an order object to readable and/or indexable values"""

    status = None
    color = None
    order = None
    converted = []

    if not orders:
        order = session.query(Order).filter(Order.orderid == orderid)

    for order in orders:
        # convert order status to a string and give it a color for the tables
        if order.status == 0:
            status = 'In Progress'
            color = QColor(150, 255, 250)
        elif order.status == 1:
            status = 'Ready'
            color = QColor(60, 255, 75)

# elif continues below for another 70+ lines, converting other attributes.

如果
orders
作为列表提供,但此方法也可以采用
orderid
(一个整数),如何仅使用一个elif块转换任一类型,具体取决于提供的类型?该方法可以使用一种类型或另一种类型调用,但不能同时使用这两种类型。

AttributeError:'list\u iterator'对象没有属性“status”
最简单的方法是要求
orders
可编辑。单例列表
convert\u orders([my\u one\u order])
而不是
convert\u orders(my\u one\u order)
有什么问题?
if not orders:
    ...
    orders = (order,)