Присвойте указанные c значения из возврата в python - PullRequest
1 голос
/ 13 февраля 2020

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

def func(a,b):
    counter = 0
    sum = a+b
    counter += 1
    return sum, counter

Теперь предположим, что мне нужна только переменная счетчика, как я могу присвоить ее глобальной переменной (надеюсь, что термин правильный)?

Еще один вопрос, если функция возвращает несколько переменных, и я хочу только несколько из них, как мне это сделать?

Я видел что-то вроде этого:

new_sum = func(sum)

Но когда я делаю это, он ожидает, что я написать а & б. Я немного сбиваю с толку ...

По сути, я хочу использовать переменные, которые я сделал в функциях вне его.

Ответы [ 3 ]

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

Чтобы ответить на ваш первый вопрос об объявлении глобальных переменных, хотя это не совсем рекомендуется, вот как это можно сделать:

counter = 0
def func(a,b):
    global counter
    #print(counter) gives 0
    sum = a+b
    counter += 1
    return sum, counter

Что касается вашего второго вопроса, потому что вы объявили, что ваша функция принимает во 2 входных аргументах необходимо ввести 2 отдельных значения. Например, вот как вы можете использовать функцию для возврата в сумме 5 и 10:

a = 5
b = 10
result = func(a,b)
print(result)

Где результат будет кортеж с 2 значения: сумма (15) и счетчик (1). Также обратите внимание, что объявление счетчика как глобального значения изменяет значение самого счетчика, поэтому нет необходимости возвращать значение счетчика (обновленное значение может быть просто проиндексировано в скрипте). Надеюсь, это поможет!

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

Что вы хотите сделать, когда имеете дело с несколькими возвращаемыми значениями, это:

counter = 0 ##global variable
def func(a,b):
    counter = 0
    sum = a+b
    counter += 1
    return sum, counter, val3, val4, val5

return_value = func(a,b) ##assign result to a variable

Затем вы можете получить доступ к значениям вашей функции просто;

##multiple line solution
new_sum = return_value[0]
new_counter = return_value[1]
new_val3 = return_value[2]

##single line solution
sum, counter, val3, val4, val5 = return_value

## code to do sth with sum, counter, val3 ....
1 голос
/ 13 февраля 2020
  1. используйте global, чтобы сообщить python, что переменная является глобальной.
  2. Множественный возврат значений в python является кортежем.

Ниже приведены сведения о том, что Вы ищете:

>>> counter = 0
>>> def func(a,b):
...     sum = a+b
...     global counter
...     counter = counter + 1
...     print("global counter: ", counter)
...     return sum, counter
...
>>> func(2,3)
global counter:  1
(5, 1)
>>> func(2,4)
global counter:  2
(6, 2)
>>> func(2,6)
global counter:  3
(8, 3)
>>> sum,count = func(2,6)
global counter:  4
>>> sum
8
>>> count
4
>>> type(func(2,6))
global counter:  5
<class 'tuple'>
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...