在编程中,我们会遇到很多大量重复的事情,比如我们要处理一份文件,我们需要使用代码去打开、处理、保存,但在实际中,我们会有很多文件做相同的处理,如果每处理一份文件都要写一份代码,那效率一下子就低了下去,这个时候便有了函数,我们可以直接通过调用这个函数,并且将文件传递给这个函数,这个时候,就只需要遍历所需要处理的文件,然后交给一个函数去处理,这样工作效率就大大提升了。
目录
1. 函数简介
先来一段概念:
Python函数是一段可重用的代码块,用于执行特定任务或计算,并可以接受参数和返回值。
简单来说,函数就是一段已经封装好的代码,你可以通过调用函数名去执行这段代码
2. 函数的定义
def 函数名(形参1,形参2...形参n):
代码块(函数体)
def func():
print('hello,world')
def:python中定义函数的关键词,固定写法,每声明一个函数都要写一个def
func:函数名,这个自己取名,但命名规范和变量一样,使用数字、字母、下划线,且数字不能作为开头。在命名时,应清晰易懂
然后就是函数体(代码块),在这里写上需要复用的代码
3. 函数的调用
函数调用十分简单,以上的函数调用直接使用:
def func():
print('hello,world')
func() # 调用函数
===================
hello,world
进程已结束,退出代码0
也就是:函数名+()
其中不难发现,其实print()也是调用的函数,它是python已经定义好的函数,直接调用即可
3.1 func和func()的区别
def func():
print('hello,world')
print(func) # 函数对象(函数的地址)
print(type(func)) # 类型:函数
print(func()) # 打印函数返回值
func() # 调用函数
print(type(func())) # 函数返回值的类型
================
<function func at 0x0000022BC65A7280>
<class 'function'>
hello,world
None
hello,world
hello,world
<class 'NoneType'>
进程已结束,退出代码0
从上面不难看出:
type(): 查看数据类型
func: 函数对象,里面包含函数的名字以及函数的地址,存储空间的地址。
func(): 调用函数,执行函数体的内容
<class 'function'>:是一个类,属于函数类
其中,函数执行完,是有返回值的,默认为None
先了解什么是函数的返回值,再回来看这一段代码
4. 函数的返回值
每执行一段函数,都有给调用函数时返回一个值,默认为None,现在来看看不为None的情况
def func():
return 'hello,world'
func() # 直接调用函数
print(func())
a = func() # 变量接受返回值
print(a)
================
hello,world
hello,world
进程已结束,退出代码0
return: 函数的返回值,并中断函数,不再执行以下代码
这里直接调用函数是不会输出任何东西的,return时,返回给调用函数时一个返回值,当我们拿一个变量a去接收这个返回值的时候,然后输出a,你就会发现,此时输出的就是函数return后面的内容,那便是函数的返回值
现在再来看前面的代码:
def func():
print('hello,world')
print(func) # 函数对象(函数的地址)
print(type(func)) # 类型:函数
print(func()) # 打印函数返回值
func() # 调用函数
print(type(func())) # 函数返回值的类型
================
<function func at 0x0000022BC65A7280>
<class 'function'>
hello,world
None
hello,world
hello,world
<class 'NoneType'>
进程已结束,退出代码0
print(func()):先执行func(),并且返回一个None(不写return,就默认为None),然后打印这个返回值,也就是None.
5. 函数强化理解
为了更加方便理解什么是函数,以及如何运行函数,我们来一个简单的登录例子入手函数.
不管是网站还是小程序还是app都需要登录判断,再很多地方都需要进行登录,比如你没登录时,想要进入一个网站,但这时系统必须要你登录,然后直接跳转到登录界面,此时,再实际需求中,我们肯定不能每一个网页跳转都重新写一份登录逻辑吧,所以此时,函数的用途就来了.
# 定义一个login函数,功能是 输入用户名和密码,验证登录是否正确,用户名是root 密码是123456
def login():
username = input("请输入用户名:")
password = input("请输入密码:")
if username=='root' and password=='123456':
print("登录成功")
else:
print("登录失败")
print(
'1: 页面一\n'
'2: 页面二\n'
'3: 页面三\n'
)
botton = input('请输入你要进入哪个页面:')
# 假设页面三正在维护,不进行跳转
if botton == '1':
# 跳转到登录页面
login()
elif botton == '2':
login()
else:
print('页面正在维护中~~~')
========================
1: 页面一
2: 页面二
3: 页面三
请输入你要进入哪个页面:2
请输入用户名:root
请输入密码:123456
登录成功
进程已结束,退出代码0
如果我们不使用函数,那么结果将会是这样:
print(
'1: 页面一\n'
'2: 页面二\n'
'3: 页面三\n'
)
botton = input('请输入你要进入哪个页面:')
# 假设页面三正在维护,不进行跳转
if botton == '1':
# 跳转到登录页面
username = input("请输入用户名:")
password = input("请输入密码:")
if username == 'root' and password == '123456':
print("登录成功")
else:
print("登录失败")
elif botton == '2':
username = input("请输入用户名:")
password = input("请输入密码:")
if username == 'root' and password == '123456':
print("登录成功")
else:
print("登录失败")
else:
print('页面正在维护中~~~')
print(
'1: 页面一\n'
'2: 页面二\n'
'3: 页面三\n'
)
botton = input('请输入你要进入哪个页面:')
# 假设页面三正在维护,不进行跳转
if botton == '1':
# 跳转到登录页面
login()
elif botton == '2':
login()
else:
print('页面正在维护中~~~')
可以看到页面一和页面二的代码完全一样,这个时候就显得没那么必要,反而加重了代码量,后期维护也更难。
好啦!到这里,你基本已经明白什么是函数了,也学会如何去使用函数了,那么后续将会讲解什么是函数的参数,以及如何传递参数.