首页 > 解决方案 > 是否可以将多个变量传递给未在调用它的前一个函数中本地声明的函数(或全局声明)?

问题描述

在 python/Selenium 中,我有一个 Web 自动化脚本,它使用 5 个单独的函数来完成一项任务。函数调用链是线性的,因为每个都依赖于最后一个执行。

我遇到的问题是我不想在全局声明最终函数“checkout”中使用的所有变量。我不能为任何函数中的变量输入输入,因为它会延迟时间紧迫的函数。

但是,我可以在计时器结束并且程序开始之前拿走这些。这些变量当前都是执行此操作的主函数的本地变量。在这样做时,我必须通过每个函数传递所有 10 个变量,直到最后一个。有没有办法避免这种情况,只是将变量“传递”给最终函数,尽管它们不是在前一个函数中全局或本地声明的?

标签: pythonfunctionselenium

解决方案


您可以将所有函数作为类中的方法,将这些变量保存为状态,例如:

class MyRunner():

    def __init__(self, val1, val2, val3):
        self.val1 = val1
        self.val2 = val2
        self.val3 = val3

    def method1(self):
        print("Call of method 1", self.val1, self.val2, self.val3)

    def method2(self):
        print("Call of method 2", self.val1, self.val2, self.val3)

    def method3(self):
        print("Call of method 3", self.val1, self.val2, self.val3)


runner = MyRunner(10, 20, 30)
runner.method1()
runner.method2()
runner.method3()

推荐阅读