Python 3.x 在python中从return中指定特定值

Python 3.x 在python中从return中指定特定值,python-3.x,global-variables,return-value,local,Python 3.x,Global Variables,Return Value,Local,我不熟悉所有python术语,可能会使用不正确的术语。 如果正确的话,我会很高兴的。 以下是相关代码: def func(a,b): counter = 0 sum = a+b counter += 1 return sum, counter 现在,假设我只想要一个计数器变量,我怎样才能把它赋给全局变量,希望这个术语是正确的 另一个问题,如果函数返回几个变量,而我只需要其中的几个,我该怎么做 我看到了这样的情况: new_sum = func(sum) 但当我

我不熟悉所有python术语,可能会使用不正确的术语。 如果正确的话,我会很高兴的。 以下是相关代码:

def func(a,b):
    counter = 0
    sum = a+b
    counter += 1
    return sum, counter
现在,假设我只想要一个计数器变量,我怎样才能把它赋给全局变量,希望这个术语是正确的

另一个问题,如果函数返回几个变量,而我只需要其中的几个,我该怎么做

我看到了这样的情况:

new_sum = func(sum)
但当我这样做的时候,它期望我写a&b。 我有点困惑

基本上,我想使用我在它之外的函数中创建的变量

使用global告诉python var是全局的。 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'>
>>>
使用global告诉python var是全局的。 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'>
>>>

要回答您关于声明全局变量的第一个问题,尽管这并不完全是推荐的,但以下是如何做到这一点:

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。另外,请注意,将计数器声明为全局值会修改计数器本身的值,因此无需返回计数器的值。更新后的值只需在脚本中编制索引即可。希望这有帮助

要回答您关于声明全局变量的第一个问题,尽管这并不完全是推荐的做法,但以下是如何做到这一点:

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。另外,请注意,将计数器声明为全局值会修改计数器本身的值,因此无需返回计数器的值。更新后的值只需在脚本中编制索引即可。希望这有帮助

处理多个返回值时,您要做的是:

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 ....

处理多个返回值时,您希望执行以下操作:

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 ....

这很有帮助,谢谢!如果一个函数返回5个值,而我只需要第二个值和第四个值呢。当@drd写入sum时,count=func2,6。如何分配某些值?您可以使用虚拟变量来捕获不需要的变量,如:\ u0,var2,var3,var4,var5=fx,y。更好的是,您可以尝试var2,var3,var4,var5=fx,y[1:],它从第二个值开始捕获函数的输出。类似的东西也可以吗?var=fx,y[1]因为它是一个元组,不是吗?当然,括号是不必要的,根据示例。。。我知道每次赋值都会反复调用函数。。。。如果这个函数产生了一个大的输出或者使用了一个api,而我不想使用它很多次,那该怎么办呢?这很有帮助,谢谢!如果一个函数返回5个值,而我只需要第二个值和第四个值呢。当@drd写入sum时,count=func2,6。如何分配某些值?您可以使用虚拟变量来捕获不需要的变量,如:\ u0,var2,var3,var4,var5=fx,y。更好的是,您可以尝试var2,var3,var4,var5=fx,y[1:],它从第二个值开始捕获函数的输出。类似的东西也可以吗?var=fx,y[1]因为它是一个元组,不是吗?当然,括号是不必要的,根据示例。。。我知道每次赋值都会反复调用函数。。。。如果函数产生了一个大的输出或者使用了一个api,而我不想使用它太多次…根据你的例子。。。每次赋值都会反复调用函数。。。。如果函数产生了一个大的输出,或者使用了一个api,而我不想使用太多该怎么办times@Racheli也就是说,为了演示全局变量是如何工作的,它会在多个调用中保留值。这和你写的函数一样。根据你的例子。。。每次赋值都会反复调用函数。。。。如果函数产生了一个大的输出,或者使用了一个api,而我不想使用太多该怎么办times@Racheli也就是说,为了演示全局变量是如何工作的,它会在多个调用中保留值。这和你写的函数是一样的。