Python之函数基础
一、函数基本概念
1、什么是函数?
函数是一种提前构建好的、可重复使用的代码段!类似变量的一个特性,函数也是先定义,后调用!
就好比你在某宝某东特价买了一个家用工具箱,里面可能有冲击钻、螺丝批头、螺丝刀等等工具,每个工具都有不同的功能,调用函数就是你从工具箱取出工具,比如说用螺丝刀来拧螺丝,这就是函数的代码段所实现的功能!
2、为何用函数?
2.1、减少代码冗余:
比如,我们此前文章做过的拷贝文件小程序,如果我需要在很多个地方使用这个功能,没有函数的话,我可能需要每个地方复制一份代码,这画面太美我都不敢想象!
如下所示,这样定义好函数后,后续仅需要一行copy_file()就可以调用这样一段代码的功能了!简直了!
def copy_file():
src = input('请输入需要复制的文件路径:')
dest = input('请输入目标路径:')
with open(src, 'rb') as src_path, open(dest, 'wb') as dest_path:
for line in src_path:
dest_path.write(line)
dest_path.close()
copy_file()
2.2、提高代码可维护性、扩展性
如上所示,如果没有函数,又在很多地方用了同样代码,当你需要改动某一项功能时,意味着你需要在所有地方都得改一次!这哪怕我变成哪吒有三头六臂也架不住啊!
有了函数后,仅需要修改函数里面的那一段代码即可!
2.3、提高代码可读性
这个不用多说了吧!一段代码,复制个几十次还有可读性吗?
3、如何用函数?
Python中函数秉持先定义再调用后返回理念!
3.1、定义
基本语法如下:
def FUNCTION ([PARAMETER,......]):
['''DESCRIPTION''']
[BODY]
return VALUE
def开头,后面跟函数名,函数名命名规范跟变量一样,括号里面是参数,可以留空,最后面是冒号,在Python中,冒号就意味着缩进!下面第一行用三个引号引起来的是注释,作为一个合格的IT从业人员,给代码添加适当的注释是必要的!当然,你可以任性不写!第二行子代码就是函数体代码了,根据实际情况写入各种代码,最后面的return是返回值,可以不写它!
定义一个函数在内存中所需要做的的事情:
-
跟变量一样,为函数名开辟内存空间。
-
申请内存空间,用来保存函数体代码并将之绑定至函数名。
定义函数时并不会真正执行代码,而是调用时才会执行函数体的子代码!这好比定义函数就是建筑蓝图,调用就是施工将蓝图变成实物!
3.1.1、定义1:无参函数
当调用函数只为一个很简单的功能时可使用无参函数
def print_str():
print('此为无参数函数')
print_str()
# 调用函数得到结果
此为无参数函数
3.1.2、定义2:有参函数
适合复杂功能
def num(a,b):
number = a + b
print(number)
num(37,88)
# 调用函数时传递两个参数,执行得到结果!
125
函数传递参数和调用有点像做饭,怎么说呢?函数是一个菜单,函数体代码里面定义了烹饪的步骤!而传递参数呢,就是指定食材,调用则是拿到食材按照流程来烹饪,返回值就是烹饪的结果:新鲜出炉的菜品!
3.1.3、定义3:空函数
空函数是什么?其实就是函数体内没有代码!
def num():
pass
# 或者三个点...
不用执行都知道,调用没有任何效果!因为里面是空的!那搞毛啊,有什么意义!当然有意义了,就好比你写小说,先定好骨骼框架,后续再慢慢丰满血肉一个道理!这空函数意义亦是如此,在构思程序时预先定义函数名,里面填上注释信息,表明这是干嘛的!后面一看到就知道用处,直接往里面补全代码即可!就好像你Windows系统桌面做一个便笺,时刻提醒你这件事还没做完!
3.2、调用
三种
3.2.1、函数名寻址
通过函数名找到对应的内存地址!但是看这打印的结果就知道了,这不是我这种凡夫俗子能干的活!
def num():
pas
# 或者三个点...
print(num)
# 执行得到结果,这个结果就是函数的内存地址
<function num at 0x7f8ddd4ce1e0>
3.2.2、触发函数
通过括号来触发函数体代码的执行过程,这才是人干的活!
def print_str():
print('信不信我顺着网线来揍你!')
print_str()
# 执行得到结果
信不信我顺着网线来揍你!
3.3、返回值:
3.3.1、return
return即函数体代码执行后的最终结果,它是函数结束的标志,运行到return表示后面的子代码不再执行,直接结束函数!
def print_str():
print('信不信我顺着网线来揍你!')
return
print('你倒是来打我呀!')
# 执行得到结果
信不信我顺着网线来揍你!