今天文章的标题叫做“拿着砖块砌墙”,为什么这么起名呢?原因在于即将要讲的“函数”它对于整个编程过程的作用。如果说我们把利用python实现一个特定功能时编写代码的过程比作砌一座高大的墙,那么python函数所扮演的角色就是那一块块墙砖。 由一块块砖垒砌的城墙 1、函数的定义 python函数的定义为:组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数的本质就是封装起来的代码段。代码段封装成函数,意义在于能提高应用的模块性以及代码的重复利用率。 这种封装是遵守一定规则的封装,下面说明函数的定义规则: 上面是用语言描述的函数定义规则,把它写作通俗易懂的语法形式如下: def 函数名( 函数参数表 ): 函数体代码 return [表达式]#return可以不要,相当于返回None,就是没有返回值 举个最简单的实现两个数相加的函数的例子:
这一个简单的函数定义完全符合了上面所说的定义规则。其实python的函数我们早已不陌生,前面几篇文中几乎都出现的print()就是python的一个函数。python提供了许多内建函数,那是我们知道了它的用法后直接可以在代码中使用的。而像上面我们自己用def关键字定义的函数,叫做用户自定义函数。 2、函数的调用 无论是内建函数还是自定义函数,定义好函数,每当我们需要在后面的代码中使用它时,就要对它进行调用。那么下面,来讲函数的调用。 函数的调用有两个部分:函数名和执行符。这里的函数名大家都知道,你定义了什么函数名,调用时就使用什么函数名。关键是执行符,函数的执行符就是括号()。大家千万不要忽略这一点,认为这是理所当然的格式。在实际应用中,新手的在非常非常多的情况下,调用函数就写一个函数名,不带括号,最后代码不能正常运行,却怎么也看不出错误。看下面的例子: def add99(): #定义一个输出1加到99结果的函数 sum = 0 for i in range(1, 100): sum = sum + i print(sum)#下面是调用add99() #结果输出4950#下面不是调用add99#看一下add99是什么print(add99)#输出<function a at 0x000001D8C27653A8> #说明这是一个函数对象 3、函数的参数 在函数定义中,大家也看到了,函数名后面有一个参数表,这个是一个函数不可或缺的部分。函数可以没有参数,那么它的参数表就是空的,函数名后只有一个()。但是大多数情况下,函数是需要传入参数的,所以在定义的时候就要考虑函数参数的类型。下面是python函数参数的类型: 必备参数:是最常见的参数类型,在定义好后调用时,必须以正确的顺序传入函数。调用时传入的数量必须和声明时的一样。
关键字参数:在函数调用时使用'参数名=xxx'来确定传入的参数值。它允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。还是上面的例子: def div(a, b): #定义一个整除函数 return a/bc = div(b=1, a=0) #参数顺序可变print(c) #输出0 默认参数:函数在定义时某些参数已经指定默认值,调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
不定长参数:有时需要一个函数能处理比当初声明时更多的参数,或者说事先不知道会有多少个参数传入,这种时候就需要使用不定长参数。不定长参数的两种写法,*args和**argv。一个星号的*args以元组的形式传入,两个星号的**argv以字典的形式传入。 *args示例: def funA(a, b, *args): print(a) print(b) print(args)funA(1, 2, 3, 5, 6, 7)#输出结果如下:12(3, 5, 6, 7) **argv示例:
看到这里,python函数的基本知识你已经具备了。上面所讲的关于python函数的知识只是书本的理论,更多的实际用法还需要到需求场景中具体实现。本文内容就此告一段落。 后面的文章我会继续介绍一些写自动化办公脚本需要的基本pyhon知识。关注我,教你一步步的使用python实现自动化办公。 下期预告:python中的常用第三方库 |
|