我正在创建一个公共方法来允许调用者将值写入设备,例如将其称为 write_vals() 。
由于这些值将实时输入,因此我希望通过允许用户输入列表或单个值来简化用户的生活,具体取决于他们需要写入的值的数量。例如:
write_to_device([1,2,3])
or
write_to_device(1)
我的函数希望使用一个平面列表,因此我尝试变得聪明并编写如下代码:
input_list = []
input_list.extend( input_val )
当用户输入列表时,这可以顺利工作,但当用户输入单个整数时,这会严重失败:
类型错误:“int”对象不可迭代
当传入列表时,使用 list.append() 会创建一个嵌套列表,这会给展平带来额外的麻烦。
检查传入对象的类型似乎很笨拙且不符合Python风格,并且希望 list.extend() 接受不可迭代的对象对我来说毫无意义。尝试各种其他编码方法也是如此。
建议(仅限与编码相关的建议)将不胜感激。
您可以检查传递的参数是否是一个列表isinstance() http://docs.python.org/library/functions.html?highlight=isinstance#isinstance功能。
更好的解决方案可能是支持可变数量的参数:
def write_to_device(*args):
# |args| is now a list of all the arguments given to the function
input_list.extend(args)
这样,即使无需将多个值显式指定为列表,也可以将多个值赋予该函数:
write_to_device(1)
write_to_device(1,2,3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)