函数
函数是组合好的可以重复使用的用来实现单一或相关联功能的代码片段
作用
能提高应用的模块性和代码的重复利用率
函数的创建
第一函数的规则
1.函数代码块一def关键字开头后接函数标识符名称和圆括号‘’
2.所有传入的参数和自变量都必须在圆括号中可以在圆括号中定义参数
3.函数的第一行语句可以选择性使用文档字符串用于存放函数说明
4.return【表达式】结束函数选择性返回一个调用方不带表达式的return相当于返回None
语法
def 函数名参数列表
函数体
函数的调用
函数的参数
参数分类位置参数、序列参数、关键字参数、默认参数、字典关键字参数、综合传参
形参形式参数
在def定义函数是函数名后面的括号里的变量成为形式参数
实参
在函数调用时提供变量或称为实际参数
1.位置传参
定义
实际参数实参的对应关系与形式参数形参的对应关系是按位置来一次对应的
示例
def Student(name,age,sex):
print(‘姓名’,name)
print(‘年龄’,age)
print(‘性别’,sex)
Student(‘小明’,15,’男’)
说明
序列传参是序列拆解的位置将与形参一一对应
序列的位置信息对应相应的形参位置
2.序列传参
序列传参是指在函数调用周期中用*将序列拆解后按位置进行传递的传参方式
3.默认传参
调用函数时如果没有传递参数就会使用默认参数
使用默认参数就是在定义函数时给参数一个默认值如果没有给调用的函数的参数赋值调用的函数就会使用默认的这个默认值
注意
当对默认参数传值时函数执行时调用的是我们传入的值
默认参数一定要放在非默认参数的后面
4.关键字参数
示例
def Student(name,age,sex):
print(‘姓名’,name)
print(‘年龄’,age)
print(‘成绩’,score)
Student(‘小明’,age15,score20)
5.字典关键字传参
定义
是指实参为字典将字典用‘**’拆解后再进行关键字传参的传参方式
说明
字典的键名和形参名必须一致
字典的键名必须为字符串标识符
字典的键名要在形参中存在
示例
def Student(name,age,sex):
print(‘姓名’,name)
print(‘年龄’,age)
print(‘成绩’,score)
#Student(‘小明’,age15,score20)
D {‘name’:’小明’,’age’:15,’score’:20}
Stuident(**D)
6.函数的综合传参
定义
函数的传参方式在能确定形参能唯一匹配到相应实参的情况下可以任意组合
说明
位置传参序列传参要在关键字传参字典关键字传参的左侧
def Myfun1(a,b,c)
print(a,b,c)
Myfun1(100,*[200,300])
Myfun1(*(100,200),300)
Myfun1(100,c300,b200)
Myfun1(100,**(‘c’:300,’b’:200))
函数分类
1.有参函数与无参函数
示例
总结函数内可变的内容可以用参数替代不可变内容不能用参数替代
2.有返回值的函数与没有返回值的函数
练习
写一个函数minmax(a,b,c)有三个参数返回这三个参数中的最小值和最大值
要求形成元组最小值在前最大值在后
1 defminmax(a,b,c):2 xmin(a,b,c)3 ymax(a,b,c)4 returnx,y5 dlminmax(50,20,15)6 print(dl)
1. 星号元组形式
语法
def 函数名(*元组形参名)
语句块
或
def 函数名(*args,命名关键字形参)
作用
强制所有的参数都必须
2.命名关键字形参
语法:
def函数名(*,命名关键字形参)
语句块
或 def 函数名(*args, 命名关键字形参):
作用:
强制所有的参数都必须用关键字传参或字典关键字传参
3.双星号字典形成
语法
Def 函数名**字典形参名
语句块
作用
收集多余的关键字传参
说明
字典形参名通常命名为‘kwargs’
函数的参数说明
位置形参默认参数星号元组形参双星号字典形参可以混合使用函数形参自左至右的顺序为
位置形参
星号元组形参
命名关键字形参
双星号字典形参
函数的不定长参数
星号元组形参双星号字典形参
说明
可以接受任意的位置传参和关键字传参
练习
写一个函数mymax类似与内置函数max
详见
>>>help(max)
仿造max写一个mymax函数功能与Max完全相同
1 def mymax(a,*args):2 if len(args)0: #实参个数等于1
3 zhemaxa[0]4 for x ina:5 if x>zhemax:6 zhemaxx7 returnzhemax8 else:9 zhemaxa10 for x inargs:11 if x>zhemax:12 zhemaxx13 returnzhemax14 print(mymax([6,8,35,5]))15 print(mymax(100,200))
变量作用域
作用域变量的命名空间
最基础的两种变量作用域局部变量和全局变量
1.局部变量
定义
1.定义在函数内部的变量被称为局部变量函数的形参也是局部变量
2.局部变量只能在函数内部使用
3.局部变量在函数调用时才能创建在函数调用之后就会自动销毁
2.全局变量
定义
定义在函数外部模块内部的变量称为全局变量
全局变量所有函数都可以直接访问单函数不能对其进行赋值
3.globals()/locals()函数
globals()
返回当前全局作用域内变量的字典
locals()
返回当前局部作用域内变量的字典
4.函数变量
函数名是变量它在def语句创建函数时绑定个函数
一个函数还可以作为另一个函数的实参进行传递
函数还可以作为另一个函数的返回值
5.python的作用域
作用域也叫名字空间是访问变量是查找变量名的范围空间
L E G B
L 局部作用域(函数内)
E 外部嵌套函数作用域
G 函数定义所有模块(文件作用域)
B Python内建模块的作用域
6.global语句
1.global语句
作用
1、告诉解释执行器globa1语句声明个或多个变量这些变量的作用域为模块级的作用域也称作全局变量。
2、全局声明(globa1)将赋值语句操作的变量映射到模块文件内部的作用域
语法
global 变量1,变量2 ... ...
说明
1.全局变量如果要在函数内部被赋值则必须经过全局声明(否则会被认为创建局部变量)
2.全局变量在函数内部不经过声明就可以直接访问(变量已经存在并关联一个对象)
3.不能先声明局部变量再用global声明为全局变量 此做法不符合规定
4.globa1变量列表里的变量名不能出现在此作用域的形参列表里异常操作
异常操作
1.错误的定义和特征
什么是错误:错误是指由于逻辑或语法等导致一个程序无法正常执行的问题
错误的特征:有些错误无法预知
2.异常的定义
异常是程序错误是表示的一种状态
当异常发生时程序不会再向下执行而转去调用此函数的地方待处理此错误并回去为正常状态
语句
1.try
1.try-execpt语句
try
可能触发异常的语句
execpt 错误类型1 [as 变量1]
异常处理语句1
except 错误类型2 [as 变量2]:
异常处理语句2
except(错误类型3, 错误类型4, ... ...)[as 变量 3]
异常处理语句3
except :
异常处理语句(其他)
else:
未发生异常的语句
finally:
最终语句
作用
尝试捕获异常将程序由异常状态转为正常状态并正常执行
示例
try – except语句说明
1.as子句是用于绑定错误对象的变量可以省略
2.except子句可以有一个或多个但至少要有一个
3.else子句最多只能有一个也可以省略不写
4.finally子句最多只能有一个也可以省略不写
5.else子句的语句将在try语句没有发生异常时被执行
6.finally子句的语句在任何情况下都会被执行