网站优化都是怎么做的,请人做网站要多,iis更改默认网站,重庆唐卡装饰公司文章目录 0 引言1 无限循环2 无效的变量赋值3 冗余的代码4 使用 eval 函数执行字符串代码5 不必要的类型转换6 使用 exec 执行外部命令7 使用混乱的命名8 使用硬编码的值9 忽略异常10 不合理的注释11 使用全局变量12 直接修改迭代对象13 滥用递归14 使用 运算符连接字符串15 漏… 文章目录 0 引言1 无限循环2 无效的变量赋值3 冗余的代码4 使用 eval 函数执行字符串代码5 不必要的类型转换6 使用 exec 执行外部命令7 使用混乱的命名8 使用硬编码的值9 忽略异常10 不合理的注释11 使用全局变量12 直接修改迭代对象13 滥用递归14 使用 运算符连接字符串15 漏掉缩进16 使用 is 进行浮点数比较17 无效的列表切片18 使用 continue 跳出多个循环 0 引言
没有写过蠢的代码就不会知道自己曾经犯过哪些编程的低级错误。借此官方活动回忆下曾经写过的最蠢的Python代码。
1 无限循环
while True:print(I am ZPILOTE!)这段代码创建了一个永远不会结束的循环因为条件始终为 True没有停止或退出条件。所以一定要确保循环中包含适当的终止条件以避免无限循环。 2 无效的变量赋值
x x 1这段代码尝试将变量 x 的值与自身加1的结果进行赋值但在赋值之前x 并没有被定义因此会引发 NameError。在使用变量之前确保对其进行定义或初始化。 3 冗余的代码
if x 5:print(x is greater than 5)
elif x 3:print(x is greater than 3)这段代码中的第二个条件 elif x 3 是多余的因为如果第一个条件 x 5 成立那么第二个条件肯定也成立。避免编写重复或多余的代码确保每个条件或分支都有其独特的目的。 4 使用 eval 函数执行字符串代码
x 5
eval(print(x 1))使用 eval 函数可以执行字符串中的代码但这也意味着它会执行任何传递给它的代码包括潜在的恶意代码。这在安全性上是一个潜在的风险。避免使用 eval 或 exec 执行字符串代码尽量使用更安全的替代方案。 5 不必要的类型转换
x str(5)这段代码将整数值 5 转换为字符串类型并将结果赋给变量 x。这是多余的因为在大多数情况下Python 能够自动处理不同类型之间的操作。避免进行不必要的类型转换尽量让 Python 自动处理类型转换。 6 使用 exec 执行外部命令
import os
command ls
exec(os.system(command))使用 os.system 和 exec 来执行外部命令是一种不安全的做法因为它允许执行任意的系统命令可能导致安全问题。尽量避免使用 os.system 或 exec 执行外部命令可以使用更安全的替代方案如 subprocess 模块。 7 使用混乱的命名
a 5
b hello
c a b这段代码使用了不具有描述性的变量名使得代码难以理解和维护。良好的命名能够提高代码的可读性。选择具有描述性的变量和函数名使代码更易于理解和维护。 8 使用硬编码的值
for i in range(10):print(i)这段代码使用硬编码的值 10而不是使用变量或常量来表示它。这会导致代码的可维护性降低因为需要更改相同的值时必须在多个位置进行修改。将常量或可配置的值存储在变量或常量中以提高代码的可维护性。 9 忽略异常
try:# Some code
except:pass这段代码使用了一个空的 except 块它会捕获任何异常并简单地忽略它们而不做任何处理。这可能会导致难以调试和定位错误。在代码中合理地处理错误和异常避免简单地忽略它们以便更好地调试和处理问题。 10 不合理的注释
x 5 # This is a variable这段代码的注释 # This is a variable 是多余的因为它没有提供任何有用的信息只是重复了代码本身的含义。 11 使用全局变量
def increment():global xx 1使用 global 关键字将局部变量提升为全局变量可以导致代码的可维护性降低因为在整个程序中都可以修改和访问该变量增加了代码的复杂性。尽量避免使用全局变量而是使用函数参数和返回值来传递和获取数据。 12 直接修改迭代对象
for item in some_list:some_list.remove(item)在迭代一个列表的同时直接修改列表本身会导致遍历过程中的错误行为因为列表的大小在迭代过程中发生了变化。在迭代对象时避免直接修改它们以免导致意外的行为。 13 滥用递归
def countdown(n):if n 0:returnprint(n)countdown(n - 1)这段代码使用递归来实现倒计时但没有设置递归的终止条件导致无限递归最终会导致栈溢出错误。在使用递归时确保设置递归的终止条件以避免无限递归。 14 使用 运算符连接字符串
result
for i in range(10):result str(i)在循环中使用 运算符来连接字符串会导致性能问题因为每次迭代都会创建一个新的字符串对象。更好的做法是使用列表或生成器来收集字符串然后使用 join 方法来连接它们。 15 漏掉缩进
if True:
print(IndentationError: expected an indented block)这段代码在if语句后面没有正确的缩进导致 IndentationError。确保代码块的缩进正确。 16 使用 is 进行浮点数比较
x 0.1 0.1 0.1
if x is 0.3:print(x is equal to 0.3)在这个例子中使用 is 运算符进行浮点数比较是错误的。is 运算符用于比较对象的身份而不是值。正确的做法是使用 运算符进行浮点数的值比较。 17 无效的列表切片
my_list [1, 2, 3]
print(my_list[1:0])这段代码中的切片 my_list[1:0] 是无效的因为起始索引1大于结束索引0。正确的切片应该是 my_list[0:1]。在使用列表切片时确保起始索引小于结束索引以获取正确的切片结果。 18 使用 continue 跳出多个循环
for i in range(5):for j in range(5):continue这段代码中的 continue 语句只会跳出内部的循环而不会跳出外部的循环。因此它对于退出多个循环是无效的。要跳出多个循环可以使用更复杂的条件或者使用标签和 break 语句来实现。 须知少时凌云志曾许人间第一流。 ⭐️