我正在尝试在Python上创建一个系统,允许我创建一个名为(user)total的列表,'user'是用户名之前的总和。但这是主观的,因为任何用户名的帐户都可以在我的程序中进行。
我试过用
%stotal = [''] %user
但是这会出现语法错误。我怎么能做到这一点?
答案 0 :(得分:2)
你不能在python中做那种元编程! (不是你发布的语法) 但您可以创建一个由用户名索引的列表字典:
total = {}
total['username1'] = [''] #list for this username total
total['username2'] = ['']
等
答案 1 :(得分:0)
是可能的。希望看到有助于说明为什么,正如Hyperboreus所说,这不是一个好主意。
如果在交互式Python环境中执行dir()
,您将获得当前范围中可用的名称列表。总会有一个名为__builtins__
,它会公开builtins模块中的所有函数和常量。这些函数和常量被定义为与全局命名空间中Python会话开始时可用的函数和常量完全相同,您可以使用内置函数globals()
来查看这些函数和常量。
根据Python data model,每个Python对象都有一个名为__dict__
的元素,它是一个dictionary object,其键是成员名称。如果obj
是当前作用域中某个Python对象的名称,obj.__dict__["keyname"]
将访问您可以通过obj.keyname
更简单地访问的同一成员。
因此,将它们组合在一起,您可以直接在__builtins__.__dict__
中设置键/值对:
>>> __builtins__.__dict__["testvarname"] = "testval"
>>> print testvarname
testval
呼!在这里很快抽象。这可能对于基于用户输入定义行为或者在运行时可能不知道的其他内容有用...但是您可能会看到如何通过大量复杂性来实现这一目标并绕过正常的规则Python开始尝试帮助您保持程序的组织和易于理解。 xndrme的答案可能是解决您面临的更大问题的更直接的方法。