Как получить доступ к переменной из другой функции в Python
Я работаю над одним проектом и хотел реализовать его в ООП. Поэтому для этого я создал один класс Person с двумя разными методами funcA , который возвращает полное имя и funcB , который принимает переменную из funcA и возвращает возраст.
Теперь мой вопрос: как я могу использовать var2 из функции funcA в funcB .
Я перепробовал много доступных решений, но запутался. Пожалуйста, извините за этот глупый вопрос
Я работаю над одним сложным проектом, и поэтому здесь невозможно добавить весь код. и именно поэтому я использую этот фиктивный сценарий
6 ответов
Вот попробуй этот код
Прежде всего, я определил переменные в методе init, чтобы они были доступны. И во-вторых, я использовал f-string для форматирования ‘funtB’. Наконец, я исправил некоторые ошибки в вашем коде. Ура !
Надеюсь, следующий код поможет вам в дальнейшем
Вы можете использовать следующим образом
И вызвать функцию таким образом
Если вы вызываете устаревшую функцию, этот путь
Как определено в функции, если вы не вводите возраст, функция возвращает
Было бы разумнее сделать var2 быть age и быть одним из атрибутов класса, чтобы вы могли получить к нему доступ любым методом, в котором есть self .
Было бы лучше установить var2 как локальную переменную класса вместо одной функции, так как вы вызываете var2 из другой функции в другой области видимости. Но это здесь может работать.
как обратиться к переменной в функции?
Но это выведет ошибку, так как же обратиться к этой переменной?
![]()
как обратиться к переменной в функции?
Одно из важных свойств функции — скрывать свою реализацию, т.е. нет необходимости знать как она работает внутри. Если появилась потребность лишить её этого, значит функция в этом месте не нужна:
Чтобы пользоваться функцией, необходимо знать только её имя, её аргументы, и что она возвращает в результате:
![]()
Для начала, если вы хотите использовать библиотеку Tkinter, нужно её импортировать и создать окно. Это делается так:
Затем мы создаём эту переменную в функции, перед этим объявив её глобальной:
А затем, мы можем выполнить действие с ней за пределами функции, например, разместить её с помощью метода pack().
Вложенные функции в Python
Функции в Python находятся на том же уровне, что и другие объекты, такие как целые числа, строки, модули и т.д. Их можно создавать и удалять динамически, передавать другим функциям, возвращать как значения и т. д.
Python поддерживает концепцию «вложенной функции» или «внутренней функции», которая представляет собой просто функцию, определенную внутри другой. В остальной части статьи мы будем использовать слова «внутренняя функция» и «вложенная функция» как синонимы.
Существуют различные причины, по которым кто-то хотел бы создать функцию внутри другой. Внутренняя функция может получить доступ к переменным в пределах области видимости. В этой статье мы исследуем различные аспекты внутренних функций в Python.
Определение внутренней функции
Чтобы определить внутреннюю функцию в Python, мы просто создаем функцию внутри другой, используя ключевое слово def. Вот пример:
В приведенном выше примере функция function2() была определена внутри function1(), что сделало ее внутренней функцией. Чтобы вызвать функцию2(), мы должны сначала вызвать функцию1(). Затем function1() продолжит работу и вызовет функцию function2(), как она была определена внутри нее.
Важно отметить, что внешняя функция должна быть вызвана для выполнения внутренней. Если внешняя функция не вызывается, внутренняя никогда не будет выполняться. Чтобы продемонстрировать это, измените приведенный выше код на следующий и запустите его:
При выполнении код ничего не вернет.
Вот еще один пример:
Код возвращает умножение двух чисел, то есть 10 и 5. Пример показывает, что внутренняя функция может обращаться к переменным, доступным во внешней функции.
До сих пор вы видели, что мы можем получить доступ к переменным внешней функции внутри внутренней. Что, если мы попытаемся изменить переменные внешней функции изнутри внутренней? Посмотрим, что происходит:
Выходные данные показывают, что мы можем отображать значение переменной, определенной во внешней функции из внутренней, но не изменять его. Оператор x = 6 помог нам создать новую переменную x внутри внутренней function2() вместо того, чтобы изменять значение переменной x, определенной во внешней функции function1().
В следующем разделе мы обсудим основные причины, по которым мы используем внутренние функции в Python.
Зачем использовать?
Функцию можно создать как внутреннюю, чтобы защитить ее от всего, что происходит вне функции. В этом случае функция будет скрыта от глобальной области видимости. Вот пример:
В приведенном выше коде мы пытаемся вызвать функцию inner_increment(), но вместо этого получили ошибку.
Теперь закомментируйте вызов inner_increment() и раскомментируйте вызов external_function(), как показано ниже:
Приведенный выше скрипт показывает, что внутренняя функция, то есть inner_increment(), защищена от того, что происходит за ее пределами, поскольку на переменную x внутри функции inner_increment не влияет значение, переданное параметру x внешней функции. Другими словами, переменные внутри внутренней функции недоступны вне ее. Такой шаблон дизайна дает большое преимущество. После проверки всех аргументов во внешней функции мы можем безопасно пропустить проверку ошибок во внутренней.
Закрытие и заводские функции
Все примеры, которые мы видели до сих пор, содержат просто обычные функции, которые были вложены в другие функции. Мы можем написать такие функции по-другому, вместо того, чтобы вкладывать их в другие функции. У нас нет конкретной причины, почему мы должны их вкладывать.
Однако в случае замыканий необходимо использовать вложенные функции.
Мы можем связывать и передавать данные в функцию, не обязательно передавая данные в функцию через параметры. Это делается с помощью закрытия. Это функциональный объект, который может запоминать значения в охватывающих областях, даже если они недоступны в памяти. Это означает, что у нас есть закрытие, когда вложенная функция ссылается на значение, которое находится в ее охватывающей области.
Цель закрытия – заставить внутреннюю функцию запоминать состояние своего окружения при вызове, даже если его нет в памяти. Закрытие вызывается внутренней функцией и работает путем замыкания локальной переменной в стеке, которая остается после того, как создание стека завершилось.
- Должна быть вложенная функция.
- Внутренняя функция должна ссылаться на значение, которое определено во включающей области.
- Включающая функция должна возвращать вложенную функцию.
Рассмотрим следующий пример:
Приведенный выше код демонстрирует, что с помощью замыканий мы можем сгенерировать и вызвать функцию из-за пределов ее области посредством передачи функции. Объем функции function2() находится только внутри function1(). Однако с помощью замыканий у нас появилась возможность расширить эту область видимости и вызвать ее извне.
Внутренние функции помогают нам определять заводские функции, которые создают другой объект. Например:
В приведенном выше скрипте из функции power_n (power) мы создали два других объекта, power_two и power_three. Это делает power_n (power) фабричной функцией, поскольку она генерирует для нас функции power_two и power_three, используя переданный нами параметр.
Заключение
Внутренняя функция – это просто функция, которая определена внутри другой. Она может получить доступ к переменным, которые были определены в рамках внешней функции, но не может их изменить.
Существует ряд причин, по которым нам может потребоваться создать внутреннюю функцию. Например, внутренняя функция защищена от того, что происходит вне ее. Внутренние функции также являются хорошим способом создания замыканий в Python.