在python中,为什么种子没有改变?

在python中,为什么种子没有改变?,python,random,seeding,Python,Random,Seeding,我们正在用python制作一个小型僵尸网络。因此,如果我调用命令xyzy或boo,它们每3秒就会实现一次,直到我告诉它们停止。当我调用boo时,它选择一个随机元素,但它每3秒打印一个相同的随机元素。当我调用xyzzy时,它每3秒打印一个新的随机元素 据我所知,这意味着种子不会因boo而改变,但会因xzyyz而改变。我的问题是,为什么种子在一种情况下改变而在另一种情况下不改变?已知_命令中的boo键不指向函数,而是指向random.choice的结果值,在构建字典时只执行一次。将其更改为: kno

我们正在用python制作一个小型僵尸网络。因此,如果我调用命令xyzy或boo,它们每3秒就会实现一次,直到我告诉它们停止。当我调用boo时,它选择一个随机元素,但它每3秒打印一个相同的随机元素。当我调用xyzzy时,它每3秒打印一个新的随机元素

据我所知,这意味着种子不会因boo而改变,但会因xzyyz而改变。我的问题是,为什么种子在一种情况下改变而在另一种情况下不改变?

已知_命令中的boo键不指向函数,而是指向random.choice的结果值,在构建字典时只执行一次。将其更改为:

known_commands = {
    "boo"  : random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
    "xyzzy": xyzzy,
}


def xyzzy(self):

    print random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"])
    return
已知_命令中的boo键不指向函数,而是指向random.choice的结果值,该值在构建字典时仅执行一次。将其更改为:

known_commands = {
    "boo"  : random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
    "xyzzy": xyzzy,
}


def xyzzy(self):

    print random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"])
    return

它在这里做出选择

"boo": lambda: random.choice(["Winter is coming...", "SURPRISE!", "Mazel tov!"])
因为您正在调用函数。对这一行进行求值后,您的dict会变成这样:

"boo"  : random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
但是xyzzy每次都会得到一个随机字符串,因为每次调用函数时都会在函数中进行选择。为了每次为boo获取一个随机字符串,您应该创建一个函数或lambda。它看起来像一个lambda:

known_commands = {
    "boo" : "SURPRISE!",
    "xyzzy" : xyzzy,
}

它在这里做出选择

"boo": lambda: random.choice(["Winter is coming...", "SURPRISE!", "Mazel tov!"])
因为您正在调用函数。对这一行进行求值后,您的dict会变成这样:

"boo"  : random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
但是xyzzy每次都会得到一个随机字符串,因为每次调用函数时都会在函数中进行选择。为了每次为boo获取一个随机字符串,您应该创建一个函数或lambda。它看起来像一个lambda:

known_commands = {
    "boo" : "SURPRISE!",
    "xyzzy" : xyzzy,
}