在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这一点很好。我更新了我的答案,使之更加准确。