在Python中将变量实例化为“无”
为什么这两段代码不做相同的事情在Python中将变量实例化为“无”,python,Python,为什么这两段代码不做相同的事情 category = None prodid_brand = None prod_type = None prod_application = None prod_handletype = None prod_series = None 我想通过执行以下操作来“清理”我的代码,但它的工作原理与上面的代码不同 column_list = [category, prodid_brand, prod_type, prod_application,
category = None
prodid_brand = None
prod_type = None
prod_application = None
prod_handletype = None
prod_series = None
我想通过执行以下操作来“清理”我的代码,但它的工作原理与上面的代码不同
column_list = [category, prodid_brand, prod_type, prod_application,
prod_handletype, prod_series]
for col in column_list:
col = None
还有一种“更干净”的方法来实例化所有变量,而不是代码的顶层 您可以按如下方式链接分配:
category = prodid_brand = prod_type = None
prod_application = prod_handletype = prod_series = None
可以将多个变量指定给同一对象
var1 = var2 = None
其他答案是更干净/有效地将所有变量设置为“无”的好方法 然而,要回答这个问题: 为什么这两段代码不做相同的事情
category = None
prodid_brand = None
prod_type = None
prod_application = None
prod_handletype = None
prod_series = None
原因是,你的第一行
column_list = [category, prodid_brand, prod_type, prod_application,
prod_handletype, prod_series]
实际上,您正在将列表中每个索引处的变量设置为这些变量中的每一个。因此,列列表[0]=类别
,列列表[1]=产品标识牌
,等等
接下来的几行
for col in column_list:
col = None
您只需在每个列表索引处更改变量,并将其设置为“无”(相当于column\u list[0]=None
)
因此,为什么没有一个初始变量(category
,prodid\u brand
等)得到设置,而最终得到的却是六个none
值的列表
您的第一个代码块是不给变量赋值-也就是初始化变量
第二个代码块在列表列\u list
中迭代时生成一个变量-为for循环中的变量col
赋值实际上会使col
求值为None
,但仅在该循环中(也就是说,它不会将其赋值回原始列表)
如果要在循环中指定变量-
column_list = [category, prodid_brand, prod_type, prod_application,
prod_handletype, prod_series]
for index,value in enumerate(column_list):
column_list[index] = None
但这实际上会给你一个没有的列表
column\u list=[None,None,None,None,None]
不
column\u list=[category=None,prodid\u brand=None,prod\u type=None,prod\u application=None,prod\u handletype=None,prod\u series=None]
看起来也许字典比列表更适合你。“但它的工作原理与上面的代码不同。”怎么做?我怀疑它是否有效,你的列表中满是
namererror
s。你应该读书;不清楚您为什么认为他们会做同样的事情。category=prodid\u brand=prod\u type=prod\u application=prod\u handletype=prod\u series=None
您没有更改列表索引。列表没有更改。您只是在更改变量col
,它不知道任何列表元素。@kindall这一点很好。我更新了我的答案,使之更加准确。