前言
当我们深入研究 Python 的内心深处,我们将会发现,函数是其内核的核心力量。这并不仅仅是因为函数具有处理任务的能力,但更重要的是,函数是实现程序代码重用的关键因素之一,它帮助我们以一种结构化和有组织的方式来表达我们的思想。
所谓的 “编程艺术”(The Art of Programming)不仅仅是指编写的代码能够成功运行,关键在于是否可以使代码看起来更加简洁,重用性更强,更容易进行维护和扩展。函数正好可以做到这一点。它们封装了代码中的预定义任务,使得代码看起来更加具有逻辑性,更加易于理解。
在这篇文章中,我们将揭秘 Python 函数的魅力,详解其内在的原理,函数的定义、调用,以及如何利用其强大的功能像艺术家一样去书写你的 Python 代码。无论你是 Python 的初学者还是有经验的开发者,我相信这个主题都能给你带来一些有益的启示和新的理解。希望你在这趟探索之旅中能感受到 Python 函数的强大力量,也能体会到编程的艺术魅力。让我们一起打开 Python 函数的神秘之门,探索其中深邃又广阔的世界吧!🚗🚗🚗
什么是 python 函数
在生活中,我们使用计算器程序的时候,首先我们需要选择我们需要进行哪种计算,是加法、减法、乘法还是除法,并且可能每次进行的计算都不相同,所以,每次都需要选择进行哪种计算。当我们写计算器小程序的时候,我们要实现这么多次的菜单是不是也要将菜单代码写这么多次呢?可以是可以,但是我们不难发现,这样的代码会显得十分冗余,我们并不推荐,那么怎样才能解决这种代码冗余的问题问题呢?那就是函数。
函数可以:
代码复用:当需要在多个地方重复相同的操作时,可以把这些操作封装在一个函数中。这样,只需要调用函数即可完成这些操作,无需重复书写相同的代码。
模块化设计:函数使得代码结构更加清晰、更具有可读性。通过函数,可以将复杂的问题拆分成一系列相对独立,功能单一的模块,使得代码更加容易理解和维护。隐藏实现细节:函数将代码的具体实现和使用
接口分离,提供了一种抽象机制。这意味着函数的使用者不需要了解函数内部的实现细节,只需要了解函数的输入(参数)和输出(返回值)即可。
提高代码的可测试性:每一个函数都是一个相对狮郑络的代码段,可以独立于其他代码进行测试,大大提高了代码测试的可行性和有效性。
提高代码的可调试性:当出现问题时,可以针对单个函数进行调试,而不需要查看整个代码。
便于代码的迭代和重构:通过调整或重写特定的函数,可以在不影响整体代码结构的情况下更新或优化部分功能。
函数的使用步骤
1)定义函数
def 函数名(参数): 代码块 ...
2)调用函数
函数名(参数)
注意:在 python 中,函数必须先定义再使用。并且参数可以根据情况,可以有也可以没有。
# 定义函数 def menu(): print('-----------欢迎使用计算器-----------') print('-----------0.退出计算器------------') print('--------------1.加法--------------') print('--------------2.减法--------------') print('--------------3.乘法--------------') print('--------------4.除法--------------') print('---------------------------------') # 调用函数 menu() option = int(input('请输入你要进行的操作:')) while option != 0: if option == 1: print('加法操作') elif option == 2: print('减法操作') elif option == 3: print('乘法操作') else: print('除法操作') # 调用函数 menu() option = int(input('请输入你要进行的操作:'))
只有函数被调用的时候,才会执行函数里面的代码,如果函数没有被调用,那么函数里面的代码就不会被执行。
带有参数的函数
上面的菜单操作,比较单调,而函数有了参数之后就会变得更加有意思,代码也变得更加灵活。
def say_hello(name): # 形式参数 print(f'Hello,{name}.welcome to the world of Python') name = input('请输入你的名字:') say_hello(name) # 实际参数
当我们调用函数的时候传入的参数叫做实际参数,而定义函数的时候的参数叫做形式参数。
形式参数(也称为形参)是定义在函数或方法声明中的参数。形式参数只有在函数或方法被调用时才会具体化为实际的数据值,也就是实际参数。
函数的返回值
我们可以使用函数来返回我们需要的数据。return 数据
return 的作用是,结束当前函数并且将 return 后面的数据带回到调用函数的地方。
def add_num(a,b): return a + b num1 = int(input('请输入操作数1:')) num2 = int(input('请输入操作数2:')) sum = add_num(num1,num2) print(sum)
当函数 return 之后,函数体 return 之后的代码不会执行。
def add_num(a,b): return a + b print('代码块') num1 = int(input('请输入操作数1:')) num2 = int(input('请输入操作数2:')) sum = add_num(num1,num2) print(sum)
函数的说明文档
在Python中,函数的说明文档也被称为文档字符串,或者简称为"docstring"。它是一种在函数、模块、类或方法定义后立即插入的特殊语句,用来对该部分代码进行说明或者解释。这种解释对于理解代码运行机制很有帮助。
在 python 中,我们可以使用 help(函数名) 来查看函数的说明文档。
help(input)
在我们自己写的函数中,你可以使用三引号(‘’'或"“”)来定义一个docstring。docstring 不单单显示函数的基本功能,还应该显示它的参数类型、返回类型及其他相关的信息。这就使得其他人可以理解并且使用这个函数。
def 函数名(参数): ''' 说明文档的位置 ''' 代码块 ...
def add_num(a,b): ''' 求和函数 :param a:操作数1 :param b:操作数2 :return:操作数1与操作数2的和 ''' return a + b print('代码块') help(add_num)
函数的嵌套调用
我们在一个函数中可以调用另外一个函数。
def test_B(): print('-----test_B start-----') print('test_B 代码块') print('------test_B end------') def test_A(): print('-----test_A start-----') test_B() print('------test_A end------') test_A()
我们可以注意两个代码的执行顺序是怎样的,当在test_A函数中调用test_B函数时,会先执行完test_B函数的代码,然后继续执行test_A的剩下代码。
实现简易的计算器
因为这个代码比较简单,所以我们就不添加说明文档了,如果大家有兴趣的话,也可以自己下去试试哦。
def menu(): print('-----------欢迎使用计算器-----------') print('-----------0.退出计算器------------') print('--------------1.加法--------------') print('--------------2.减法--------------') print('--------------3.乘法--------------') print('--------------4.除法--------------') print('---------------------------------') # 加法 def add_num(a,b): return a + b # 减法 def sub_num(a,b): return a - b # 乘法 def mul_num(a,b): return a * b # 除法 def div_num(a,b): return a / b menu() option = int(input('请输入你要进行的操作:')) while option != 0: num1 = int(input('请输入操作数1:')) num2 = int(input('请输入操作数2:')) if option == 1: ret = add_num(num1,num2) elif option == 2: ret = sub_num(num1,num2) elif option == 3: ret = mul_num(num1,num2) else: ret = div_num(num1,num2) print(ret) # 调用函数 menu() option = int(input('请输入你要进行的操作:'))