Правильно вернуть логическую переменную из модуля python - PullRequest
0 голосов
/ 18 февраля 2020

Я уверен, что это абсурдно просто, но мне не удалось заставить его работать.

Я хочу преобразовать логическую переменную в True в модуле и вернуть ее в свой main.

файл: тест

import module as mo

value = False
mo.x(value)
print(value)

2. file: module

def x(value):
    value = True
    return value

Но этот код не работает. Когда я распечатываю значение, оно дает мне False. Кто-нибудь знает, как вернуть значение, чтобы оно True? Или вообще возможно изменить логическое значение в другом модуле и вернуть его потом?

Ответы [ 4 ]

2 голосов
/ 18 февраля 2020

Вы печатаете value вместо результата mo.x(value).

В вашем test.py попробуйте следующее:

import module as mo

value = False
value = mo.x(value)
print(value)

, и результат будет:

>>> True

Обратите внимание, что переменные, определенные внутри Функция имеет локальную область видимости. Это означает, что переменная value внутри функции x доступна только внутри функции и не совпадает с переменной value в вашем модуле test.py.

2 голосов
/ 18 февраля 2020

Вы не печатаете возвращаемое значение функции. Для этого вам нужно

v = mo.x(value)
print(v)

В противном случае вы печатаете локальную переменную value.

1 голос
/ 18 февраля 2020

Проблема в том, что примитивные типы, такие как целые числа, передаются по значению, а не по ссылке. Итак, что происходит, вы не передаете переменную «значение» в функцию x (), но значение внутри «значения» копируется.

В качестве обходного пути можно использовать любой объект, так как они всегда передаются по ссылке. Например: список:

value[0] = False
mo.x(value)

def x(value: list):
    value[0] = True
    return value
0 голосов
/ 18 февраля 2020

Это происходит потому, что вы возвращаете значение "True", но не присваиваете его переменной "value". Итак, вы просто вызываете функцию, но не используете возвращаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...