Python基础第十二讲:详细说一下 什么是 Python 函数?
本文内容是介绍什么是函数?
如何创建属于自己的函数,完成想要的功能。
01
什么是 函数?
函数是一个独立且封闭完成特定功能的代码块,可以在任何地方被调用。
比如 print()函数,无论你在程序中的任何地方调用,都是输出()中的内容。
这种独立的封闭代码块又称为封装,
也可以把函数理解为一个盒子。盒子里面的代码就是封装好的,完成特定的功能,外面的代码不属于函数。
有了封装以后,我们就可以把代码块用一个个函数表示,然后通过一个个的调用就可以把复杂的功能拆解,简单化。
这个过程就是面向过程的程序设计,与之对应的是面向对象的程序设计在面向过程的程序设计里面,函数是基本单元。
在Python中,函数分为内建函数和用户自定义函数。内建函数是Python程序语言已经给我们创建好了,直接可以使用。这一类的函数很多,我们不需要每一个都记住名字,常用的记住即可。
官方文档https://docs.python.org/3/library/functions.html给出了很多内建函数,如下表所示。
表 Python内建函数
Built-in Functions | ||||
abs() | delattr() | hash() | memoryview() | set() |
all() | dict() | help() | min() | setattr() |
any() | dir() | hex() | next() | slice() |
ascii() | divmod() | id() | object() | sorted() |
bin() | enumerate() | input() | oct() | staticmethod() |
bool() | eval() | int() | open() | str() |
breakpoint() | exec() | isinstance() | ord() | sum() |
bytearray() | filter() | issubclass() | pow() | super() |
bytes() | float() | iter() | print() | tuple() |
callable() | format() | len() | property() | type() |
chr() | frozenset() | list() | range() | vars() |
classmethod() | getattr() | locals() | repr() | zip() |
compile() | globals() | map() | reversed() | __import__() |
complex() | hasattr() | max() | round() |
用户自定义函数就是自己根据需要实现的功能设计代码块。
02
为什么需要用函数?
无论任何编程语言,函数的作用都是一样的,概括起来主要有以下几个作用:
01:解决代码重复问题
在实际项目中,我们经常会遇到代码功能一样,但是参数不同。也就是给定不同的参数,得出不同的结果,
比如print(‘你好’) 与print('吃饭了吗?'),功能都是打印信息。我们不需要为“你好”,“吃饭了吗”编写同样的打印功能代码,也就是实现print函数。只需要用同一个函数(print)就可以完成同样的任务。
在代码中多次执行同一项任务时,无需反复编写该任务的代码,只需要调用该任务名称的代码块,也就是函数即可完成任务。
2:代码结构与思维结构一致
实际生活中,解决问题的方法一般是分步骤:
比如考大学,先从小学开始读,然后初中、高中。但是每一个阶段学的内容不同。我们只需要把每一个阶段编写为一个函数,然后按照我们思考的步骤组织在一起。有人认为从高中开始,再到小学;也有认为从小学到高中,按照自然规律。
这个就是思维方式的不同。在编程中,这些都是正确的,没有对错之分,能组合在一起完成功能即可。
例子
'''
使用函数描述:考上大学之前,我们需要经历的阶段有
'''
# 小学
primary_school()
# 初中
junior_middle_school()
# 高中
senior_middle_school()
3:利于分工合作
在实际项目中,要实现的功能往往比较复杂。我们只需要按照功能拆解的方法思考问题。
把一个大问题,拆解为几个小问题,每一个小问题就是一个函数。然后再把所有函数按照思考的过程组织在一起即可。
拆解问题的事情一般是公司架构师做的事情,定义好每一个函数的功能以及函数的接口,然后分配给不同的程序员去完成。
这个就是多人协作完成一个大的功能。
4:代码清晰、易读、易修改
代码被函数组织起来以后,整个程序文件变得有调理、有章法。
我们只需要按照函数的结构阅读代码即可,非常清晰明了。
每一个函数完成特定的功能。如果某一个函数出错了,我们只需要调整该函数即可,方便快捷。
尤其是在代码行数比较多的时候能快速定位到错误所在的位置。
03
如何定义函数?
在Python语言中,函数的定义语法是:
定义函数语法
# 定义函数语法
def funtion_name(parameter1, parameter2, xxxxx):
语句1
语句2
returnxxxx
def:为关键字,告诉python这是一个函数
funtion_name:是函数名字。函数是完成特定功能的代码块,给这个代码块取一个名字就是函数名,通常用具有描述性的单词表示,比如check_events(),检查事件。函数名命名规则与变量的一样。
parameter1、paramter2 、xxxx:等是函数的参数,也就是函数可以加工处理的数据。参数可以有0到多个,但是名字不能重名。所有的参数用括号括起来(),即使0个参数也需要。
冒号(:):函数定义需要冒号结尾,此为python语法要求
语句1、语句2、return:函数的代码块,说明函数具体需要做什么事情,也就是需要实现什么样的功能。
(1)函数代码块必须缩进,使用tab建即可,不是空格键。这是Python语法要求。具有同样缩进的代码块才是一个完整的代码块
(2)例子:没有合理缩进,引发的常见错误之一
例子:没有缩进引起的错误
# 定义函数语法def funtion_name(parameter1,parameter):
语句1
语句2
return xxxx
File"/Users/yoni.ma/PycharmProjects/seven_days_python/Sixth_day/define_fun.py",line 18
语句1
^
IndentationError: expected an indented block
(3)语句1、语句2为函数具体执行内容,可以有1到多个语句。但是不能没有任何语句。否则代码错误。
(4)return:函数返回值,可有可无。根据自己设计的函数功能而决定。
①函数运行完成以后,如果需要返回一个值给调用该函数的地方,则使用return。否则不需要。
②return还表示函数的结束。尤其当代码比较多,各种while、if、 for等都有的函数。
04
如何调用函数?
调用函数就是让Python执行函数的代码,也就是喊出函数的名字。
只有当函数被调用时,函数内部的代码段才会被执行。
这点也是新手容易犯的错误之一:忘记调用函数就运行程序而得不到结果,调试此类错误需要耐心。
函数调用结束时,这个函数内部生成的所有数据都会被销毁。
根据程序设计要求,同一个函数可以被调用多次或1次。调用函数也可以用来测试函数功能是否正确,比如每次写完一个函数的功能,然后调用并运行以查看是否出错或期望的结果。
如果错误,则调试代码(查找哪里出错);否则进行下一个函数的编写。运用此方法虽然有一点繁琐,但是可以大大缩减代码调试,
因为我们把错误提前解决了。
调用函数语法为:
funtion_name()
注意:funtion_name()前面没有缩进,否则不能正确调用函数。
05
函数用定义和调用的例子
例子
"""
函数的例子:
知识点:
1。定义函数
2。函数调用
"""
# 定义函数
def welcome_python():
print('欢迎加入Python实战圈!')
# 调用函数。为了方便阅读代码,与定义函数最好空两行。
welcome_python()
welcome_python()
欢迎加入Python实战圈!
欢迎加入Python实战圈!
无论是定义还是调用函数,常见错误有以下几个情况:
1) 函数定义中缺少冒号或者是中文冒号
2) 函数体没有缩进
3) 调用函数的时候缩进了,提示函数错误
例子:如过welcome_python()缩进了,运行函数没有错误,但是运行结果是空。
def welcome_python():
print('欢迎加入Python实战圈!')
welcome_python()
Process finished with exit code 0
以上内容摘自《零基础轻松学 Python》
【提高】40多个项目实战,老手可以从真实场景中学习python;
【直播】不定期直播项目案例讲解,手把手教你如何分析项目;
【分享】优质python学习资料分享,让你在最短时间获得有价值的学习资源;圈友优质资料或学习分享,会不时给予赞赏支持,希望每个优质圈友既能赚回加入费用,也能快速成长,并享受分享与帮助他人的乐趣。
【人脉】收获一群志同道合的朋友,并且都是python从业者
【价格】本着布道思想,只需 69元 加入一个能保证学习效果的良心圈子。