pythonleap函数判断闰年

您所在的位置:网站首页 python闰年的个数 pythonleap函数判断闰年

pythonleap函数判断闰年

2024-01-15 14:30| 来源: 网络整理| 查看: 265

所谓的函数,实际上是指具有一定功能的代码块,通过函数我们可以快速的调用某一功能,不需要从无到有,从零开始构建程序,能够很好的实现代码的重复使用,大大提升开发效率。

从使用者角度看,函数就像一个“黑盒子”,用户传入一些参数,该“黑盒子”经过一定操作即可返回结果。用户并不需要知道“黑盒子”是如何得到这个结果的。

从设计者(实现函数的人)角度看,需考虑以下方面:

函数中哪些部分是动态变化的,这些通常会定义为参数;函数要实现什么功能,函数最终给使用者返回什么,即函数体;函数如何实现这些功能,即函数体。 1、函数的定义Python中函数定义的语法如下:

6aded11bfd8ddaefd66c02eea65f3431.png

注意:函数体中通过 缩进控制语句的层次关系,同一层次的语句缩进必须一致。Python中的函数可以没有返回值,也可以有多个返回值, 多个返回值之间用逗号隔开。

27ca670c0c09c269e06d6c9327e37fb5.png

2、函数的调用定义好函数后即可进行调用, 函数调用的方式为 函数名(实参列表) ,实参列表中的 参数个数要与形参个数相同,参数类型也要一致 ,否则会抛出 TypeError错误 。 函数的调用一定要放在函数定义之后 ,否则找不到函数,将会抛出 NameError错误 。当存在多个同名函数时, 调用的是最后定义的函数 。 根据函数是否有返回值,调用函数有两种方式。

带有返回值的函数调用。通常将函数的调用结果作为一个值处理;

没有返回值的函数调用。通常将函数调用作为一条语句来处理。

dd256062df44432905de4d6aae42a116.png

判断是否为闰年的函数执行结果为True,字符串居中打印函数执行结果为:

eba5873de99ca22c797c3cf5ce82cce9.png

3、函数中参数类型及其特点 形参 :函数定义时, 写在圆括号里面的变量 ,不代表任何具体的值,作为一种占位符参与函数的业务逻辑; 实参 :函数调用时, 实际传递的值 ; 在 Python中,定义函数时 不需要指定参数的类型 ,形参的类型 由调用者传递的实参的类型决定 。 根据函数参数赋值特点、形式划分,可大致将函数参数分为: 位置参数 、 关键字参数 、 默认值参数 、 可变长度参数 、 序列解包参数 等。 位置参数是指函数调用时,根据函数定义时形参的位置顺序依次将实参的值赋值给形参。要求实参和形参的个数必须一致,而且实参和形参必须一一对应。(最简单、最常见、最通用)关键字参数是指函数调用时,以“键-值”形式指定实参,此时将会根据关键字匹配相应的形参变量名,并对该变量其进行赋值,实参顺序和形参顺序可以不一致。要求传递的关键字一定要在形参列表中,否则将报错。(灵活、方便,调用者不用关注参数顺序和位置)默认值参数是指函数定义时,在形参列表中直接为参数赋值来指定该参数的默认值。函数调用时,对于有默认值的参数,可传值也可不传值。未传值时,将采用默认值;传值时,将用新的值替换默认值。(方便函数调用,可减少参数传递) 注意 : 定义带有默认值参数的函数时,任何一个 默认值参数右边都不能再出现非默认值参数 。 可变长度参数是指函数定义时,无法确定参数的个数。例如系统中的 print 函数,不知道用户需要打印多少个对象,此时将需要打印的内容定义为可变长度参数,根据调用者传递的实际参数来确定参数的长度。Python中可变长度参数有两种形式:*参数名和**参数名。 *参数名:表示该参数是一个元组类型,可接受多个实参,并将传递的实参依次存放到元组中,主要针对以位置传值的实参;**参数名:表示该参数是一个字典类型,可接受多个实参,并将传递的键值对放到集合中,主要针对以关键字传值的实参。序列解包参数:实参为序列对象,传值时将序列中的元素依次取出,然后按照一定规则赋值给相应变量。主要有两种形式:*序列对象、**字典对象。 当传递的实参为*序列对象时,将会取出序列中的每个元素,然后按照位置顺序依次赋值给每一个形参。当实参为序列对象时,会将其看做一个整体赋值给某个形参。当传递的实参为**字典对象时,将会根据关键字来匹配相应的形参,如果没有匹配到则报错,如果匹配到,则将相应的值赋值给该形参。当实参为字典对象时,会将其看做一个整体赋值给某个形参。 多种类型参数混合使用时的一些注意事项:

423ecb3c1afca2875db0c9cfa742ce1a.png

59e25302ff0bbfebf2a36f3fcaba0c90.png

4、参数传递规则 Python中一切皆为对象,根据实参对象是否可变,可将实参分为 可变类型 和 不可变类型 。 对于不可变类型实参,例如整型、字符串、元组、浮点型等, 函数调用时传递的只是实参的值,相当于是将实参的值复制一份给形参,函数内部对形参的修改,不会影响到实参 ; 对于可变类型实参,例如列表、字典、集合等,函数调用时, 传递的是实参所指对象,此时形参和实参指向同一对象,函数内部对形参的修改,可能会影响到实参 。

e61f4ce5f0795b281de1f29f84950918.png

5、变量作用域 变量作用域:根据变量定义的位置,可将变量分为 全局变量和 局部变量。 全局变量: 定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作。如果有赋值语句,相当于 创建了一个同名的局部变量; 局部变量: 定义在函数内部的变量,只能在它被定义的函数中使用。在函数外面无法直接访问。 注意:当局部变量和全局变量同名时,在函数内部使用变量时,通常都是指局部变量,如果确实需要对全局变量进行修改,需要 使用global关键字对变量进行声明,此时操作的就是全局变量了。

87dba4189d579edf1460798e6d82c45e.png

6、函数的递归调用函数的递归调用是指 在调用一个函数的过程中,又直接或间接调用该函数本身,递归常用来 解决结构相似的问题。所谓结构相似,是指构成原问题的子问题与原问题在结构上相似, 可以用类似的方法求解。整个问题的求解可分为两部分:第一部分是 一些特殊情况,有直接的解法;第二部分 与原问题相似,但比原问题的规模小,并且依赖第一部分的结果。递归的两个基本要素:

边界条件:递归出口,即什么时候结束递归;

递归模式:大问题是如何分解为小问题的,也称为递归体。

一般来说, 通过循环能实现的效果,往往递归也可以实现 ,但反过来, 通过递归能实现的,循环不一定能够实现 。相对而言,递归的代码非常简洁,但难以理解,而循环则很容易理解。

59e25302ff0bbfebf2a36f3fcaba0c90.png

7、Python中的一些特殊函数

通过lambda表达式实现匿名函数的用法,lambda表达式既可以赋值给一个变量,从而多次使用,也可以直接作为某个函数的参数,只使用一次。通常是作为其他函数的参数,例如map函数、filter函数等。

be8c175af906724cdcc05dad03a77ed3.png

      通过lambda表达式实现的效果,都能通过普通函数实现 ,lambda表达式是函数的一种简化版本。但反过来通过函数能实现的,lambda表达式不一定能够实现,因为 lambda表达式只有一条语句 。

c8cbf7cc542b4262bc3cb7ecf265238f.png

map函数主要用于将可迭代对象中的元素依次取出,然后作为参数调用某个函数,并将所有执行结果依次保存到一个迭代器中。函数有几个参数,这里就需要几个可迭代对象。

408a301d9c2fedd19c35960fea7f90cb.png

d743f6d8173b2d164ab8f2964e7109b0.png

filter函数用于 过滤可迭代对象中的元素 ,保留所有能使函数结果为True的元素。

0017b91c88878580263343272bf6335b.png

4c5cf81490e0a671badb1fddb4137be8.png

小小练习题

8d5a32b28f00d7e6ee4abae4fa83a417.png

Python更多资源可关注微信公众号、加入QQ群或添加老师微信获取,我们会不定期更新文章与视频。

c419be74eb5e8e77abfa365374cecf93.png

点击下方  即可查看手把手教你学Python详细视频! 欢迎转给身边有需要的小伙伴!


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3