如何将列表元素交替传递给python中的某些函数?

时间:2015-12-19 16:55:21

标签: python list

我有一个文件,其中有几行,从python脚本我逐行读取文件。文件如下:

    - Correct reference to JKLR45, fixed file
    - Xyz changes being done in file
    - Hello welcone

脚本如下:

    f =open('change_log.txt', 'r')
    first_line = f.readlines() 
    for i in range(len(first_line )):
                print first_line [i]

以上脚本的输出如下:

    - Correct reference to JKLR45, fixed file
    - Xyz changes being done in file
    - Hello welcone

现在我想将此输出传递给其他函数,但我没有得到如何将输出传递给函数。我尝试如下:

def function(*value):
     print value
def read_file():
    f =open('change_log.txt', 'r')
    first_line = f.readlines() 
    for i in range(len(first_line )):
                print first_line [i]
                function(*first_line [i])

但我得到函数(*值)的输出如下:

 ['-','C','o','r','r','e','t'.........]

但是我不希望这种输出超出功能(*值)而我希望它打印出来:

    - Correct reference to JKLR45, fixed file
    - Xyz changes being done in file
    - Hello welcone

那么,请建议如何实现这一目标?

3 个答案:

答案 0 :(得分:0)

您可以尝试删除

中的星号
def function(*value):

function(*first_line [i])

您的示例中不需要。

分割给函数的参数进行处理,并且通常在将传递给函数的参数数量不确定时使用。或者像这样:

def func(a, b, c):
    #process
    return #anything

x = (arg1, arg2, arg3)
print func(*x)

答案 1 :(得分:0)

不需要*。这是一个有点改进的版本:

def function(value):
     print value,

def read_file():
    with open('change_log.txt', 'r') as fobj:
        for line in fobj:
            function(line)

read_file()

with open()打开该文件,并承诺在您提出后立即将其关闭。您可以直接在打开的文件对象fobj上进行迭代。无需range并使用i建立索引。使用value调用该函数。使用*value表示将行的所有元素作为单独的参数传递给function。最后,print value,尾随逗号会抑制来自print的换行符,因为文件内容中已有一行。

答案 2 :(得分:0)

你应该这样定义,

def function(value):
     print value

请参阅function definitions

  

函数调用总是为上面提到的所有参数赋值   参数列表,来自位置参数,来自关键字   参数,或默认值。如果表单*identifier是   目前,它被初始化为接收任何多余位置的元组   参数,默认为空元组。如果表单**identifier   存在,它被初始化为接收任何多余的新词典   关键字参数,默认为新的空字典。