English 中文(简体)
在Python中用一个函数参数命名列表。
原标题:
  • 时间:2009-02-01 15:48:34
  •  标签:

我感觉这可能是我应该知道的事情,但我现在想不到。我正在尝试编写一个函数来构建一个列表,列表的名称是函数中给定的参数;

例如。

def make_hand(deck, handname):
    handname = []
    for c in range(5):
        handname.append(deck.pop())
    return handname

    # deck being a list containing all the cards in a deck of cards earlier

问题是,这会创建一个名为handname的列表,而我希望它在创建手时被称为用户输入的所有handname。

有人可以帮忙吗?谢谢

最佳回答

你可以创建一个字典,其中键是手的名称,值是列表。

然后您可以简单地说"dictionary [handname]"来访问特定的手。沿着这条路线。

hands = {} # Create a new dictionary to hold the hands.
hands["flush"] = make_hand(deck) # Generate some hands using your function.
hands["straight"] = make_hand(deck) # Generate another hand with a different name.
print hands["flush"] # Access the hand later.
问题回答

虽然您可以在运行时使用exec(如sykora建议的)或通过干预localsglobalssetattr来创建具有任意名称的变量,但您的问题有点毫无意义。

一个对象(几乎可以是任何东西,从整数到具有1000个成员的类)只是一块内存。它没有一个名称,可以拥有任意多个名称,所有名称被同等对待:它们只是引入某个对象的引用并防止其被收集。

如果你想给物品命名,让你程序的用户给一个物品起一个可见的名字,你应该使用一个字典来关联物品和名字。

Your approach of user-supplied variable names has several other severe implications: * what if the user supplies the name of an existing variable? * what if the user supplies an invalid name?

你正在引入一个“泄露的抽象”,因此,除非为了你的程序非常重要,用户需要指定一个新的变量名,否则用户不应该担心你如何存储你的对象,也不应该面临看似奇怪的限制。





相关问题
热门标签