函数:是指实现某个功能的一段代码 使用函数的好处: 1.模块化程序设计 2.减少代码冗余 3.维护方便
函数的格式:
1)函数参数 定义:函数取得的参数是你提供给函数的值 参数分为: 形参:参数名称 实参:提供给函数调用的值 注意:形参和实参可以同名,但不一定是同一个对象,也可以不同名
分类: 1.按定义 必选参数-----在调用时必须要填 默认参数-----提供默认值,调用时可不填 可变长位置参数(*args) 可变长关键字参数(**args)
ps:函数相当于打包,*args和**args相当于拆包
2.按调用 位置参数----按参数顺序依次传递 关键字参数----按key依次传递 注意:若函数里两种参数都有,关键字参数要放在位置参数的后面,如 userinfo(18,"female",name="han")
参数定义的最佳方式:mysun(必选参数,*args,默认参数,**args)
参数的调用:mysun(位置参数,关键字参数)
2)函数return语句 作用:用来退出函数,函数遇到return就结束执行,函数默认返回None
3)匿名函数 定义:没有名字的函数,只能有一个表达式,不用写return 格式: 注意: 匿名函数可以设置默认参数,可变长参数 当函数只是实现简单且一次性使用时,可定义为匿名函数 把匿名函数作为返回值返回
4)递归函数 定义:在函数的定义中使用函数自身的方法 实现递归的条件: 出口条件,即递归“什么时候结束”,通常在递归函数的开始就写好 注意: 如果可以使用普通函数解决,尽量不要用递归,数据存放到堆栈中,递归次数多,会导致内存的消耗比较大
5)函数的参数传递 本质:传递的是引用 传递不可变对象: 如果参数是不可变对象,a和x之间相互独立,对x的操作不会影响引用a 传递可变对象: 如果传递的是可变对象,那么改变函数参数,有可能改变原对象 注意: 如果是传递可变对象,在定义参数时,尽量避免参数的默认值设置成一个可变对象
6)变量作用域 定义:变量起作用的范围,所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始 分类: 1.局部变量 2.全局变量 3.内建变量
global语句:为一个定义在函数外的变量赋值,在函数内使用 使用global语句可以清楚表明变量是在外面的块定义的 global语句被用来声明变量是全局的
命名空间:python使用命名空间记录变量,python中的命名空间就像是一个dict,key是变量的名字,value是变量的值
变量名解析:LEGB原则 LEGB作用域查找原则,当引用一个变量时,python按照以下顺序依次查找: 第一个能够完成查找的就算成功 变量在代码中被赋值的位置通常就决定了它的作用域
查看变量: locals()和globals()
7)文档注释 分类:单行注释、多行注释、特殊注释 特殊注释: #!/usr/bin/env python python告诉Linux去哪个路径下找python的翻译器 #--coding:utf-8-- 告诉python解释器,如何解释字符串中的编码类型
文档字符串是包、模块、类或函数里的第一个用三引号引起来的字符串
PS: 元组:a = (1,2,3...) 列表:b = [1,2,3...] 字典:c = {'x':1,'y':2}
sorted 排序函数
8)内建函数与工厂函数 函数与方法: 函数是大家的函数,方法是类的方法 与类和实例无绑定关系的function都属于函数(function) 与类和实例有绑定关系的function都属于方法(method)
内建:python已经建立好的,无需导入,直接调用 内建函数:pythonyi已经建好的函数 内建方法:一般是针对面向对象而言,是类的方法 内建方法就是指一个自带的对象所带的方法。如list的pop操作
工厂函数:指这些内建函数都是类对象,它们看上去像函数,实质上是类,当你调用它们时,实际上是生成了该类型的一个实例,就像工厂生产货物一样。 工厂函数主要与数据类型相关 int(), float(), complex(), bool() str(), bytes() : 字符型 list(), tuple():生成列表或者元组 dict(), set():生成一个字典或集合 slice():切片
常用内建函数: • input()、print():输入输出函数 • oct()、hex():转换函数 • chr()、ord():ASCII与字符转换 • abs(num)、pow()、round():数值运算函数 • isinstance():判断是不是实例 • id():求内存地址 • len():求长度 • sum():求和 • max():最大值 • min():最小值 • enumerate(iter) :接受一个可迭代对象作为参数,返回一个enumerate 对象
