大数跨境
0
0

Python新手常见的5个错误

Python新手常见的5个错误 漫画数据分析
2019-12-27
2
Python,一个高层次的动态编程语言,以易于使用而著名,因此近年来发展迅速且广受欢迎。


正因为它很容易上手,所以也容易出现一些错误。我们列出了用Python编写代码时初学者容易犯的5个常见错误。



1. 不必要的lambda表达


函数是Python中的“一等公民”。这意味着您可以将其分配给某个变量,将其作为参数传递给另一个函数调用,依此类推。对于初学者或来自其他编程语言的开发人员来说,这可能是违反直觉的。


这种模式的一个常见例子是:


建议的方法是:



例:
https://github.com/stripe/stripe-python/blob/625d3f6c012cd56d59acf82da5ca67d86a8453b3/stripe/http_client.py#L547-L548



2. 提高 NotImplemented


这是类似命名可能会使开发人员感到困惑的示例之一。NotImplementedError是一个异常类,当需要派生类来覆盖方法时,应该引发该异常类。NotImplemented是一个常量,用于实现二元运算符。当你加注时NotImplemented会提示出TypeError


错误:



正确:



例:
https://github.com/search?l=Python&q=raise+NotImplemented+language%3APython&type=Code



3. 可变默认参数


执行函数定义时,Python中的默认参数将被计算一次。这意味着在定义函数时仅对表达式求值一次,并且对每个后续调用使用相同的值。所以,如果你正在修改的可变默认参数:一个listdict等等,它会被修改为将来的所有调用。


错误:



正确:



例:
https://github.com/keras-rl/keras-rl/blob/master/rl/agents/dqn.py#L167



4. 使用assert陈述作为保护条件


由于assert提供了检查某些条件和执行失败的简便方法,因此开发人员使用它来检查有效性是很常见的。但是当使用-O(optimize)标志调用Python解释器时,assert语句将从字节码中删除。因此,如果assert语句用于生产代码中面向用户的验证,则根本不会执行该块 - 反而可能会打开安全漏洞。建议assert仅在测试中使用语句。


错误:



正确:



例:
https://github.com/syrusakbary/validate_email/blob/master/validate_email.py#L127



5. 用isinstance代替type


typeisinstance可被用于检查在Python的对象的类型。但是有一个重要的区别 - isinstance在解决对象类型的同时处理继承,而type不是。所以有时使用isinstance可能不是你想要使用的。看一下下面的例子:



这里,在Python中 bool 是 int 的子类,isinstance(num, int)也被评估为True,这不是预期的行为。在这种特殊情况下,使用type是正确的方法。点击下方链接阅读有关这两种方法行为差异的更多信息。
https://stackoverflow.com/a/1549854/1088579



原文链接:
https://deepsource.io/blog/python-common-mistakes/

-------------------
1GB Python数据分析资料送给大家
长按识别下方二维码,并关注公众号,回复“PY”领取1GB Python数据分析资料


1.回复“PY”领取1GB Python数据分析资料

2.回复“BG”领取5GB 名企数据分析报告

【声明】内容源于网络
0
0
漫画数据分析
分享Excel、SQL、Python数据分析心得与方法
内容 224
粉丝 0
漫画数据分析 分享Excel、SQL、Python数据分析心得与方法
总阅读50
粉丝0
内容224