python中如果那么否则代码-如何避免写Python代码中的错误最近我⼀直在阅读⼀些相当不⼲净的Python代码。也许这主要是因为代码的作者对Python语⾔本⾝没有深⼊的了解,cPython提供了“平台”,这⾥列出了你在写作时应该尽量避免的⼀些错误Python代码:
记住Python
Python附带了⼀⼤堆标准模块,实现了⼴泛的功能,包括⽂本处理,各种数据类型,⽹络内容(低级和⾼级),⽂档处理,⽂件存档处理,⽇志记录所有这些都记录在Python库⽂档中,因此必须⾄少浏览可⽤模块列表,因此您可以获得默认情况下可以使⽤的概念。⽰例:如果您没有任何性能需求,请不要在Twisted上引⼊依赖项来实现⾮常基本且简单的⾃定义HTTP服务器,请使⽤BaseHTTPServer和衍⽣项。
Python是Python,不要试图模仿来⾃其他语⾔的错误编码模式
Python是⼀种成熟的编程语⾔,它提供了很⼤的灵活性,但也有⼀些⾮常具体的模式,你可能不知道以前使⽤过的其他语⾔。
举个例⼦,根本不要试图模仿PHP的"include"或"require"函数。这可以通过在顶层的模块中编写要包含(并在包含上执⾏)的代码(即不在函数/ classes / ...中),并使⽤类似"from foo import *"的内容来完
成。你想要执⾏这个代码。这可⾏,但可能很难维持这⼀点。模块不应该像这样使⽤,所以不要这样。如果您需要在某个时刻执⾏某些代码,请将其作为函数放⼊模块中,导⼊该函数并在任何位置调⽤它。
不要污染全局命名空间
不要使⽤"from foo import *",因为这会引⼊foo中定义的所有内容,还会引⼊foo中导⼊的所有模块,甚⾄可能导⼊它们等等。尝试"import foo"和使⽤foo.whatever,或者使⽤"from foo import whatever,somethingelse"。显式导⼊使代码更具可读性,并且可以更容易地确定在当前模块中使⽤的模块中定义的内容,如果它是由您的许多全局导⼊之⼀导⼊的话。
使⽤Pythonesque编码模式
这显然与前⼀项⾮常相关。Python有⼀些众所周知的结构来处理某些情况。了解并理解它们。
⼀个例⼦:您可能知道,Python没有开关/案例构造。通过简单地使⽤dict和函数对象(或lambda函数),有⼀种⾮常简洁的⽅法来实现它。⼀个例⼦:
def handle_one():
return "one"
def handle_two():
return "two"
def handle_default():
return "unknown"
cases = {
"one": handle_one,
"two": handle_two,
"three": lambda: "three",
}
for i in ("one", "two", "three", "four", ):
handler = (i, handle_default)
print handler()
我们在这⾥使⽤⽅法,它可以采⽤可选的"default"参数。挺整洁的,对吧?
不要重新发明与
#1相关的轮⼦。⼀个例⼦?Python包含⼀个伟⼤的“记录器”模块,其中包括⾼级功能,如通过⽹络登录,通过HTTP,定义多个记录⽬标,⽬标树,......⽆需⾃⼰重新实现!
记录您的代码
Python具有称为docstrings的强⼤语⾔功能。严格地将它们洒在整个代码中。在编写函数/类时执⾏此操作,⽽不是之后。每个⼈都知道这⾮常⽆聊和令⼈沮丧。
写测试
编写测试代码。Python包括⾄少2种编写测试的⽅法:使⽤标准单元测试,或使⽤doctests,包含在⽂档字符串中的测试代码⽚段,既有⽤⼜有说明性。如果您⽆法测试结果,则⽆法知道某些代码重构是否顺利。
明智地使⽤错误报告
Python包括异常处理。明智地使⽤它:当某些函数出现问题时应该返回⼀个正常显⽰给⽤户的字符串,不要只返回⼀个带有⼀些错误信息的普通字符串,好像⼀切顺利,但返回打包的消息⼀个异常对象,因此调⽤代码将知道出错(并且可能根据此信息处理),同时仍然能够向⽤户显⽰错误消息。
除此之外,⼦类Exception(或更具体的Exception⼦类)不仅仅返回基本异常,除⾮在某些基本情况下。异常类不应该很⼤:"class FooException(Exception):pass"切断作业。
在开发过程中不要关闭错误报告
在某些情况下,确保应⽤程序继续运⾏是有⽤的,⽆论发⽣什么(例如,Twisted如何处理服务器处理程序异常)。Python提供了⼀些实现此⽬的的⽅法,因此如果您需要它,您可以使⽤它,但请确保提供⼀种禁⽤此⽅法的⽅法,这样您就可以告诉应⽤程序在开发过程中严重崩溃。通过这种⽅式,您肯定会注意到这个问题,并且您将能够尽早解决问题。
搜索⽹页!
许多伟⼤的⼈为许多事情编写了数以千计的Python模块。他们中的许多⼈使⽤⾮常⾃由的Python许可证,即使在密切的源环境中也允许您重复使⽤此代码。Pypi可以是⼀个很好的起点。
使⽤Python基本内置函数
⼀个基本⽰例:要检查函数参数是否属于某种类型,不要使⽤"arg .__ class__ == MyClass"之类的东西,请使
⽤"isinstance(arg,MyClass)"。您是否知道isinstance的第⼆个参数可以是元组/列表?如果是,则将针对此列表中的所有类型检查arg的类型,因此不需要执⾏多个“isinstance”调⽤。其他有⽤的内置函数是getattr / setattr / hasattr(显然),issubclass,...
在⾮常有⽤的情况下使⽤⾮特定于实例的类⽅法
就像许多其他编程语⾔⼀样,Python允许您向类添加静态⽅法。只需使⽤"staticmethod"装饰器装饰你的⽅法!
在静态⽅法旁边,Python知道类⽅法的概念,它将类作为参数。你很可能不经常需要这些。
学习“函数式编程”基础知识python新手代码错了应该怎么改
⾸先,很难绕过函数式编程模式,但它们可以提供⼀种⾮常⽅便和⼲净的⽅式来处理多种情况。
不要乱⽤sys.path
如果你需要导⼊"外部"模块,尽量不要乱⽤sys.path。使⽤distutils函数来发现模块,将它们作为鸡蛋运送,......如果你想改变sys.path,尽量不要对任何“基本”路径进⾏硬编码:通⽤路径是⼀个主要的优点,删除硬编码路径的东西可以是PITA。
使⽤交互式shell
像iPython这样的Python shell 是必备的。我完全沉迷于它提供的制表符完成和⽂档快捷⽅式。
使⽤代码度量⼯具
我个⼈使⽤PyLint(禁⽤某些规则)。此⼯具将检查您的代码中的各种内容:缺少导⼊,拼写错误,错误的变量/函数/类/模块命名,语法错误,...即使您的测试套件运⾏正常,它们也可能在您的代码中。也许你甚⾄可以为你正在使⽤的VCS添加⼀个钩⼦,这不允许你检查代码,除⾮它得到例如PyLint分数。7.⾮常有⽤!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。