Python:是否可以跳过元组赋值中的值?

时间:2016-08-31 23:44:54

标签: python

我有一个函数,它在第一次遇到冒号时跳过两部分的字符串(跳过括在括号中的部分)。此函数返回三个元素的元组:遇到冒号的索引,冒号前的部分和冒号后的部分:

def split_on_colon(str):
    colon_ptr = find_separator(str, 0, ':')
    if colon_ptr == -1:
        return (colon_ptr, str, None)
    return (colon_ptr, str[:colon_ptr], str[colon_ptr+1:])

我这样称呼它:

def substitute_expression(expression):
    # Split function and arguments
    colon_ptr, func, args = split_on_colon(expression)
    ...

但有时它并不关心colon_ptr部分。

Python中是否有任何简单的结构允许在赋值中丢弃部分元组,这样它就不会浪费内存和变量名称空间?

这样的事情:

Ignore, func, args = split

2 个答案:

答案 0 :(得分:2)

拒绝消耗额外内存的最佳方法是在您的功能中处理此问题。您可以使用标志作为函数的参数,然后根据此标志,您可以决定返回2或3个项目。

def split_on_colon(my_str, flag):
    colon_ptr = find_separator(my_str, 0, ':')
    if flag:
        if colon_ptr == -1:
            return (my_str, None)
        return (my_str[:colon_ptr], my_str[colon_ptr+1:])
    else:
        if colon_ptr == -1:
            return (colon_ptr, my_str, None)
        return (colon_ptr, my_str[:colon_ptr], my_str[colon_ptr+1:])

答案 1 :(得分:1)

您可以使用_,用于存储不需要的值。您的陈述将如下所示:

_, func, args = split