[英]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所建议的那样)或通过对对象的locals
, globals
或setattr
进行干预来创建具有任意名称的globals
,但您的问题有些疑问。
一个对象(几乎所有东西,从整数到具有1000个成员的类)都只是一块内存。 它没有名字 ,它可以有任意多的名称,并且所有名称被视为平等的:他们只是介绍一些对象的引用,并防止它被收集。
如果要以程序用户为对象提供用户可见的名称的方式命名项目,则应使用字典将对象与名称相关联。
您使用的用户提供的变量名的方法还有其他严重的含义:*如果用户提供了现有变量的名称该怎么办? *如果用户提供了无效的名称怎么办?
您正在引入一个泄漏的抽象 ,因此,除非对于程序的目的而言,用户可以指定一个新的变量名真的非常重要,否则用户不必担心如何存储对象-不会出现有看似奇怪的限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.