对python语法感到困惑

时间:2017-04-07 07:33:06

标签: python dictionary syntax notation

我查看了整个网络,但未能找到我的问题的答案。我试图理解一些python代码,并遇到了类似这样的类声明:

s_list = []    
last_name = ""

def __init__(self, last_name, curr_date, difference):
    self.last_name = last_name
    self.s_list = {curr_date:difference}
    self.d_list = []
    self.d_list.append(curr_date)

花括号里面发生了什么?这是初始化字典吗?稍后在主文件中使用它:

n = n_dict[last_name]
n.d_list.append(curr_date)
n.s_list[curr_date] = difference

其中n是用于添加到n_dict的临时字典,其中n_dict是包含该类信息的字典。

为什么使用{:}符号?有没有其他办法可以做到这一点?

任何答案都非常感谢!

2 个答案:

答案 0 :(得分:1)

{curr_date:difference}创建了一个匿名词典。相反,您可以创建一个名称为的字典:

dict_name={}
dict_name[curr_date]= difference
self.s_list=dict_name

此外,您甚至可以使用dict()创建字典:      self.s_list=dict(curr_date=difference)

还有其他一些方法可以在python中创建字典!

答案 1 :(得分:0)

只是赞美答案,但没有解释令人困惑的代码。 实际上,编写代码非常令人困惑。这涉及全球化和本地化的变量概念。

# This is the global list variable
s_list = []    

# this is the global 
last_name = ""

def __init__(self, last_name, curr_date, difference):
    # Everything define here is localised and will be used first
    # pass value from given to last_name (not using above global last_name)
    self.last_name = last_name

    # This localised assignment make self.s_list a dictionary
    self.s_list = {curr_date:difference}
    # create another list
    self.d_list = []
    self.d_list.append(curr_date)

恕我直言,这个例子是某种关于全局vs局部变量的教程,以及错误的命名示例。