如何在Python中传递被调用的函数值?

时间:2015-10-04 20:21:05

标签: python

我们说我有这样的代码:

def read_from_file(filename):
    list = []
    for i in filename:
        value = i[0]
        list.append(value)
    return list

def other_function(other_filename):
    """
       That's where my question comes in. How can I get the list
       from the other function if I do not know the value "filename" will get?
       I would like to use the "list" in this function
    """
read_from_file("apples.txt")
other_function("pears.txt")

我知道这段代码可能不起作用或者可能不完美。但我唯一需要的是在代码中回答我的问题。

4 个答案:

答案 0 :(得分:1)

您有两种常规选择。您可以使列表成为所有函数都可以访问的全局变量(通常这不是正确的方法),或者您可以将其传递给other_function(正确的方式)。所以

def other_function(other_filename, anylist):
    pass # your code here

somelist = read_from_file("apples.txt")
other_function("pears.txt.", somelist)

答案 1 :(得分:0)

你需要"赶上"从第一个函数返回的值,然后将其传递给第二个函数。

file_name = read_from_file('apples.txt')
other_function(file_name)

答案 2 :(得分:0)

您需要将返回的值存储在变量中,然后才能将其传递给另一个函数。

a = read_from_file("apples.txt")

答案 3 :(得分:-1)

至少有三种合理的方法可以达到这个目的,初学者可能永远不需要两种:

  1. 存储read_from_file的返回值并将其作为参数提供给other_function(因此请将签名调整为other_function(other_filename, whatever_list)
  2. whatever_list设为全局变量。
  3. 使用对象并将whatever_list存储为该对象的属性
  4. (使用嵌套函数)
  5. (通过垃圾收集器gc搜索值;-) )
  6. 嵌套函数

    def foo():
        bla = "OK..."
    
        def bar():
            print(bla)
        bar()
    
    foo()
    

    全局变量

    其它

    • 您不应使用list作为变量名称,因为您正在覆盖内置函数。
    • 您应该为变量使用描述性名称。列表的内容是什么?
    • 有时可以通过创建对象以良好的方式避免使用全局变量。虽然我并不总是OOP的粉丝,但它有时候正是你所需要的。只需看一下大量教程之一(例如here),熟悉它,弄清楚它是否适合您的任务。 (并且不要因为你可以一直使用它.Python不是Java。)