学习笔记18函数的其他功能

Posted SAP剑客

tags:

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

函数的其他功能

一、调用函数时参数的顺序

1、位置参数和关键字参数

注意,混合使用的时候,位置参数不能在关键字参数的后面,否则会报错。

定义时,小括号中的参数,用来接收参数用的,称之为“形参”;

调用时,小括号中的参数,用来传递给函数的,称之为“实参”;

2、参数的默认值

调用函数时,默认参数的值如果没有传入,则被认为是默认值,否则会被覆盖。

如果参数有默认值,只能放在没有默认值参数的后面。

 

3、可变参数

当我们定义函数的时候还不知道具体需要传入多少个参数,或者参数太长不方便写,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,当然也可以是0个。

→ 可变长参数

在函数参数名前面加入一个星号“*”,会自动将你传入进来的所有参数打包成一个元组

 

→ 可变长关键字参数

在函数参数名前面加入两个星号“**”,会自动将你传入进来的所有参数打包成一个字典

 

参数混合使用

注意:顺序一定要正确。

 

二、局部变量和全局变量

局部变量:在函数内部定义的变量(变量的生效范围在函数内部);

全局变量:在函数外部定义的变量(变量的生效范围是全部地方);

不同的函数,可以定义相同名字的局部变量,但是各自不会影响。

局部变量的作用是为了临时在函数中保存数据。

在函数内部是直接可以使用全局变量的,如果同名,优先使用局部变量(就近原则)。

 

修改全局变量

在函数内部可以使用全局变量,但是不能修改全局变量。

那么一定要修改怎么办呢?——需要关键字global声明。

 

可变的数据类型,不需要关键字global声明,也会修改全局变量,比如列表list。

 

总结:

对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global无法修改;

对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global也可以修改;

【练习题】

写一个函数,检查传入的字典中的每一个value的长度,如果大于2,则保留两个长度的内容,并将新内容返回给调用者。

因为字典也是可变数据类型,所以会改变全局遍历的值,更好的方式是通过复制来处理。

 

以上是关于学习笔记18函数的其他功能的主要内容,如果未能解决你的问题,请参考以下文章

安全牛学习笔记python学习笔记

pdb学习笔记

Python学习笔记(yield与装饰器)

python学习笔记——肆

Python学习笔记__4.4章 装饰器(添加额外功能)

安全牛学习笔记python装饰器