一、函数
1.函数的定义
所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用
函数的调用包括两个步骤:
1.定义函数一一封装独立的功能
2.调用函数一一享受封装的成果函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的重用
2.如何定义函数
1.def 是英文define(定义)的缩写
2.函数名称应该能够表达函数封装代码的功能,方便后续的调用
3.函数名称的命名应该符合标识符的命名规则可以由字母、下划线和数字组成 不能以数字开头,不能与关键字重名
3.函数的调用
调用函数很简单,通告函数名() 即可完成对函数的调用
4.
5.函数的文档注释
a.在开发中,如果希望给函数添加注释,应该在定义函数的下方,使用连续的三对引号
b.在连续的三对引号之间编写对函数的说明文字
c.在函数调用位置,使用快捷键 Ctrl+Q 可以查看函数的说明信息
注释:1.因为函数体相对比较独立,函数定义的上方,应该和其他代码(包括注释)保留两个空行
2.格式不规范,可以按ctrl+alt+L快捷键调整格式
6.函数的参数
在函数名的后面小括号内部填写参数
多个参数之间使用,分离
7.函数的作用
函数,把具有独立功能的代码块组织为一个小模块,在需要的时候调用函数的参数、增加函数的通用性,针对相同的数据处理逻辑、能够适应更多的数据
1.在函数内部,把参数当做变量使用,进行需要的数据处理
2.函数调用时,按照函数定义的参数顺序、把希望在函数内部处理的数据通过参数传递
8.形参和实参
形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用(类型上的参数,没有实际的值)
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的(具有实际意义的值)
9.函数嵌套调用
一个函数里面又调用了另外一个函致,这就是函数嵌套调用
如果函数 test2 中,调用了另外一个函数 test1
那么执行到调用 test1 函数时,会先把函数test1中的任务都执行完才会回到 test2 中调用函数 test1 的位置,继续执行后续的代码
10.函数的递归
a.函数调用自身的编程技巧称为递归
b.递归函数的特点:
一个函数内部调用自己
函数内部可以调用其他函数,当然在函数内部也可以调用自己
c.代码特点
函数内部的代码是相同的,只是针对参数不同,处理的结果不同
当参数满足一个条件时,函数不再执行,通常被称为递归的出口,否则会出现死循环
二、内部函数
a.在函数内部定义另一个函数,也就是函数的嵌套
b.在外部函数的作用域内,外部函数可以随意调用内部函数
c.由于内部函数的整个定义过程都在外部函数中,所以出了外部函数就无法再被调用了
d.内部函数的特点:
1.可以访问外部函数的变量
2.内部函数可以修改外部函数的可变类型的变量
3.函数内部修改全局变量,要加global变量名,内部函数要使用外部函数的不可变类型的变量的时候要加nonlocal
4.locals() 查看本地变量有哪些,以字典的形式输出
三、闭包
如果在一个内部函数里引用了外部函数的变量,此时这个内部函数就被称为闭包
条件 1.在外部函数中定义了内部函数
2.外部函数有返回值
3.返回的值是:内部函数名(不加括号)
4.内部函数引用了外部函数的变量值
# 符合这些条件的就是闭包
四、异常
1.概念
程序在运行时,如果 Python解释器 遇到 一个错误,会停止程序的执行,并且提示一些错误信息。这就是异常
程序停止执行并且提示错误信息 这个动作,我们通常称之为:抛出(raise)异常
程序开发时,很难将所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性
3.异常类型
4.异常捕获(简单的捕获异常语法)
a.程序在运行时,如果对某些代码的执行不能确定是否正确,可以增加 try 来捕获异常
b.捕获异常最简单的语法格式:
c.错误类型捕获
1)在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就需要捕获错误类型了
语法格式:
2)当Python 解释器抛出异常时,最后一行错误信息的第一个单词,就是错误类型
d.捕获未知错误
在开发时,要预判到所有可能出现的错误,还是有一定难度的
如果希望程序无论出现任何错误,都不会因为 Python 解释器抛出异常而被终止,可以增加一个except
e.完整的异常语法
f.异常的传递
异常的传递:当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方
如果传递到主程序,仍然没有异常处理,程序才会被终止
注释:1.在开发中,可以在主函数中增加异常捕获
2. 而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中
3.这样就不需要在代码中,增加大量的异常捕获,能够保证代码的整洁
g.抛出raise异常
1.在开发中,除了代码执行出错 Python 解释器会抛出异常之外
2.还可以根据应用程序特有的业务需求主动抛出异常
注释:当前函数只负责提示用户输入密码,如果密码长度不正确,需要其他的函数进行额外处理
因此可以抛出异常,由其他需要处理的函数捕获异常
3.Python中提供了 一个Exception 异常类
在开发是,如果满足特定业务需求时,希望抛出异常,可以:
创建一个Exception 的对象
使用raise关键字抛出异常对象
五、集合
1.定义
某些指定的对象集在一起就成为一个集合,其中每一个对象叫元素.
2.格式
集合名 = {元素1,元素2,...}
3.a.集合是无序的-> 不支持下标索引
b.集合是可变的数据类型
c.集合中的元素是唯一的,集合一般用于元组或者列表中的元素去重
d.定义一个空的集合 my_set = set()
注意: my_set = {} 这样的写法为一个空字典
4.集合的操作
a.增加元素
b.删除元素
.remove() 如果元素存在则删除,不存在则报错:KeyError:
.pop() 随机删除
.clear() 清空集合
.discard() 类似于remove(),移除不存在的元素的时候不会报错
c.其他操作
5.交集和并集
a.差集(-)
项在前一个集合中,但不在后一个集合中
b.交集(&)
c.并集(|)
d.对称差集(^)
项在前一个集合或后一个集合中 但不会同时出现在二者中
6.可变、不可变及类型转换
不可变类型,内存中的数据不允许被修改
数字类型 int bool float,complex,long(2.x)
字符串 str
元组 tuple
可变类型,内存中的数据可以被修改
列表 list
字典 dict
集合/frozenset()除外,frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素
注释:1.可变类型的数据变化,是通过方法来实现的
2.如果给一个可变类型的变量,赋值了一个新的数据,引用会被修改
变量不再对之前的数据引用,变量改为对新赋值的数据引用
3.字典的Key只能使用不可变类型的数据
7.数据类型转化
原文:https://www.cnblogs.com/gg-nly/p/14579948.html