几天前我几乎没有什么问题困扰着我。我是初学者Python / Django程序员,所以我想在进入实时产品开发之前先澄清一些事情。(对于Python 2.7。*)
1)在使用函数之前保存变量值
for x in some_list/tuple:
func(do_something(x))
for x in some_list/tuple:
y = do_something(x)
func(y)
哪一个更快或哪一个我应该使用。
2)在Django中创建模型的新对象
def myview(request):
u = User(username="xyz12",city="TA",name="xyz",...)
u.save()
def myview(request):
d = {'username':"xyz12",'city':"TA",'name':"xyz",...}
u = User(**d)
u.save()
3)创建词典
var = Dict(key1=val1,key2=val2,...)
var = {'key1':val1,'key2':val2,...}
4)我知道.append()
比+=
快,但如果我想将列表的元素附加到另一个
a = [1,2,3,],b = [4,5,6]
a += b
或
for i in b:
a.append(i)
答案 0 :(得分:0)
这是一个非常有趣的问题,但我认为你没有问这个问题。通过这种优化获得的性能可以忽略不计,特别是如果您使用少量元素。
另一方面,真正重要的是易于阅读代码并且清晰。
def myview(request):
d = {'username':"xyz12",'city':"TA",'name':"xyz",...}
u = User(**d)
u.save()
例如,这个代码一开始就不容易阅读和理解。它需要在找到实际功能之前先考虑一下。除非你需要中间步骤,否则不要这样做。
对于4th
点,我会选择第一个解决方案,更加清晰(它避免了通过在循环中调用相同函数而创建的函数调用开销)。您还可以使用更专业的功能来获得更好的表现,例如reduce
(请参阅此答案:https://stackoverflow.com/a/11739570/3768672以及此主题:What is the fastest way to merge two lists in python?)。
1st
和3rd
点通常符合您的喜好,因为两者非常相似,并且在编译为bytecode
时可能会进行优化。
如果您真的想要优化更多代码,我建议您先查看一下:https://wiki.python.org/moin/PythonSpeed/PerformanceTips
PS:最终,您仍然可以自己进行测试。使用您要测试的两种不同方法编写两个完全相同的函数,测量这些方法的执行时间并进行比较(小心,多次测试以减少不确定性)。