1、if语句的另一种写法

expression1 if boolean_expression else expression2

boolean_expression为true时使用expression1,否则用expression2。常用于默认值的设定。

2、循环结构

while和for循环末尾都可以再加一句else语句。只要循环正常终止,else语句就会得到执行,但若由于break或返回语句,以及产生异常导致跳出循环,else语句则不会执行。

3、异常处理完全模块

try:  suite1

except exception_group1 as varialble1:   suite2     #as为可选,如果有,variable中则存储了该异常。

except exception_group2 as variabble2

else: suite3

finally:    suite4

如果try的suite1正常执行完毕则会执行else的内容。如果发生异常则不执行。

finally的suite4无论前边发生什么都会被执行。即使发生发生的异常在except中找不到相匹配的项,也会执行了finally 再终止程序。

4、异常体系常用分支

Exception:

  ArithmeticError

  EnvironmentError:

    IOError

    OSError

  EOFError

  LookupError:

    IndexError

    KeyError

  ValueError

Exception属于BaseException的子类,BaseException属于object的子类。

异常处理中会由上到下的读取except,如果异常与之匹配,则停止继续向下检索。所以为了使异常反应得更具体,一般将最小的子类放在最前边。

产生异常:   raise exception(args)

raise exception(args) from original_exception

>自定义异常:

class exceptionName(baseExceiption): pass

当在语句中想要在某处产生这个异常时就用raise exceptionName()

多个异常也可放在一起(用isinstance()函数进行区分):

except (InvalidEntityError,InvalidTagContentError) ar err:

if isinstance(err,InvalidNumericEntityError):

err="invalid numeric entity"

elif isinstance(err,InvalidAlphaEntityError):

err="invalid alphabetic entity"

5、自定义函数

格式:

def functionName(arguments):

  suite

包括:全局函数、局部函数、lambda函数(λ)、方法。

调用一个函数时必须给定全部参数值(如果函数需要参数的话且未指定默认值),不然会产生一个TypeError异常。

调用函数时的参数传递不一定严格按照函数定义时的参数顺序,也可以用name=value的方式进行个别参数的指定传递。

也可以用*做为一个函数的参数,用于表示*位置之后不应该再出现位置参数,否则会产生一个TyepeError。样:def a(a,*,b=1):pass     a(1,2)是错误的调用法,因为它只接受一个位置参数。

**也可被称为映射拆分操作符,其作用类似于*对拆分序列类型数据。

6、全局范围的变量(global)

当一个函数用到一个变量,此变量却不在函数内部,那么此变量就是全局变量,在调用这个函数时使用这个变量就必须用global进行声明(global xx),不然此变量就会一直是原始的值,而不是你想要的值。

对于存在于函数之内的函数欲使用上一层函数的变量则使用nonlocal来声明。否则同全局变量一样只能使用不能改变。

7、lambda函数

格式 lambda parameter:expression

parameter是可选的,如果提供,通常以逗号分隔。expression不能包含分支或循环语句,可以包含条件表达式,也不能包含return。因函数本身相当于一个有返回计算表达式结果的匿名函数。如果expression是一个元组,就需要用“()”括起来。

例:area=lambda b,h:05*b*h  ;调用方法:area(1,2)

常用于sort表达式中的key(例:elements.sort(key=lambda e:(e[1],e[2]));忽略第一项);

以及默认字典的默认值设置(例:rstr=collections.defaultdict(lambda:"No message available")     )

8、断言assert:

格式     assert boolean_expression,optional_exprssion

如果boolean_expression结果为False,就产生一个AssertionError,如果给了可选的optional_exprssion,就表达出来。在最后运行整下程序不想执行assert语句时就用指令-O (例:python -O promgramname.py)来实现。

Python3控制结构与函数的更多相关文章

  1. python3 的 round 函数的 练习

    python3 的 round 函数感觉很别扭,其运算结果与习惯不相符.特记录下来: 代码 ''' python 3的 round 函数 是"四舍六入五成双"的 https://w ...

  2. Scala学习(二)--- 控制结构和函数

    控制结构和函数 摘要: 本篇主要学习在Scala中使用条件表达式.循环和函数,你会看到Scala和其他编程语言之间一个根本性的差异.在Java或C++中,我们把表达式(比如3+4)和语句(比如if语句 ...

  3. python3内置函数大全(顺序排列)

    python3内置函数大全 内置函数 (1)abs(),   绝对值或复数的模 1 print(abs(-6))#>>>>6 (2)all() 接受一个迭代器,如果迭代器的所有 ...

  4. Scala的控制结构和函数

    控制结构和函数 先看以下简单的一个条件表达式的demo object TestConditional { def main(args: Array[String]): Unit = { // scal ...

  5. Python3.x:函数定义

    Python3.x:函数定义 1,函数定义: def 函数名称([参数1,参数2,参数3......]): 执行语句 2,实例一(不带参数和没返回值): def helloWorld(): print ...

  6. python3内置函数大全

    由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码:        https://github. ...

  7. python3入门之函数

    相信大家学习过其他语言,懂得函数的作用.简单的说函数最好的作用就是可以使程序变得懒惰.python作为后起之秀,当然也会拥有函数这个有用的东西: 创建函数 使用def语句即可创建函数,如创建一个用来生 ...

  8. 2.scala控制结构、函数、异常处理

    2.scala控制结构.函数.异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本 a:focus { outline: thin dotted #333; outline: ...

  9. Python3内置函数、各数据类型(int/str/list/dict/set/tuple)的内置方法快速一览表

    Python3内置函数 https://www.runoob.com/python3/python3-built-in-functions.html int https://www.runoob.co ...

随机推荐

  1. js事件中的event对象

    addEvent(oDiv,"click",function(event){ console.log(event.bubbles+"事件是否冒泡"); cons ...

  2. 集群/分布式环境下5种session处理策略

    转载自:http://blog.csdn.net/u010028869/article/details/50773174?ref=myread 前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访 ...

  3. 016 多对多关联映射 单向(many-to-many)

    一般的设计中,多对多关联映射,需要一个中间表 Hibernate会自动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联 多对多的关联映射,在实体类中,跟一对多一样,也是 ...

  4. 开涛spring3(7.5) - 对JDBC的支持 之 7.5 集成Spring JDBC及最佳实践

    7.5 集成Spring JDBC及最佳实践 大多数情况下Spring JDBC都是与IOC容器一起使用.通过配置方式使用Spring JDBC. 而且大部分时间都是使用JdbcTemplate类(或 ...

  5. java 线程方法join的简单总结

    虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结. 一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间 ...

  6. Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6878529.html 前面有讲到Spring+SpringMVC+MyBatis深入学习及搭建(三)——My ...

  7. JS中Node节点总结

    Node的三个基本属性: 1.nodeType:表明节点类型,1是元素节点,3是文本节点. 2.nodeName:  表明节点名称,元素节点为标签名,文本节点为#text. 3.nodeValue:表 ...

  8. socket获取百度页面

    import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav ...

  9. 百度导航试用 vs 高德导航

    听说百度导航免费了,下载试用了一下: HUD模式不错,但是需要一个手机支架或挂钩.尤其是HUD景象模式,夜间把手机平放,通过前挡风玻璃反射看.这个功能有点乔布斯的感觉了. 不过路径规划还差一点,和凯立 ...

  10. go的基本概念

    go的基础结构主要由下面的几个部分组成 1:包的声明 2:引入包 3:函数 4:变量 5:语句表达式 6注释 package main import "fmt" func main ...