[英]how to pass variable from function using Python
我需要将函数内部的种子传递给 main 来做其他事情,但种子只会显示为空。
seed = {}
def search (seed):
seed = 0
print (seed)
search(seed)
print (seed)
第一个print (seed) >>>'0'
但第二个print (seed)
只会显示>>>{}
我知道 0 是一个整数,但即使我更改为像“hello”这样的字符串类型,它仍然会得到相同的结果。 请帮忙
从函数返回值并分配给一个 var。
seed = {}
def search (seed):
abc = 123
if abc == 123:
seed = 0
print (seed)
return seed
else:
print ("why")
seed = search(seed)
print (seed)
您将seed
变量声明为空列表,并在search
方法中使用它来分配integer
数值。 这不会引发exception
因为search
方法中的seed
变量是局部范围的。 但是您可能想查看seed
变量的用法。 无论您需要它是integer
还是list
。 不是都。
如果您需要main方法中的seed
值,您需要做的就是从search
方法中返回变量seed
。
像这样:
def search (seed):
abc = 123
if abc == 123:
# do something with *seed*
return seed
else:
print ("why")
seed = search(seed)
print (seed)
在您的函数中,在函数范围内重新分配seed
重新创建一个新的 var。
所以你需要从全局变量中获取seed
。
尝试这个:
seed = {}
def search ():
global seed
abc = 123
if abc == 123:
seed = 0
print (seed)
return seed
else:
print ("why")
seed = search(seed)
print (seed)
通过在函数中分配种子,您可以创建一个仅在函数作用域内有效的新局部种子变量。
检查一下 - 函数id引用了变量:
In [95]: seed = {}
In [96]: id(seed)
Out[96]: 83506720
In [97]: foo(seed)
83506720
18955368
In [98]: id(seed)
Out[98]: 83506720
你可以:
可变变量的值可能会被函数改变(赋值不会改变值 - 它会创建一个新变量
在 [115]: def foo(seed, key, val): seed[key] = val .....:
在 [116] 中:种子 = {}
在 [117]: foo(seed, 'value', 1)
输入 [118]: 种子输出 [118]: {'value': 1}
您可以使用全局限定符(可怕)
seed={}
abc="seed"
seed[abc]={}
def getseed(seed):
seed[abc]={0}
getseed(seed)
print (seed["seed"])
>>>'0'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.