Python程序员鲜为人知但你应该知道的17个问题
一、不要使用可变对象作为函数默认值
In[1]:defappend_to_list(value,def_list=[]): ...: def_list.append(value) ...: returndef_list ...:
In[2]:my_list=append_to_list(1)
In[3]:my_list Out[3]:[1]
In[4]:my_other_list=append_to_list(2)
In[5]:my_other_list Out[5]:[1,2]#看到了吧,其实我们本来只想生成[2]但是却把第一次运行的效果页带了进来
In[6]:importtime
In[7]:defreport_arg(my_default=time.time()): ...: print(my_default) ...:
In[8]:report_arg()#第一次执行 1399562371.32
In[9]:time.sleep(2)#隔了2秒
In[10]:report_arg() 1399562371.32#时间竟然没有变