Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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中,如何将列表元素交替传递给某个函数?_Python_List - Fatal编程技术网

在python中,如何将列表元素交替传递给某个函数?

在python中,如何将列表元素交替传递给某个函数?,python,list,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_lin

我有一个文件,其中只有几行,我从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'.........]
上述脚本的otput如下所示:

    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'.........]
现在我想把这个输出传递给其他函数,但我不知道如何把输出传递给函数。我做了如下尝试:

    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'.........]
但我得到的函数(*value)的输出如下:

    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

因此,请建议如何实现这一点?

您可以尝试在中删除asterix

def function(*value):

这在您的示例中不是必需的

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

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

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

不需要
*
。下面是一个稍微改进的版本:

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
。不需要
范围
和使用
i
索引。使用
值调用函数
。使用
*value
意味着将行中的所有元素作为单独的参数传递给
函数
。最后,
print value,
后面的逗号会抑制
print
中的换行符,因为文件内容中已经有一个换行符

你应该这样定义

def function(value):
     print value

函数调用始终为中提到的所有参数赋值 参数列表,可以来自位置参数,也可以来自关键字 参数,或来自默认值。如果表单
*标识符
为
现在,它被初始化为接收任何多余位置信息的元组
参数,默认为空元组。如果表格
**标识符

如果存在,则将其初始化为新字典,以接收任何多余的数据
关键字参数,默认为新的空字典


移除
值之前的星号
第一行
,它应该可以正常工作。顺便说一下,命名变量
第一行
会产生误导,因为它包含所有行的列表。你应该称之为
或类似的东西。此外,对列表中的某些内容进行
迭代是一种更具python风格的方法: