[英]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.