共3118字, 阅读本文需要8分钟
def 函数基础
def 函数的定义
在 python 中,def 函数是用来定义一个 function() 的。基本使用
示例下面我们定义了一个 function() 实现打印 a 的值。
当我们运行的时候,输出框是不会输出任何信息的,为什么?当我们定义了一个 function(),并不意味着我们要调用它,所以我们需要运行这个 function(),一个简单的办法就是在 input 框中输入 function()。
自调用
如果想要在执行脚本的时候执行一些代码,如单元测试,可以在脚本最后加上单元测试代码。但是该脚本做为一个模块对外提供功能的时候单元测试代码也会执行,这些往往都不是我们想要的,我们可以把这些代码加入到脚本最后。
如果执行该脚本的时候,该判断语句将会是,那么内部的代码将会执行。 如果外部调用该脚本,判断语句则为,内部代码将不会执行。利用自调用函数运行如上的 function() 进行测试。
函数参数
基本使用当我们想要调用一个函数并往函数中传递变量,那么这些变量就是函数的参数。
的位置就是函数的参数,在调用的时候传入即可。示例
在这里定义的一个函数 func,其参数就是两个数值 a,b,函数的功能就是把两个参数加起来。运行脚本后,在 main 函数中调用函数, 如果不指定参数, 那么将会出错。运行结果
函数的默认参数
基本使用我们在定义函数时有时候有些参数在大部分情况下是相同的,只不过为了提高函数的适用性,提供了一些备选的参数, 为了方便函数调用,我们可以将这些参数设置为默认参数,那么该参数在函数调用过程中可以不需要明确给出。
函数声明只需要在需要默认参数的地方用号给定即可, 但是要注意所有的默认参数都不能出现在非默认参数的前面。示例在这里定义了一个函数,参数为 Mac 的属性,但除了之外,像,和都是有默认值的。
运行结果
如果我们调用函数, 那么与是一样的效果。当然也可以在函数调用过程中传入特定的参数用来修改默认参数。通过默认参数可以减轻我们函数调用的复杂度。
运行结果
def 函数进阶
可变参数
顾名思义,函数的可变参数表示传入的参数可以变化的,1 个到任意个。当然可以将这些参数封装成一个或者传入,但不够。使用可变参数可以很好解决该问题,注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。示例
定义一个函数,传入固定参数 name,可变参数 *grades,表明该参数是一个可变参数,这是一个可迭代的对象。运行结果
关键字参数
关键字参数可以传入 0 个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典 (dict)。示例定义了一个函数,传入一个参数, 和关键字参数,使用了修饰。表明该参数是关键字参数,通常来讲关键字参数是放在函数参数列表的最后。
运行结果
通过可变参数和关键字参数,任何函数都可以用表达。参数组合在 Python 中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这 4 种参数都可以一起使用,或者只用其中某些,但是参数定义的顺序必须是必选参数 > 默认参数 > 可变参数 > 关键字参数。示例
运行结果
你还可以通过 tuple 和 dict 调用该函数
运行结果
总结
Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误!要注意定义可变参数和关键字参数的语法:是可变参数,args 接收的是一个 tuple;
是关键字参数,kw 接收的是一个 dict。
觉得对你有帮助就关注我吧!
领取专属 10元无门槛券
私享最新 技术干货