Python 代码的顺序能使这个程序更快吗?

Python 代码的顺序能使这个程序更快吗?,python,performance,optimization,Python,Performance,Optimization,嗨,这是我的第一篇帖子,我正在学习如何编写代码,所以从技术上来说我是个新手 我正在学习python我还处于非常基础的阶段,我开始了解if语句,并尝试将其与其他概念(函数定义、输入、变量)相结合,以便对python有更广泛的了解,我写了一些代码,但对我想做的事情没有具体的想法,我只是想把我迄今为止学到的东西混合起来,所以可能我做得太多了,这不实用,当我运行它时,它会“起作用” 我的问题不是如何更有效地使用更少的代码,而是所有编程中的代码顺序。这里我将展示两种不同顺序的代码,它们以完全相同的代码(但

嗨,这是我的第一篇帖子,我正在学习如何编写代码,所以从技术上来说我是个新手

我正在学习python我还处于非常基础的阶段,我开始了解if语句,并尝试将其与其他概念(函数定义、输入、变量)相结合,以便对python有更广泛的了解,我写了一些代码,但对我想做的事情没有具体的想法,我只是想把我迄今为止学到的东西混合起来,所以可能我做得太多了,这不实用,当我运行它时,它会“起作用”

我的问题不是如何更有效地使用更少的代码,而是所有编程中的代码顺序。这里我将展示两种不同顺序的代码,它们以完全相同的代码(但顺序不同)给出相同的结果

在(1)中,我在第一行定义了一个函数。
在(2)中,我在第5行中使用相同的函数时,将其定义得更接近

哪一个更快?由于大型程序的复杂性,定义一个函数“更接近”我需要它的时间是不切实际的(但它会使它更快),还是定义一个函数“远离”我需要它的时间会使大型程序在运行时变慢(但也更实际)

(一)

(二)


这一点差别都没有。做任何可读性最好的事情。

函数定义必须位于函数调用上方,但函数定义和函数调用之间的距离并不重要(因为函数代码已经加载)

使程序更快的一种方法是避免产生相同结果的重复计算,方法是执行一次计算,将结果存储在变量中,并在需要结果时使用该变量


例如,假设您的程序处理一个非常大的元组。如果
len(veryLargeTuple)
在代码中多次出现,Python将反复尝试确定非常大的元组的长度。这是浪费时间,因为元组是不可变的,所以它的长度不会改变,而查找非常大的元组的长度可能需要一些时间。如果将
len(veryLargeTuple)
的结果存储在变量
verylargetuplength
中,并在需要非常大的元组长度时使用
verylargetuplength
(查找变量值是一个非常快速的操作)。

该算法的渐近性能为O(1)因此无法改进。然而,当算法运行若干次时,有尽可能多的方法稍微改善算法的实际运行时间。然而,你在这个特定的案例中所做的改变应该不会有太大的影响。在你有事情要担心之前,不要担心速度。如果你有一大块代码运行速度太慢,不符合你的喜好,首先看看你是否能想出一个更好的算法。@RolandSmith我不担心,我只是想知道它是否有区别。如果你想测量速度,你应该使用。
def t(n1,n2):
    v=n1-n2
    return abs(v)
a = int(input('how old are you? \n'))
b = int(input('how old is your best friend? \n'))

c=t(a,b)

if a==b:
    print ('you are both the same age')

else:
    print('you are not the same age\nthe difference of years is %s year(s)' % c)

input()
a = int(input('how old are you? \n'))
b = int(input('how old is your best friend? \n'))

def t(n1,n2):
    v=n1-n2
    return abs(v)

c=t(a,b)

if a==b:
    print ('you are both the same age')

else:
    print('you are not the same age\nthe difference of years is %s year(s)' % c)

input()