MST

星途 面试题库

面试题:Python中代码规范对性能影响的常见场景

请举例说明Python代码规范中,哪些常见的规范操作会对程序性能产生较为明显的影响,例如代码的缩进、变量命名等方面,并简要阐述原因。
48.6万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

1. 循环内的操作

  • 规范操作:避免在循环内部进行重复的、不必要的计算。例如,如果一个计算结果在每次循环中都不会改变,应将其移到循环外部。
  • 原因:每次循环都进行相同的计算会浪费大量时间,移到循环外只计算一次可显著提升性能。例如:
# 不规范
for i in range(1000):
    result = math.sqrt(25)  # 每次循环都计算相同结果
# 规范
sqrt_25 = math.sqrt(25)
for i in range(1000):
    result = sqrt_25

2. 数据结构选择

  • 规范操作:根据实际需求选择合适的数据结构。比如,需要频繁查找元素时,使用 dictset 而非 list
  • 原因list 的查找时间复杂度为 O(n),而 dictset 的查找时间复杂度为 O(1),在数据量较大时性能差异明显。例如查找元素 x
my_list = [1, 2, 3, 4, 5]
if x in my_list:  # 时间复杂度 O(n)

my_set = {1, 2, 3, 4, 5}
if x in my_set:  # 时间复杂度 O(1)

3. 不必要的函数调用

  • 规范操作:减少在性能关键部分的不必要函数调用。
  • 原因:函数调用有一定开销,包括参数传递、栈操作等。如果函数体简单,内联代码可能比函数调用更高效。例如:
# 不规范
def add(a, b):
    return a + b
for i in range(1000):
    result = add(i, 1)

# 规范
for i in range(1000):
    result = i + 1

4. 变量作用域

  • 规范操作:尽量减少使用全局变量,尤其是在性能敏感的代码段。
  • 原因:访问全局变量比访问局部变量慢,因为解释器需要在更大的命名空间中查找。例如:
global_var = 10
def func():
    # 不规范,访问全局变量
    result = global_var + 5
    return result

def better_func():
    local_var = 10
    # 规范,访问局部变量
    result = local_var + 5
    return result

5. 代码缩进(一般不直接影响性能,但影响可读性进而影响维护和优化)

  • 规范操作:遵循一致的代码缩进,通常使用4个空格。
  • 原因:虽然缩进本身不直接影响性能,但清晰的缩进结构能让代码逻辑一目了然,便于发现性能瓶颈并进行优化。如果代码缩进混乱,难以阅读和理解,优化工作会变得困难。