分享

“拿着砖块砌墙”,python函数——python自动办公6

 WO路过 2020-08-05

今天文章的标题叫做“拿着砖块砌墙”,为什么这么起名呢?原因在于即将要讲的“函数”它对于整个编程过程的作用。如果说我们把利用python实现一个特定功能时编写代码的过程比作砌一座高大的墙,那么python函数所扮演的角色就是那一块块墙砖。

“拿着砖块砌墙”,python函数——python自动办公6

由一块块砖垒砌的城墙

1、函数的定义

python函数的定义为:组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数的本质就是封装起来的代码段。代码段封装成函数,意义在于能提高应用的模块性以及代码的重复利用率。

这种封装是遵守一定规则的封装,下面说明函数的定义规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
  • 上面是用语言描述的函数定义规则,把它写作通俗易懂的语法形式如下:

    def 函数名( 函数参数表 ): 函数体代码 return [表达式]#return可以不要,相当于返回None,就是没有返回值

    举个最简单的实现两个数相加的函数的例子:

    def add_num(a, b):	c = a + b	return c#更简单的写法def add_num(a, b):	return a+b

    这一个简单的函数定义完全符合了上面所说的定义规则。其实python的函数我们早已不陌生,前面几篇文中几乎都出现的print()就是python的一个函数。python提供了许多内建函数,那是我们知道了它的用法后直接可以在代码中使用的。而像上面我们自己用def关键字定义的函数,叫做用户自定义函数。

    “拿着砖块砌墙”,python函数——python自动办公6

    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> #说明这是一个函数对象
    “拿着砖块砌墙”,python函数——python自动办公6

    3、函数的参数

    在函数定义中,大家也看到了,函数名后面有一个参数表,这个是一个函数不可或缺的部分。函数可以没有参数,那么它的参数表就是空的,函数名后只有一个()。但是大多数情况下,函数是需要传入参数的,所以在定义的时候就要考虑函数参数的类型。下面是python函数参数的类型:

  • 必备参数
  • 关键字参数
  • 默认参数
  • 不定长参数
  • 必备参数:是最常见的参数类型,在定义好后调用时,必须以正确的顺序传入函数。调用时传入的数量必须和声明时的一样。

    def div(a, b):	#定义一个整除函数	return a/bc = div(0, 1)	#参数顺序和数量严格对齐#顺序搞错则0做除数,报错print(c)	#输出0

    关键字参数:在函数调用时使用'参数名=xxx'来确定传入的参数值。它允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。还是上面的例子:

    def div(a, b): #定义一个整除函数 return a/bc = div(b=1, a=0) #参数顺序可变print(c) #输出0

    默认参数:函数在定义时某些参数已经指定默认值,调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:

    def print_info( name, age = 25 ):	#定义打印名字和年龄的函数	print ('Name: ', name)	print ('Age: ', age)print_info('Zhang san')	#不传入年龄也有默认参数25#输出Name:  Zhang sanAge:  25

    不定长参数:有时需要一个函数能处理比当初声明时更多的参数,或者说事先不知道会有多少个参数传入,这种时候就需要使用不定长参数。不定长参数的两种写法,*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示例:

    def funB(a, b, **argv):	print(a)	print(b)	print(argv)funB(1, 2, l=3, m=4)#输出结果如下:12{'l': 3, 'm': 4}

    看到这里,python函数的基本知识你已经具备了。上面所讲的关于python函数的知识只是书本的理论,更多的实际用法还需要到需求场景中具体实现。本文内容就此告一段落。

    后面的文章我会继续介绍一些写自动化办公脚本需要的基本pyhon知识。关注我,教你一步步的使用python实现自动化办公。

    下期预告:python中的常用第三方库

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多