最近有人向我展示了我们可以像Perl那样在Python中打印变量。代替:print("%s,%s,%s"%(foo,bar,baz))我们可以做:print("%(foo)s,%(bar)s,%(baz)s"%locals())有没有像我们在Perl中那样在Python中打印变量的看起来不那么古怪的方法?我认为第二个解决方案实际上看起来非常好并且使代码更具可读性,但locals()在那里徘徊使它看起来像是一种复杂的实现方式。 最佳答案 唯一的其他方法是使用Python2.6+/3.x.format()字符串格式化方法:#dictmu
例如,我想使用numpy的isnan函数。我已经加载了pandas库:importpandasaspdpd.np.isnan(1)#=>False这行得通,但有什么缺点吗?或者我应该写importpandasaspdimportnumpyasnpnp.isnan(1)#=>False什么是好的做法? 最佳答案 您应该使用第二种方法至少有四个原因:正如@abarnert在评论中所说,它遵循PEP0008中Publicandinternalinterfaces下所述的Python代码官方指南。.具体来说,PEP说:Allundocume
在设计类时,抽象方法会很有帮助。据我所知,Python没有强制继承类实现抽象方法的机制。在我的代码中(参见下面的示例),我在基类中输入了一个失败的断言,如果未实现则导致运行时错误。这是unpythonic吗?classDog(Animal):defspeak(self):return"bark"classAnimal():defspeak(self):assert(False)#abstract 最佳答案 Python实际上确实有带有抽象方法的抽象类:>>>importabc>>>>>>classIFoo(object):...__
我已经开始使用这样的结构:classDictObj(object):def__init__(self):self.d={}def__getattr__(self,m):returnself.d.get(m,None)def__setattr__(self,m,v):super.__setattr__(self,m,v)更新:基于此线程,我已将DictObj实现修改为:classdotdict(dict):def__getattr__(self,attr):returnself.get(attr,None)__setattr__=dict.__setitem____delattr__=d