繁体   English   中英

在python中以函数参数命名的列表

[英]list named with a function argument in python

我觉得这可能是我应该知道的,但我现在无法想到。 我试图得到一个函数来建立一个列表,其中列表的名称是函数中给定的参数;

例如

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

问题是,当我希望创建手时,无论用户输入什么作为手名,它都会创建一个名为手名的列表。

有人可以帮忙吗? 谢谢

您可以保留一个字典,其中的键是手的名称,值是列表。

然后,您只需说出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进行干预来创建具有任意名称的globals ,但您的问题有些疑问。

一个对象(几乎所有东西,从整数到具有1000个成员的类)都只是一块内存。 它没有名字 ,它可以有任意多的名称,并且所有名称被视为平等的:他们只是介绍一些对象的引用,并防止它被收集。

如果要以程序用户为对象提供用户可见的名称的方式命名项目,则应使用字典将对象与名称相关联。

您使用的用户提供的变量名的方法还有其他严重的含义:*如果用户提供了现有变量的名称该怎么办? *如果用户提供了无效的名称怎么办?

您正在引入一个泄漏的抽象 ,因此,除非对于程序的目的而言,用户可以指定一个新的变量名真的非常重要,否则用户不必担心如何存储对象-不会出现有看似奇怪的限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM