一、函数的定义
在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数
  
 二、函数的调用
  
  格式:
  
 def 函数名 ():
 执行语句
 函数名 () # 调用函数
  
 
 三、函数参数
  
 
 1、 位置参数
  
 格式:
  
 def 函数名 ( 参数 1 , 参数 2 ):
 代码块
 函数名 ( 值 1 , 值 2 )
  
小可爱请看:
 定义时小括号中的参数,用来接收参数用的,称为 “形参”
 调用时小括号中的参数,用来传递给函数用的,称为 “实参”
 2、 关键字参数
  
 格式:
  
 def 函数名 ( 参数 1, 参数 2):
 代码块
 函数名 ( 参数 1= 值 1, 参数 2= 值 2)
  
 
 小可爱请看;
 参数调用时,可以改变传参顺序,如果有位置参数需要位置参数放在关键字参数前面
 
 小可爱请看;
 如果关键字参数传参要在位置参数之前,将会报错
 3、 缺省参数(在形参中默认有值的参数,称之为缺省参数)
  
 案例:调用函数时,缺省参数的值没有传入
  
 
 案例:调用函数时,缺省参数的值传入
  
 
 4、 不定长参数(有时可能需要一个函数能处理比当初声明时更多的参数 , 这些参数叫做不定长参数,声明时不会命名。)
  
 格式 :
  
 def printinfo ( * args , ** kwargs ):
 print ( "args:" , args )
 print ( "kwargs:" , kwargs )
 printinfo ( 参数 )
  
 小提示哦!
 加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
 而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典
 不定长参数 * args
  
args 不能接收 key=value 类型的参数
  
 
 5、 参数位置顺序
  
 格式:
  
 def fun ( 位置参数 , * args , 缺省参数 , ** kwargs ):
 代码块
 fun ( 参数值 )
  
 
 小提示哦!
 •如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有
 **kwargs的话,**kwargs必须是最后的
  
 五、函数返回值
  
 格式:
  
 def sum ():
 代码块
 return 值
 sum ()
  
1、 多个 return
  
 注意:一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个函数就会结束 了,因此后面的return没有什么用处
  
 2、 返回多个数据
  
总结:return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返c
  
 六、 函数类型
  
 分类:
  
 1. 无参数,无返回值
 2. 无参数,有返回值
 3. 有参数,无返回值
 4. 有参数,有返回值
  
 1、 无参数,无返回值的函数
  
 此类函数,不能接收参数,也没有返回值,一般情况下,打印提示灯类似的功能,使用这类的函数
2、 无参数,有返回值的函数
  
 • 此类函数,不能接收参数,但是可以返回某个数据,一般情况下,像采集数据,用此类函数
 
 3、 有参数,无返回值的函数
  
 • 此类函数,能接收参数,但不可以返回数据,一般情况下,对某些变量设置数据而不需结果时,用此类函数
 4、 有参数,有返回值的函数
  
 • 此类函数,不仅能接收参数,还可以返回某个数据,一般情况下,像数据处理并需要结果的应用,用此类函数
 
 七、函数的嵌套
  
 一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用
  
 注意:如果函数 A 中,调用了另外一个函数 B ,那么先把函数 B 中的任务都执行完毕之后才会回到上次 函数 A 执
 行的位置
  
 八、 变量
  
 1、 局部变量(局部变量,就是在函数内部定义的变量 )
  
 约束 : 其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
  
 注意 : 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
 当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
  
 2、 全局变量(在函数外边定义的变量叫做全局变量 )
  
 约束:全局变量能够在所有的函数中进行访问
  
 3、 全局变量和局部变量名字相同
  
 注意 : 函数中的变量修改不会导致全局变量改变
  
 4、全局变量的修改
  
 注意 : 在函数中出现 global 全局变量的名字 那么这个函数中即使出现和全局变量名相同的变量名 = 数据也理解为对全局变量进行修改,而不是定义局部变量
  
 注意!!!
  
 定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码能够执行,需要调用它
 调用函数很简单的,通过 函数名() 即可完成调用
 每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了
 当然了如果函数中执行到了return也会结束函数
  










