码迷,mamicode.com
首页 > 编程语言 > 详细

python07_函数(1)

时间:2020-06-11 10:24:37      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:mic   操作   mys   none   结束   成功   key   linu   模块化   

函数:是指实现某个功能的一段代码
使用函数的好处:
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_函数(1)

标签:mic   操作   mys   none   结束   成功   key   linu   模块化   

原文地址:https://blog.51cto.com/13603998/2503450

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!