簡體   English   中英

如何使用Python從函數傳遞變量

[英]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)  
  1. 您將seed變量聲明為空列表,並在search方法中使用它來分配integer數值。 這不會引發exception因為search方法中的seed變量是局部范圍的 但是您可能想查看seed變量的用法。 無論您需要它是integer還是list 不是都。

  2. 如果您需要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM