Можно ли передать несколько переменных в функцию, которая не объявлена ​​локально в предыдущей функции, которая ее вызывает (или объявлена ​​глобально)? - PullRequest
0 голосов
/ 05 апреля 2019

В python / Selenium у меня есть скрипт веб-автоматизации, который использует 5 отдельных функций для выполнения задачи. Цепочка вызовов функций линейна, поскольку каждый из них зависит от последнего выполненного.

Проблема, с которой я столкнулся, заключается в том, что я не хочу объявлять все переменные, которые будут использоваться в финальной функции 'checkout' во всем мире. Я не могу получить данные для переменных в любой из функций, так как это приведет к задержке функций, критичных ко времени.

Однако я могу принять их до окончания таймера и запуска программы. Все переменные в настоящее время являются локальными для главной функции, которая делает это. При этом мне нужно было бы передать все 10 переменных через каждую функцию до финальной. Есть ли способ избежать этого и просто «передать» переменные в конечную функцию, несмотря на то, что они не являются глобальными или локально объявлены в предыдущей функции?

1 Ответ

1 голос
/ 05 апреля 2019

Вы можете иметь все функции в качестве методов в классе, который содержит эти переменные в виде состояния, такого как:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...