python中clear函数_04-Python函数

一、简介

函数是可重用的程序代码块。函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。

函数用关键字def来定义,def关键字之后跟一个函数标识符名称。然后跟一对圆括号,圆括号中可以包括一些变量名,然后以冒号结束。如下所示:

def 函数名([参数列表]) :

函数体/若干语句

defnum(a, b):return a +bprint(num(10, 5))

执行结果为:

15

在这个函数中,我们创建了一个名为num的函数,并且给了两个变量a和b,最后返回a和b的和。在调用时,a和b的值不同则返回的和也会改变。

函数代表一个个任务和功能,使用函数可以减少代码的重复,从而提高效率。

二、函数的参数

函数取得的参数是我们提供给函数的值, 一般分为实际参数和形式参数,我们一般叫做实参和形参,形参是在定义函数时使用的参数,形式参数的命名要符合标识符的命名规则。实际参数是调用函数时传递的参数,如下例子中,a和b叫做形式参数,10和20叫做实际参数。

defnum(a, b):print(a +b)

num(10, 20)

三、全局变量和局部变量

全局变量:

1. 在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。

2. 全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。

3. 全局变量一般做常量使用。

4. 函数内要改变全局变量的值,使用global 声明一下。

局部变量:

1.在函数体中(包含形式参数)声明的变量。

2.局部变量的引用比全局变量快,优先考虑使用。

3.如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量。

a = 20

deffun():

a= 2

print(a)

fun()print(a)

运行结果:

在这个函数中调用函数时,第一次输出的a 是局部变量的a,在全局输出时输出的a是全局变量的a。如果要在函数块中使用全局变量则要使用global完成这一功能,如下所示:

a = 20

deffun():globalaprint(a)

a= 5

print(a)

fun()

输出结果:

在第一个变量a中,使用global声明,因此输出结果为全局变量a=20,第二次输出则是局部变量a=5。

局部变量的查询和访问速度比全局变量快,优先考虑使用,全局变量容易导致不知道变量出错,所以应该尽量少使用全局变量。

nonlocal 用来声明外层的局部变量。

global 用来声明全局变量。

四、命名参数

按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。

defnum(a,b,c):print(a,b,c)

num(1,2,3)

num(a=4, b=6, c=5)

在上述例子中,num(1,2,3)叫做位置参数,即按照位置来传递参数,num(a=4, b=6, c=5)叫做命名参数。

五、可变参数

可变参数指的是“可变数量的参数”。分两种情况:

1. *param(一个星号),将多个参数收集到一个“元组”对象中。

2. **param(两个星号),将多个参数收集到一个“字典”对象中。

def fun(a,b,*c,**d):print(a,b,c,d)

fun(1,2,3,4,5,six=6,seven=7)

输出结果:

在这个函数中,1和2分别传递给a和b,3,4,5则作为元组传递到可变参数c中,6,7以字典形式传递到d中。

五、LEGB 规则

Python 在查找“名称”时,是按照LEGB 规则查找的:

Local-->Enclosed-->Global-->Built in

1.Local 指的就是函数或者类的方法内部

2.Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)

3.Global 指的是模块中的全局变量

4.Built in 指的是Python 为自己保留的特殊名称。

如果某个名称映射在局部(local)命名空间中没有找到,接下来就会在闭包作用域

(enclosed)进行搜索,如果闭包作用域也没有找到,Python 就会到全局(global)命名空

间中进行查找,最后会在内建(built-in)命名空间搜索,如果都没有找到,则会报错NameError)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值