![](/img/trans.png)
[英]In Python, why does the output of my random card generator print 'None'?
[英]Why does this not print None then 7? Python
所以我有这段代码,称我为白痴哈哈,但我无法打印出7。
码:
def function(parameter):
parameter = parameter + 1
parameter = 6
print(function(parameter))
print(parameter == 7)
我需要知道如何更改与函数中的参数同名的变量。
任何帮助将不胜感激,如果您不明白这个问题,我将很乐于解释更多。
由于我真的很讨厌全局变量,因此我将这样做:
def function(parameter):
return parameter + 1
parameter = function(6)
print(parameter)
print(parameter == 7)
产量
7
True
基本上,通过指定一个与参数同名的变量并分配函数,您可以像更改相同变量一样更改parameter
。 注意不是这种情况,它实际上不是同一对象。 但是,如果您的目标是使用相同的名称,则可以使用。
将parameter
定义为全局parameter
,实际上不将其作为参数传递:
def function():
global parameter
parameter += 1
您可以做的就是将其称为global
。 可能会更好地帮助您的是使用功能的概念:提供任何给定的输入,它们都会产生一些结果。
因此,您可能希望使用return
:
def fun(val):
return val;
parameter = val(10)
print(parameter) # prints '10'
但是,如果要引用该变量,则可以在python中执行各种疯狂的工作,例如将模块作用域作为对象访问并在其中更改其值:
def fun(val):
import sys;
sys.modules[__name__].parameter = val
parameter = 10
fun(1)
print(parameter) # prints '1'
但是,我之所以称其为“疯狂”是有原因的,这是因为如果函数具有副作用,则永远无法从外部分辨出来。 这就是您要避免的复杂性。 因为您的代码应尽可能地可预测。 出于明显的原因。
使用全局变量既不是线程安全的,也不建议使用。 看起来最干净的解决方案是在可变容器中传递参数参数。 请参阅https://docs.python.org/3/faq/programming.html#how-do-i-write-a-function-with-output-parameters-call-by-reference
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.