《每天五分钟冲击python基础之函数入门》(十七)

前言

跟着我的课程学习已经有一段时间了,相信你们会一个疑问?就是课程还有多久才能学习完成?其实现在这个阶段,算是完成了 python 零基础入门的三分之一,而且这个阶段能坚持下来的,证明你们都有一股想改变自己的冲动,是的,学习编程本身就很需要耐心的,但是坚持下来了,以后就会变得美好了,好的,上面都是题外话来的,那么我们就开始今天的课程吧!

什么是函数

函数是执行特定任务的一段代码,程序通过将一段代码定义成函数,并为该函数指定一个函数名,这样即可在需要的时候多次调用这段代码。

是不是没有明白上面表达的意思,没有关系,我给你们举个例:我们每次点开微信的朋友圈的时候,是不是朋友圈的内容都会自动刷新一次,将微信好友的更新动态,呈现到你的面前,那么 “朋友圈内容“就是一段调用数据库数据,封装在 函数内的 代码,那么朋友圈的内容 “自动刷新“ 的 动作就是调用这个函数名,然后每次执行更新的操作,微信就会调用函数名,就可以执行代码更新到朋友圈的动态了。
在这里插入图片描述

看到上面的例子后,你们是不是有一个疑问呢?就是我假如我每次更新 朋友圈内容的 时候,都要重新写一次代码吗?其实是不用的,因为如果相同的代码的话,只需要写一次代码就可以了,等到要更新的时候,就直接用函数名去调用就好了。

定义函数和调用函数
在使用函数之前必须先定义函数,定义函数的语法格式如下:

def 函数名(形参列表):
	//由零条到多条可执行语句组成的函数
	[return [返回值]]

需要注意的:
1、函数名,从语法的角度来看,函数名只要是一个合法的标识符即可;从程序的可读性角度来看,函数名应该由一个或多个有意义的单词连缀而成,每个单词的字母全部小写,单词与单词之间使用下画线分隔

2、形参列表,用于定义该函数可以接收的参数,形参列表由多个形参名组成,多个形参名之间以英文逗号(,)隔开,一旦在定义函数时指定了形参列表,调用该函数时就必须传入对应的参数值,谁调用函数,谁负责为形参赋值。

有形参的,例:

def my_max(x, y):
	z = x if x > y else y
	return z


a = my_max(8, 6)
print(a)

输出结果:
8

没有形参的,例:

def my_name():
	print("你的名字孙悟空")


my_name()

输出结果:
你的名字孙悟空

注意:
在函数体中使用 return 语句可以显示地返回一个值,return 语句返回的值既可以是有值的变量,也可以是一个表达式。

为函数提供文档(假如别人开发的项目,由你来接手,如何快速知道哪些方法怎么用的,这个就可以帮到你了)

我们可以通过 help() 函数查看指定函数的帮助信息
例:

def my_max(x, y):
	'''
	获取两个值之间较大数的函数

	my_max(x, y)
	  返回x、y两个参数之间较大的那个数
	'''

	z = x if x > y else y
	return z

help(my_max)
print(my_max.__doc__)

输出结果:
Help on function my_max in module __main__:

my_max(x, y)
    获取两个值之间较大数的函数
    
    my_max(x, y)
      返回x、y两个参数之间较大的那个数


	获取两个值之间较大数的函数

	my_max(x, y)
	  返回x、y两个参数之间较大的那个数

多个返回值

如果程序需要有多个返回值,则即可将多个值包装成列表之后返回,也可直接返回多个值,如果python函数直接返回多个值,python会自动将多个返回值封装成元组,例:

def sum_and_avg(list):
	sum = 0
	count = 0
	for e in list:
		if isinstance(e, int) or isinstance(e, float):
			count += 1
			sum += e
	return sum, sum / count



mylist = [20, 15, 2.8, 'a', 35, 5.9, -1.8]
tp =sum_and_avg(mylist)
print(tp)

输出结果:
(76.9, 12.816666666666668)

递归函数(这个阶段,了解一下即可)

在一个函数体内调用它自身,被称为函数递归,函数递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。例:

def fn(n):
	if n == 0 :
	   return 1
	elif n == 1 :
	   return 4
	else :
		return 2 * fn(n - 1) + fn(n - 2) #这里就是递归了

print("fn(10)的结果是:", fn(10))

详解:对于fn(10),即等于2 * fn(9) + fn(8),其中fn(9)又等于2fn(8) + fn(7) 。。。。以此类推,最终会计算到 fn(2) 等于 2fn(1) + fn(0),即fn(2)是可计算的,这样递归带来的隐式循环就有结束的时候,然后一路反算回去,最后就可以得到fn(10)的值。

仔细看上面的递归的过程,当一个函数不断地调用它自身时,必须在某个时刻函数的返回值是确定的,即不再调用它自身;否则,这种递归就变成了无穷递归,类似于死循环,因此,在定义递归函数时有一条最重要的规定:递归一定要向已知方向进行。

课外监督

最近一部分同学在后台私聊我说,自己每天都准备要学习了,但是一去到电脑桌上就是提不起劲来,怎么办呢?针对这种情况的同学,我决定每天花一点时间对你们学习进行监督和辅导,如有需要的同学,扫描下面的图片,点击 “联系作者” 进行报名。

结语

这节课是有点逻辑思维在的,但跟着我学习后,你就会理解它其中的意思,好啦,今节课就先讲到这里,下节课讲函数的参数,敬请期待。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值