Python基础(六)- 函数

函数

函数的概念

函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用相应的函数。当我们需要在程序中多次使用某一个功能是,就可以将功能代码写入函数中,再对函数进行调用来实现功能

定义函数

函数的定义的格式为:

def 函数名(参数1, 参数2, ...):  # 通过def关键字可以定义一个函数
    执行代码
函数名(实参1, 实参2, ...)  # 通过函数名加(),并传入相应的参数来调用函数

例子:

def hello():
    print('say hello')

hello()  # 输出结果为 say hello

说明:函数的参数是自定的,可以有0个到无数个,这个是根据此函数的功能需求来的

函数的参数

实参和形参

在定义一个函数时,根据需要可以给函数指定一个参数,在调用这个函数时提供这个参数具体的值,那么,给函数指定的这个参数就叫做形参,传入的指定的值就是实参

def func123(a, b, c):  # func123为参数名, a,b,c就是三个形参
    print(a + b + c)

func123(1, 2, 3)  # 在此处调用func()函数, 1,2,3就分别是a,b,c的实参
>>>6  # 输出结果为6

参数传递方式

在python的函数中,传递参数的方式有多种,最普遍的方式是位置传参和关键字传参。

  • 位置传参: 是根据函数形参的定义顺序,在调用函数时按形参顺序传递实参
def func123(a, b, c):
    print(a + b + c)
# 位置传参是根据函数形参的定义顺序,在调用函数时按形参顺序传递实参
func123(1, 2, 3) 
  • 关键字传参:指定传递的实参的形参名,就可以随意的选择传递实参的顺序
def func123(a, b, c):
    print(a + b + c)
# 关键字传参:指定传递的实参的形参名,就可以随意的选择传递实参的顺序
func123(a=1, b=2, c=3)
func123(b=2, a=1, c=3)
func123(c=3, b=2, a=1)
# 以上三个函数调用是等价的,效果也是一模一样的
  • 混合传参:可以通过位置传参和关键字传参混合使用传递参数,但是在使用了关键字传参后,之后的未传参参数必须使用关键字传参方式传参
def func123(a, b, c):
    print(a + b + c)
# 混合传参方式:可以通过位置传参和关键字传参混合使用传递参数
func123(1, 2, c=3)
func123(1, b=2, c=3)
func123(1, c=3, b=2)
# func123(1, b=2, 3) 错误传参方式
# func123(1, 3, b=2) 错误传参方式

传参的一些技巧和用法

默认参数
  • 在定义函数参数时,可以给形参一个默认值,当别人调用这个函数并传递实参时,如果没有对有默认值的参数传参,则在函数执行时自动让参数将默认值作为参数值使用
def func123(a=1, b=2, c=3):
    print(a + b + c)

func123(4, 5, 6)  # 4 5 6
func123()  # 1 2 3
func123(4)  # 4 2 3
func123(4, 5)  # 4 5 3
func123(4, c=6)  # 4 2 6
func123(b=5)  # 1 5 3
func123(c=6)  # 1 2 6
...
未知参数传参
  • 自定义传参:有时我们在使用一个函数时并不知道需要传递多少实参进去,这是我们可以使用自定义传参的方式来进行参数传递
def func123(*args):  # 使用 *自定义参数名 来接收数量不确定的参数传递
    num = 0
    for i in args:  # 这里的args是一个元组,包含传递进入的多个参数
        num += i
    print(num)

func123(1, 2, 3, ...)
  • 自定义关键字传参:自定义传参虽然方便,但是如果我们想要在函数中确定传递的参数中是否有我们需要的实参,那么我们就需要用到自定义的关键字传参
def func123(**kwargs)  # 使用 **自定义参数名 来接受数量不确定的关键字参数传递
    if 'a' in kwargs:  # 这里的kwargs对象是一个字典,包含传递的多个关键字参数
        print(kwargs['a'])

func123(a=1, b=2, c=3, ...)
  • 当我们已经知道这两种传参方式后,那么在我们不确定使用我们函数的人会怎样传参时,我们就可以制定能够接受任何参数传递的参数定义方式
def func123(*args, **kwargs)  # 这样可以将使用者想要传递的所有参数都包含在内而不会引起python解释器抛出参数传递错误信息
    for i in args:
        pass
    for key, value in kwargs.item():
        pass

func123(1, 2, 3, a=1, b=2, c=3, ...)

未完待续

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值