python07_函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python07_函数相关的知识,希望对你有一定的参考价值。

函数:是指实现某个功能的一段代码
使用函数的好处:
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 排序函数
技术图片

以上是关于python07_函数的主要内容,如果未能解决你的问题,请参考以下文章

翻译:《实用的Python编程》01_07_Functions

翻译:《实用的Python编程》07_03_Returning_functions

翻译:《实用的Python编程》07_00_Overview

翻译:《实用的Python编程》07_01_Variable_arguments

翻译:《实用的Python编程》07_04_Function_decorators

python基础07