函数
函数的功能: 将代码中重复的一段逻辑代码提取出来,方便程序员对程序的维护。
-
创建一个函数
语法: def 函数名(): 一段逻辑代码
-
函数的调用
语法: 函数的名字()
-
参数
1. 形式参数:在创建函数的时候,定义的参数 语法: def 函数名(形式参数1,形式参数2,形式参数3,形式参数4 ......): 一段逻辑代码 形式参数:需要在逻辑代码中进行使用,本质上就是,实际参数所对应的对象的一个标签(给起了一个名字,变量) 2. 实际参数:在调用函数的时候,向函数中传递的参数 语法: 函数的名字(实际参数1,实际参数2,实际参数3,实际参数4........) 就目前: 定义几个参数,在调用的时候就需要传递几个参数
-
标识符
命名规范: 1. 包含字母数字下划线 数字不能开头 2. 字母区分大小写 3. 不能用关键字保留字命名 4. 不限制长度 习惯: 首字母小写, 后面的单词首字母大写(驼峰命名法) 比如: oneTwo
-
函数定义的位置
函数必须定义在调用之前
-
函数的返回值
1. 关键字 return 语法: def 函数名(形式参数1, 形式参数2,形式参数3...): 一段逻辑代码 return 返回值1,返回值2,返回值3.... 注意: 有多个数据进行返回的时候是将所有的返回值封装成一个元组进行返回,本质上返回值返回的只能是一个对象。 注意: 函数定义的逻辑代码中,return后面的语句不会再执行 例: 判断一个数是否为质数: # 判断一个数是不是质数 def fun(n): for i in range(2, int(n**0.5)+1): if not n%i: print(i) return False return True print(fun(11)) 注意: 一个函数中必须要有返回值,一但程序员没有写返回语句,那么Python编译器会为代码添加return None 语句
-
位置参数
参数(实际参数(实参)和形式参数(形参))和位置有关系的----参数是有顺序的 虚拟机,在实际参数上贴形式参数标签的时候,是有顺序的,按照一一对应的关系进行贴标签的。 def fun(a,b): return a/b fun(2,10) fun(10,2)
-
关键字参数
def fun(a,b): return a/b 注意: 在调用函数的时候,我们会把形式参数直接贴到数据对象上 fun(a = 10, b = 2) fun(b = 2, a = 10) 注意: 1.位置参数应该在关键字参数之前(函数调用的时候),如果实参中出现了关键字参数,PVM(Python虚拟机),会把后面的参数都默认成关键字参数 2.形式参数只能复制一次,不能被重复复制
-
默认参数
在创建函数的时候,将形式参数,贴到了一个固定的对象上,那么这个参数就是默认参数。(在调用该函数的时候,如果没有对该函数的这个参数进行传递,那么标签默认的就会贴到固定的对象上) def fun(a,b=1): print(b) return a/b fun(2) 注意: 在定义形式参数的时候,位置参数必须在默认参数之前
-
就关键字参数、 位置参数以及默认参数
位置参数: 是实际参数与形式参数,一一对应的关系 关键字参数: 是在调用函数的时候,直接将形式参数贴到指定的数据上 注意: 在调用的时候关键字参数必须在位置参数之后 默认参数:是在定义函数的时候,为某些参数设置了默认值 注意: 在定义的时候默认参数必须在位置参数以及关键字参数之后
-
可变长参数
1. 在定义函数的时候,进行形式参数的命名是,在某个参数的前面加‘*’,这个时候用户在调用函数的时候,对传递的参数就没有个数的显示了(按照位置参数进行传递) def fun(a,b,c, *d): print(type(d)) print(d) fun(1,2,3, 'a','b') 注意: ‘*’会将调用函数是多余的参数按照位置进行封装成元组并且将‘*’后面的标签贴到该元组上 2. 在定义函数的时候,进行形式参数的命名是,在某个参数的前面加‘**’,这个时候用户在调用函数的时候,对传递的多余的关键字参数,进行封装。 def fun(**d): print(type(d)) print(d) fun(a='b',c=1) 注意: ‘**’会在调用函数的时候将多余的关键字参数,封装成字典,变量名作为键,变量名所对应的对象作为值。
-
可变长参数
‘*’定义的形式参数,后面的参数默认的必须是关键字参数
-
变量的作用域
1. 局部变量 1) 在函数内部定义的变脸 2) 先定义后使用 3) 从定义开始到包含它的代码块结束(是他的作用范围,作用域) 2. 全局变量 1.在源文件中顶头定义的变量(没有任何缩进或者空格) 2. 作用范围: 目前是从定义开始至整个源文件结束。 注意: 如果局部变量和全局变量发生命名冲突,在函数内部首先访问局部变量,在外部,直接访问全局变量。 如何在函数内部对全局变量进行修改 关键字 global # 没有改变全局变量 a = 'Hello World' def fun(): a = 100 fun() print(a) # 将全局变量a在函数fun中进行修改 a = 'Hello World' def fun(): global a a = 100 fun() print(a)
-
函数的文档
文档注释: """三引号""" 查看函数的帮助文档方法: help(函数名) a = 'Hello World' def fun(a,b): '''返回两个参数的和''' return a+b help(fun)
-
函数的内嵌
函数的内嵌,就是在函数的内部定义一个函数