首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程好习惯

新增了bytes类型,对应2.x版的八位串 6、面向对象 引入抽象基类 7、异常 所有异常都从BaseException继承,并删除了StardardError python2 try:...…… except Exception e: …… python3 try: …… except Exception as e: …… 8、其他 python2.x的xrange...()在python3.x名为range() file类被废弃 python2可以使用file(path)、open(path) 二、PEP8编码规范 网址: 英文教程:https://legacy.python.org...blog.csdn.net/ratsniper/article/details/78954852 1、代码编排 缩进4个空格,禁止空格与Tab混用 行长79,防止单行的逻辑过于复杂 if 1: pass 2、命名 除非在...lamdba函数,否则不要使用单字母的变量名,但是即使在lamdba函数变量名也要尽可能有意义 包名、模块名、函数名全部使用小写,单词使用下划线链接 类名、异常使用首字母大写的方法,异常名结尾加Error

21120

Python异常

当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 异常处理   Python捕捉异常可以使用try/except语句。...try/except语句用来检测try语句块的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。...StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError...(1)如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常); (2)如果在try...else语句后的语句(如果有else的话),然后控制流通过整个try语句; 触发异常   Python我们可以使用raise语句自己触发异常,语法格式如下: raise [Exception [, args

85710
您找到你想要的搜索结果了吗?
是的
没有找到

Python 异常处理总结

异常处理 捕捉异常可以使用try/except语句。...如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。...使用except而不带任何异常类型 你可以不带任何异常类型使用except,如下实例: ? 以上方式try-except语句捕获所有发生的异常。...但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有异常使用except而带多种异常类型 你也可以使用相同的except语句来处理多个异常信息,如下所示: ?...当在try抛出一个异常,立即执行finally块代码。finally块所有语句执行后,异常被再次提出,并执行except块代码。参数的内容不同于异常

1.1K60

异常--python异常处理

** DB API定义了一些数据库操作的错误及异常 Warning 当有严重警告时触发,例如插入数据是被截断等等。...如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。...以上方式try-except语句捕获所有发生的异常。...finally块所有语句执行后,异常被再次触发,并执行except块代码。 参数的内容不同于异常异常的参数 一个异常可以带上参数,可作为输出的异常信息参数。...该参数是可选的,如果不提供,异常的参数是"None"。 最后一个参数是可选的(在实践很少使用),如果存在,是跟踪异常对象。 实例 一个异常可以是一个字符串,类或对象。

2.8K20

最全Pycharm教程(2)——代码风格

4、聚焦PEP8代码风格检查然而,在默认情况下这些警告提醒是不可见的,所以首先需要做的就是提升它们的优先级以进行显示。...单击设置按钮,然后在Settings/Preferences对话框的 Inspections 页面,键入PEP8来找到所有相关选项,在对应的下拉菜单中选中warning选项:?...举个例子,如果你的拼写检查配置文件包含"Unresolved references"这条检查规则,同时你又使用了一条尚未进行import的符号,Pycharm就会用下划线标出无法解释的符号来提示你导入相关模块...我们需要分析判别式结果d,如果它是零或者正数,则正常求解方程的根;如果其为负数,我们需要抛出一个异常,Pycharm会如何帮助我们完成这个任务?...为了调用格式化操作,只需按下Ctrl+Alt+L快捷键,或者在主菜单单击Code→Reformat Code,此时我们惊奇发现所有PEP8类格式问题都已经消除。

2.7K20

python的异常处理

StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类...如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。...: 如果没有异常执行这块代码以上方式try-except语句捕获所有发生的异常。...finally块所有语句执行后,异常被再次触发,并执行except块代码。参数的内容不同于异常。----异常的参数一个异常可以带上参数,可作为输出的异常信息参数。...最后一个参数是可选的(在实践很少使用),如果存在,是跟踪异常对象。实例一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

1K40

Python 异常处理

如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。...,执行这块代码 ......................else: 如果没有异常执行这块代码 以上方式try-except语句捕获所有发生的异常。...try抛出一个异常,立即执行finally块代码。...finally块所有语句执行后,异常被再次触发,并执行except块代码。 参数的内容不同于异常。 ---- 异常的参数 一个异常可以带上参数,可作为输出的异常信息参数。...该参数是可选的,如果不提供,异常的参数是"None"。 最后一个参数是可选的(在实践很少使用),如果存在,是跟踪异常对象。 实例 一个异常可以是一个字符串,类或对象。

1K40

Python 3000字编程风格指南

防御编程风格 3 LBYL 防御编程风格 3.1 程序每次运行都要检查 3.2 很难一次考虑所有可能异常 3.3 代码的可读性下降 1 基本编程习惯 Python代码的编程习惯主要参考PEP8: https...而下面的代码,一旦从字典获取不存在的键,如果没有任何try保护,则程序直接中断在这里,表现出来的现象就是app直接挂掉或闪退,这显然非常不友好。...使用try和except这种防御风格,优点明显,try里只写我们的业务逻辑,except里写异常处理逻辑,几乎无多余代码,Python指南里也提倡使用这种风格。...'路径已存在') 3.2 很难一次考虑所有可能异常 很难一次性考虑到所有可能的异常,更让人头疼的事情是,一旦遗漏某些异常情况,错误经常不在出现的地方,而在很外层的一个调用处。...但是,如果用try-catch,那么try代码块里面可以只写程序的逻辑,在except里面处理所有异常

65210

Python自动化运维之异常处理

常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError...try..except..else 注意:except子句的数量没有限制,但使用多个except子句捕获异常时,如果异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。...]:     捕获异常并获取附加数据 except:     没有指定异常类型,捕获任意异常 else:     没有触发异常时,执行的语句块 4、try的工作原理 执行一个try语句时,python解析器会在当前程序流的上下文中作标记...如果try语句执行时发生异常,程序流跳回标记位,并向下匹配执行第一个与该异常匹配的except子句,异常处理完后,程序流就通过整个try语句(除非在处理异常时又引发新的异常)。 2....如果没有找到与异常匹配的except子句(也可以不指定异常类型或指定同样异常类型Exception,来捕获所有异常),异常被递交到上层的try(若有try嵌套时),甚至会逐层向上提交异常给程序(逐层上升直到能找到匹配的

1K30

Python编程的反模式

这个时候你可以嵌套整个列表解析,或者在列表解析多行使用循环: ? 使用列表解析: ? 注意:在有多个循环的列表解析,循环有同样的顺序就像你并没有使用列表解析一样。 2....一个不使用列表解析的合理的理由是你在列表解析里不能使用异常处理。 如果迭代中一些元素可能引起异常,你需要在列表解析通过函数调用转移可能的异常处理,或者干脆不使用列表解析。...如果你使用Pylint代码检查工具,将会警告使用可能没有定义的变量idx。 解决办法永远是显然的,可以在循环之前设置idx为一些特殊的值,这样你就知道如果循环永远没有执行的时候你将要寻找什么。...如果你不遵循PEP8,你应该有除“我只是不喜欢那样的风格”之外更好的理由。下边的风格指南都是从PEP8摘取的,似乎是编程者经常需要牢记的。...那么如何检查它呢? 如果你明确的想要测试None,而不只是测试其他一些值为False的项(如空容器或者0),可以使用: ?

1K30

Python编程的反模式

这个时候你可以嵌套整个列表解析,或者在列表解析多行使用循环: ? 使用列表解析: ? 注意:在有多个循环的列表解析,循环有同样的顺序就像你并没有使用列表解析一样。 2....一个不使用列表解析的合理的理由是你在列表解析里不能使用异常处理。 如果迭代中一些元素可能引起异常,你需要在列表解析通过函数调用转移可能的异常处理,或者干脆不使用列表解析。...如果你使用Pylint代码检查工具,将会警告使用可能没有定义的变量idx。 解决办法永远是显然的,可以在循环之前设置idx为一些特殊的值,这样你就知道如果循环永远没有执行的时候你将要寻找什么。...如果你不遵循PEP8,你应该有除“我只是不喜欢那样的风格”之外更好的理由。下边的风格指南都是从PEP8摘取的,似乎是编程者经常需要牢记的。...那么如何检查它呢? 如果你明确的想要测试None,而不只是测试其他一些值为False的项(如空容器或者0),可以使用: ?

1.4K70

PEP8规则及Pycharm应用

submitted +=1 x = x * 2 - 1 hypot2 = x * x + y * y c = (a + b) * (a - b) 对于初学者(例如我)来说,这些标准太多,在实际coding可能很难记住所有的...之前招聘爬虫工程师,会PEP8也会加分,所以学习下PEP8还是有帮助的。...命名 使用有意义的,英文单词或词组,绝对不要使用汉语拼音 package/module 名不要出现 - 各种类型的命名规范: ?...,英文不好全部写中文,否则更加看不懂 异常 不要轻易使用 try/except except 后面需要指定捕捉的异常,裸露的 except 会捕捉所有异常,意味着会隐藏潜在的问题 可以有多个 except...语句,捕捉多种异常,分别做异常处理 使用 finally 子句来处理一些收尾操作 try/except 里的内容不要太多,只在可能抛出异常的地方使用,如: # bad try:

1.4K50

使用sublime实现python代码补

而且我也不想舍弃sublime的码代码的流畅手感,因此就搜寻了下如何能在Sublime下完成自动补全的功能。 Sublime这么流行,插件这么多,答案当然是有的。那就是Anaconda。...这个功能好不好用智者见智仁者见仁吧,因为除了Error来说,警告和建议因为是参考PEP 8(默认开启)和PEP257(默认没有开启)标准来进行的,默认开启的PEP8是代码风格标准,所以动不动就会有警告,...我这里将UnusedImport取消注释掉了,因为我不想让Anaconda警告我哪些模块没有使用 anaconda_linting_behaviour:由于开启了anaconda_linter_phantoms...因此将这个选项设置为save-only,就是只有在保存的时候进行检查,另外还有一个选项是可以打开和保存的时候进行检查,我的想法是经常也要打开别人的python代码,别人可不一定按照PEP8来写,因此打开的话恐怕就是一大堆提示框...我后面的三个设置,如果不准备按照PEP8的标准来写代码的话完全可以选择禁止掉PEP8,这个是选项就是”pep8″,直接改为false就好了,或者说你只是想禁用掉PEP8的某一条规范,可以在”pep8_

1.4K10

pycharm 关掉syntax检查操作

大家在使用pycharm写代码的时候,肯定遇到过这种情况,满屏的波浪线。 其实pycharm这个功能的本意是好的,可以实现许多检查,让我们写出更健壮的代码。特别是对于大型的项目。...那么,如何去掉这些呢。 网上普遍的解决方法是设置highlight level,也就是右下角那个小医生的图标: ? 拖动到syntax,这样代码就清爽了很多。 但是这种方法治标不治本。...我们可以看到有许多检查的选项,我们只需要将不必要的选项去掉就可以了: 首先把pep8的这两个去掉: ? 再把spelling的这个去掉: ? 这样你就算用汉语拼音定义一个变量也没问题了。...如果你写try except的时候没有定义具体的异常类型,会报too broad expection clause: ? 把这个钩去掉: ? 如果没有使用函数的某个参数变量: ? 解决: ?...如果你没有使用一个包,会出现这种: ? 解决: ? 根据类似的思路,可以定制自己的inspections规则,即保证清爽,又保证实施了必要的检查

96420

Python编程的反模式

如果迭代中一些元素可能引起异常,你需要在列表解析通过函数调用转移可能的异常处理,或者干脆不使用列表解析。...如果你使用Pylint代码检查工具,将会警告使用可能没有定义的变量idx。 解决办法永远是显然的,可以在循环之前设置idx为一些特殊的值,这样你就知道如果循环永远没有执行的时候你将要寻找什么。...(例如:str.find [2]) 外作用域 Python程序员新手经常喜欢把所有东西放到所谓的外作用域——python文件不被代码块(例如函数或者类)包含的部分。...如果你不遵循PEP8,你应该有除“我只是不喜欢那样的风格”之外更好的理由。下边的风格指南都是从PEP8摘取的,似乎是编程者经常需要牢记的。...那么如何检查它呢?

1.1K60

PEP8编码规范,及开发的一些惯例和建

不规范的代码风格总是令人感到难受,检查会很困难。所以美观带来的是代码的【可读性】强,想一想你写的代码可读性非常高,是不是检查起来容易,维护起来也更加容易,所以可读性强带来的是代码的【可维护性】强。...定义一个字典 d=[ 1 , 3,5 ] return a,b , c def bar(x): if x%2==0 : return True 正确的代码编写 1 ''' 2 PEP8...适当添加空行 函数间:顶级函数间空2行,类的方法之间空1行 函数内:同一函数内逻辑块之间,空一行 文件结尾:留一个空行  注释 两点需要避免:①逐行添加注释②没有一个注释 行尾注释:单行逻辑过于复杂时添加...块注释:一段逻辑开始时添加 引入外来算法或者配置时须在注释添加源连接,标明出处 函数、类、模块尽可能添加docstring 命名 好的变量名 要能做到"词能达意" 除非在lambda函数,否则不要使用单字母的变量名...(即使是lambda函数的变量名也要尽可能的有意义) 包名、模块名、函数名、方法、普通变量名全部使用小写, 单词间用下划线连接 类名、异常使用 CapWords (首字母大写) 的方式, 异常名结尾加

41430

Java核心-异常处理

catch 块是否被执行,甚至在 try 块或 catch 块执行了 return 语句,finally 块总会被执行(除非在 try 块或会执行的 catch 块调用退出 JVM 的相关方法)...) 2)流程 try中发生异常,直接从异常处跳到catch语句进行捕获 try没有异常try块正常结束后跳过catch,执行catch后的语句(没有则结束) 3)输出异常信息方法 printStackTrace...throw用于方法体,要么使用try/catch捕获异常,要么throws异常。...注:因为自定义异常继承自 Exception 类,因此自定义异常包含父类所有的属性和方法。...2)陷阱(了解) assert关键字需要在运行时候显式开启才能生效,否则断言就没有任何意义。而现在主流的 Java IDE工具默认都没有开启-ea断言检查功能。

20721

java异常那些事

Java中所有异常类都继承自父类Throwable Throwable下有两个之类Error(错误)和Exception(异常) 错误:Error类以及他的子类的实例,代表了JVM本身的错误。...因此,程序员应该关注Exception为父类的分支下的各种异常类。 异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。...Java异常主要有两种:检查异常和非检查异常检查异常: Error和RuntimeException类及其之类,javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常 检查异常...我们来看一下运行结果: 除0异常 我是finally 我们看到我是finally正常输出 在异常处理不管前面try块还是catch块是否出现return语句,finally块的代码都会正常执行,...除非在前面遇到System.exit(1),这行代码会直接退出虚拟机,所以finally不会执行 如果finally也出现了return语句,那么finally的return语句会覆盖前面try

41410
领券