【问题标题】:How do you chain multiple functions, and return multiple tuples from each one?你如何链接多个函数,并从每个函数返回多个元组?
【发布时间】:2017-10-23 20:21:37
【问题描述】:

我正在尝试编写一个程序,该程序包含许多用于不同计算的函数,所有这些函数都涉及元组,并由 main() 控制

功能本质上是这样的:

def open_file()
def read_file()
def get_data()
def calculate_info()
def display_info()

def main()
    open_file()
    read_file()
    get_data()
    calculate_info()
    display_info()

main()

让我感到困惑的是如何将它们链接在一起。例如,我希望 read_file() 读取 open_file() 返回的内容,get_data() 从 read_file() 返回的内容中获取我想要的内容,等等。

我的问题是实际应该返回什么以及如何确保下一个函数使用前一个函数返回的内容?与此相关,括号中的内容是什么?

【问题讨论】:

  • 这与变量赋值和从函数返回的东西有关,我敢肯定它是重复的。
  • 所以你应该弄清楚如何将单个参数传递给单个函数并从那里构建。也许这样的事情会有所帮助:anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/functions.html
  • 你的意思是喜欢open_file().read_file().get_data()...吗?
  • 我确定它是重复的;我见过一些类似的问题。但是我对此很陌生,并且概念很重要,因此我很难完全理解类似的问题。我会查看一些发布的链接。
  • 更像是,open_file() 给了我一个名为“a”的产品。 read_file() 读取“a”并给我“b”。 get_data() 接受“b”并给我“c”等。这有什么意义吗?我很乐意澄清任何事情!

标签: python function chaining


【解决方案1】:

你可以使用类似的东西来处理 python 中的元组

def open_file(*file):
    return ("test", "test2")

def read_file(*file):
    return ("test", "test2") 

def get_data(data1, data2):
    return ("test", "test2")

def calculate_info(*data):
    return (8, 10, 14)

def display_info(*data):
    print data

def main()
    (k,l) = open_file()
    (m,n) = read_file(k,l)
    (o,p) = get_data(m,n)
    (q,r,s) = calculate_info(o,p)
    display_info(q,r,s)

main()

您使用 * 运算符将元组指定为 python 中的参数。返回时返回一个元组,并将它们保留为单个变量,例如 x = open_file()

或 (p,q) = open_file()

【讨论】:

  • 这看起来和我想做的很相似!我会这样玩弄一些东西!
【解决方案2】:

一种选择是保留函数的引用并在循环中调用它们。例如:

def foo(x):
    return x+1

def bar(x):
    return x+2

funcs = [foo, bar]
a = 0

for f in funcs:
    a = f(a)
print(a)

如果您需要更多控制权,请查看command-pattern

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 2021-12-21
    • 2023-02-26
    • 2015-04-12
    • 2014-02-17
    • 1970-01-01
    • 2011-08-11
    • 2015-09-08
    • 2017-09-23
    相关资源
    最近更新 更多