函数
所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用
定义函数时,函数的先后顺序不重要,重要的是 函数在什么位置被调用
创建函数
def 函数名(参数列表): # 具体情况具体对待,参数可有可无 """函数说明文档字符串""" 函数封装的代码 ……
函数名称的命名规则
可以由 字母、下划线 和 数字 组成
不能以数字开头
不能与关键字重名
函数的形参和实参
形参:定义 函数时,小括号中的参数,是用来接收参数用的,在函数内部 作为变量使用
实参:调用 函数时,小括号中的参数,是用来把数据传递到 函数内部 用的
函数的返回值
返回值 是函数 完成工作后,最后 给调用者的 一个结果使用 return 关键字可以返回结果
也可以 使用变量 来 接收 函数的返回结果
调用函数
使用一对圆括号() 调用函数,如果没有圆括号,只是对函数的引用
任何输入的参数都是必须放置在括号中
关键字参数
这种理念是 让调用者通过函数调用中的参数名字来区分参数
这种规范允许参数不按顺序
位置参数应写在关键字参数前面
匿名函数
取代return语句
一个完整的 lambda "语句"代表了一个表达式,这个表达式定义体必须和声明放在同一行
filter() 函数: 对数据进行过滤
map() 函数: 对每个数据进行计算,不过滤
变量赋值
1. python支持链式多重赋值
例如: x=y=10
2. 给列表使用多重赋值时,两个列表同时指向同一个列表空间,任何一个列表改变,另外一个随着改变
例如: a=b=[1,2] b=[-1]=3 a=[1,3]
3. python 的多元赋值方法
例如: a,b=10,20 c,d='mn' e,f=(100,200) m,n=['b','a']
4.在python中,完成两个变量值的互换
例如: a,b = 100,200 a,b=b,a a=200 b=100
变量作用域
全局变量
1.全局变量的使用 整个程序都可以使用
2.全局变量的一个特征是除非被删除掉,否则他们会存活到脚本运行结束,且对于所有的函数,他们的值都是可以被访问的
局部变量
1.局部变量只是暂时的存在,仅仅只依赖于定义他们的函数现阶段是否处于活动,局部变量只在函数内部起作用
2.如果局部变量与全局变量有相同的名称,那么函数运行时,局部变量的名称将会把全局变量的名称遮盖住
global 语句:声明局部变量为全局变量
查找变量或函数的顺序 临近原则:
首先在函数的内部去查找
函数内部没有,然后去全局去查找,看是否定义
全局也没有,最后会去内建函数中查找
生成器
Python 使用生成器对延迟操作提供了支持。所谓延迟操作,是指在需要的时候才产生结果,而不是立即产生结果
生成器函数:
1.常规函数定义,但是,使用 yield 语句而不是 return 语句返回结果
2.yield 语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行
3.生成器的唯一注意事项就是:生成器只能遍历一次
自定义生成器函数的过程
1.在函数内部,有很多 yield 返回中间结果;
2.程序向函数取值时,当函数执行到第1个yield时,会暂停函数运行并返回中间结果;
3.当主程序再次调用函数时,函数会从上次暂停的位置继续运行,当遇到第2个yield,会再次暂停运行函数并返回数据;
4.重复以上操作,一直到函数内部的yield全部执行完成为止
合法标识符
1.第一个字符必须是 字母或下划线 _
2.剩下的字符可以是字母和数字或下划线
3.大小写敏感
关键字
关键字列表和 iskeyword() 函数都放入了 keyword 模块以便查阅
内建函数
builtins 模块中包含str()、int()、dir()、id()、type(),max(),min(),len() 等,而 builtins 模块默认 在Python环境启动的时候就自动导入
startswith('*'):判断字符串是否以*开头
endswith('*'):判断字符串是否以*结尾
islower(): 是否全为小写字母
isupwer(): 是否全为大写字母
strip(): 去掉左右两边的空白字符
lstrip():去掉左边的空白字符
rstrip():去掉右边的空白字符
split(‘.’): 切割操作 以.切割字符串
'-'.join: 拼接操作 以-作为连接符
字符串 | 操作符
比较操作符:字符串大小按 ASCII 码值大小进行比较
切片操作符:[ ]、[ : ]、[ : : ]
成员关系操作符:in、not in
格式化字符
可以传入任意类型的数据,如 整数、浮点数、列表、元组甚至字典,都会自动转成字符串类型
格式化字符 | 转换方式 |
%s | 优先用str()函数进行字符串转换 |
format 格式化输出
format() 功能更强大,该函数把字符串当成一个模板,使用大括号 {} 作为特殊字符代替 %
例如: print("今天是{}的{}生日会".format("帅哥", 18))
结果: 今天是帅哥的18生日会
异常处理
异常是因为程序出现了错误,经过我们的处理可以让程序正常执行后面的代码的行为,这个行为又分为两个阶段:
1.首先是引起异常发生的错误
2.然后是检测(和采取可能的措施)阶段
语法如下:
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except (错误类型2, 错误类型3):
# 针对错误类型2 和 3,对应的代码处理
pass
except Exception as result:
print("未知错误 %s" % result)
Python 中的异常
KeyboardInterrupt Ctrl + C,会产生用户中断执行错误 EOFError Ctrl + D,会产出此错误 Exception 捕获未知错误 ValueError 无效的输入错误 ZeroDivisionError 无效的输入错误
else 子句
在 try 范围中没有异常被检测到时,执行 else 子句 反之,则不执行
finally子句
finally 子句是 无论异常是否发生,是否捕捉都会执行的一段代码
使用finally 可以保证文件总是能正常的关闭
自定义异常
抛出异常—raise
Python 中提供了一个 Exception 异常类
在开发时,如果感觉这段代码会出现错误,希望 抛出异常,可以:
创建 一个 Exception 的 对象 使用 raise 关键字 抛出 异常对象