关于python的代码中,变量是否需要定义的疑问

编写代码时,发现,部分变量如单独定义的话,会方便后面的使用。但是这个貌似也会延长代码运行时间。
而有时候,我也发现,一个表达式如果不定义为一个变量的话,写起来很长,不便于阅读。同时,有时候一样会增加代码的运行速度。。
因此,想请问下,到底什么时候设置变量好些呢?

我个人感觉,如果在for循环下,定义变量的话,会拖慢速度。。
而如果不存在循环的话,则定义变量,貌似则会加快速度。。
不知道是否真的如此。。

  1. python慢的是循环,不是变量定义
  2. python属性,方法获取比call慢。比如 list.append(a) 比 apd=list.append 后的 apd(a) 慢【不包含apd=list.append】。 所以循环如果足够多的话,考虑这类设置个变量
  3. for x in y: 如果用不到x,可考虑用while,或者 用 _ 代替x
  4. python中,一般情形是,有函数的比没函数的快,写的短的比写的长的快,内建方法比循环快。所以多用列表推导式,少用循环。
  5. 先写程序后优化,如果碰到程序总需要优化,再去关注优化结果,再反过头来优化自己的使用习惯。


根据你提供的的内容:
data.txt

7.79,8.66,2.76,7.06,3.47
5.52,1.61,9.55,9.19,9.95
8.74,5.93,4.81,0.47,0.60
9.64,9.47,6.49,4.44,8.64
0.96,9.14,6.23,4.32,7.72
0.82,6.41,5.25,2.214,3.87
....

args.txt内容如下:

1,3,5,7
2,4,6,8
1,2,3,5
。。。s

输出:

0.113,0.083,0.760,0.009,1.000
0.260,1.000,0.910,0.313,0.244
0.249,0.965,0.905,1.000,1.000
0.377,0.184,0.298,0.720,0.080
1.000,0.143,0.246,0.660,0.720
1.000,0.205,0.050,0.214,1.000
0.585,1.000,0.550,1.000,0.410
0.211,0.930,0.735,1.000,1.000
1.000,0.218,0.360,0.100,0.110
0.515,1.000,0.560,0.585,0.420
0.306,0.220,0.900,0.316,0.209
0.180,1.000,1.000,0.285,1.000
0.110,1.000,0.922,1.000,1.000

代码如下:

argTable = []

def getNew(num,colidx):
    level = argTable[colidx]
    if num< level[0]:
        return 1.0
    if num > level[3]:
        return (num-level[3])/level[3]
    levelR = zip(level, level[1:len(level)])

    for lR in levelR:
        if lR[0] < num <= lR[1]:
            return (lR[0] - num) / (lR[0] - lR[1])

if __name__ == '__main__':
    with open("args.txt","rb")as f:
        for line in f:
            l= line.split(b",")
            l = [float(i) for i in l]
            argTable.append(l)
    with open("data.txt","rb")as f:
        with open("newdata.txt", "wb") as fw:
            for line in f:
                l = line.split(b",")
                l = [float(i) for i in l]
                newl = [getNew(i,idx) for idx,i in enumerate(l)]
                newlS = [f"{i:2.3f}" for i in newl]
                fw.write(",".join(newlS).encode("utf-8")+b"\r\n")

该定义就定义,你说的使用变量循环速度的差别,就算有也微乎其微,和代码可读性相比,这才是最重要的。

我看了你好几个问题,感觉纠结在这些旁枝末节啊,并不能够提升或者减少多少效率吧,你花在这里的时间更多……
不过变量定义不定义,还是具体情况具体分析,新的内存空间才会拖累速度
另外,在Python中,不可变类型,比如int类型,元组,当给变量赋值不同的值时,变量的地址会变化,太多对象的确麻烦
至于可读性,应该是尽量用面向对象的思维编程吧,提高代码的复用性,尽量不要重复写同样的代码……