繁体   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