python函数入门和使用

本文详细介绍了Python中的函数概念,包括命名规则、定义方式、分类(有无返回值、有无参数)、函数调用、参数传递(引用与值传递)以及递归的原理和应用。通过实例解析了如何利用递归解决兔子问题,并提供了两种不同的解决方案。了解这些内容有助于提升代码的模块化和效率。
摘要由CSDN通过智能技术生成

函数

这里所的 函数 并不是我们接触的数学上的函数
函数是最基本的一种代码抽象的方式,是组织好的可重复使用的,用来实现单一或相关联功能的代码段。

函数是对做相似的事情或相似的动作进行封装,它能提高应用的模块性和代码的重复利用率。我们要封装好一个函数,首先要学会对事务进行抽象,抽象是数学中非常常见的概念。

举个例子:

计算阶乘,比如:1 *2 * 3 * … * 10,写起来十分不方便,我们为了简便可以写成10!。再如求和公式 [公式] 等同于1 + 2 + 3 + … + 100;

抽象非常强大,借助抽象,我们不用关心底层的具体计算过程,而直接在更高的层次上思考问题。

写计算机程序也是一样,函数就是最基本的一种代码抽象的方式。

Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用,如 print() 能输出任何对象,len()能计算不同类型对象的长
一、函数命名规则

函数是一个变量,所以它的命名规则与变量相同:
1、变量名称只能由(大小写字母、数字、_)有效符号组成
2、不要使用数字开头!!!
3、不要使用关键字或者保留字!!!
4、变量命名尽量有意义
5、推荐使用下划线命名法
二、函数的定义

def 函数名称 (参数):
函数内容
返回值(可以没有)
三、函数的分类
1.有无返回值

返回值 即return
分为:
有返回值函数:
①:使用return关键字返回结果
②:函数遇到return,立即返回
无返回值函数
2.有无参数

有参函数
①:参数个数,根据情况任意
②:参数类型,是任意的类型
无参函数
3.函数定义者

系统函数:
由官方定义的函数:
如 input print type
第三方定义的函数:
需要安装模块,才能使用
pip install 模块名称(Linux需要先安装pip)
自定义函数:
也就是我们自己定义的函数(使用def)
四、函数调用

函数本质其实就是对象

调用就是先压栈 然后使用,走完整个函数流程之后,将函数出栈。
压栈(进栈):将函数放入栈中执行。
弹栈(出栈):函数执行完成后出栈。
五、引用传递和值传递

引用传递:本质是用一个地址,对象,引用。
值传递:本质就是用了这个值。
六、函数参数

默认值参数:
如果一个函数的参数,在大多数情况下,值是固定的一个值,此时可以使用默认值参数
这个时候,如果不传该参数,值就取默认的,如果传递了,则按照传递的算。
注意:默认值参数,一定要写在普通参数之后

可变参数:
在python,如果一个函数中参数可能有很多(这些参数,也可以没有),建议将这种参数设置为可变参数
参数名称(习惯性args)
注意:可变参数默认是以元组封装所有参数

命名(关键字)参数:
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
七、递归

递归其实就是出入栈的过程,自己调用自己。
这样看来虽然是无限循环了,可可以在函数中写入一个判断语句,让其在该停止的地方使用return 停止下来

就像查词典一样,不会一个词,查第一个,查完第一个里还有不会的词,查二个······以此类推。(直到有一个全会,再收回来)
用以下题目来解析递归,可以用递归,也可以用普通的循环

#有一对兔子,从出生后的第3个月起,每个月都生一对兔子,

小兔子长到第3个月后每个月又生一对兔子,

假如兔子不死,问第n个月的兔子对数为多少?

分析得,第三项开始是Sn+2=Sn+1+Sn

n = int(input(“请输入月份:”))

def rab():
a = 1
b = 1
c = 0
if n >=3:
for i in range(2,n):
c = a + b
a = b
b = c
return c
else:
return 1
print(“第”,n,“个月有”,rab(),“对兔子”)

#递归
def rabit(n):
if n == 1 or n == 2:
return 1
return rabit(n-1)+rabit(n-2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值