你如何在Python中动态设置局部变量?
(变量名称是动态的)
更新:我知道这不是一个好的做法,而且这些言论是合法的,但这不是一个坏问题,只是一个更理论的问题 - 我不明白为什么这证明了这一点.
现在我正在学习Python并且正在努力学习OOP的一些概念,其中之一是(对我来说)动态初始化类实例并将它们分配给动态生成的变量名称是多么困难以及为什么我在阅读我不应该'首先要做到这一点.
在大多数具有类似方向的线程中,答案似乎是它不是Pythonic.
有人可以详细说明吗?
以典型的OOP学习案例为例:
LOE = ["graham", "eric", "terry_G", "terry_J", "john", "carol"]
class Employee():
def __init__(self, name, job="comedian"):
self.name = name
self.job = job
Run Code Online (Sandbox Code Playgroud)
为什么这样做更好:
employees = []
for name in LOE:
emp = Employee(name)
employees.append(emp)
Run Code Online (Sandbox Code Playgroud)
然后
for emp in employees:
if emp.name == "eric":
print(emp.job)
Run Code Online (Sandbox Code Playgroud)
而不是这个
for name in LOE:
globals()[name] = Employee(name)
Run Code Online (Sandbox Code Playgroud)
和
print(eric.job)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想创建一个简单的GUI,我可以输入一些值.前面和下面的标签以及启动脚本的按钮.
我使用的是这样的东西:
w = Label(master, text="weight:")
w.grid(sticky=E)
w = Label(root, text="bodyfathydrationmuscle:bones")
w.grid(sticky=E)
w = Label(root, text="hydration:")
w.grid(sticky=E)
Run Code Online (Sandbox Code Playgroud)
没关系,但我想做动态.当我将w用于所有的命令时,我只能施放一次.但我需要我所有的数据;-)
我在考虑:
def create_widgets(self):
L=["weight","bodyfat","hydration","muscle","bones"]
LV=[]
for index in range(len(L)):
print(index)
print(L[index])
("Entry"+L[index])= Entry(root)
("Entry"+L[index]).grid(sticky=E)
("Label"+L[index])=Label(root, text=L[index])
("Label"+L[index]).grid(row=index, column=1)
Run Code Online (Sandbox Code Playgroud)
稍后打电话:
var_weight=Entryweight.get()
var_bodyfat=Entrybodyfat.get()
Run Code Online (Sandbox Code Playgroud)
等等.我怎么能让它发挥作用?
我需要在python脚本中创建一个命名列表列表.
我想要做的是创建一个mklist方法,该方法将在列表中获取字符串并创建为每个字符串命名的列表.所以,从这里:
a = "area"
for i in range(1, 37):
x = str(a) + str("%02d" % (i,))
' '.join(x.split())
Run Code Online (Sandbox Code Playgroud)
我想得到以下内容:
area01 = []
area02 = []
area03 = []
area04 = []
area05 = []
area06 = []
area07 = []
area08 = []
area09 = []
area10 = []
area11 = []
area12 = []
area13 = []
area14 = []
area15 = []
area16 = []
area17 = []
area18 = []
area19 = []
area20 = [] …Run Code Online (Sandbox Code Playgroud) 我想解压缩像:
one, two, three, four = unpack(this_dict)
Run Code Online (Sandbox Code Playgroud)
哪里
this_dict = {'one': 1, 'two': 2, 'three': 3, 'four': 4}
Run Code Online (Sandbox Code Playgroud)
我唯一的问题是unpack需要知道它将分配给哪些名字.你是如何在python中做到这一点的?谢谢