Python函数(二)※

本文详细介绍了Python函数的参数类型,包括必选参数、默认参数、可变参数和关键字参数,强调了参数顺序的重要性。此外,还探讨了函数的返回值,包括直接返回值和返回函数的闭包概念。最后,讲解了Python的作用域规则,区分了全局和局部变量,并强调了封装性的最佳实践。
摘要由CSDN通过智能技术生成

第1关:函数的参数 - 搭建函数房子的砖

300

  • 任务要求
  • 参考答案
  • 评论76

任务描述

当我们需要在程序中多次执行同一类型的任务时,不需要反复编写代码段来完成任务,而是可以利用函数工具来大大方便我们的编程工作。函数是可重复使用的,用来实现相关联功能的代码段。

本实训的目标是让读者了解并掌握函数结构的相关知识,本关的小目标则是让读者先了解并掌握函数参数的有关知识。

相关知识

我们在使用函数前,得先定义一个满足自己使用要求的函数。定义函数的基本结构是:

 
  1. def functionname( parameters ):
  2. "函数_文档字符串"
  3. function_suite
  4. return [expression]
  • 定义函数以def关键词开头,后面跟着函数名、圆括号()、括号中的参数、冒号;
  • 接着,在缩进块中编写函数体,函数的第一行语句一般是写文档字符串,用于存放函数说明,也可以选择不写;
  • Return[expression]表示结束函数,并返回值。而不带表达式的return相当于返回空值。

本关的重点就是研究函数的参数parameters。定义函数的时候,参数的名字和位置定下来了,函数的接口定义也就完成了。我们在调用函数时,只用知道该传递什么样的参数,函数内部的运行情况已经被封装,使用者不必了解。

Python的函数参数主要包含以下几种:

  • 必选参数;
  • 默认参数;
  • 可变参数;
  • 关键字参数。

必选参数

必选参数也叫位置参数,是函数中最常用的参数,必选参数就是在调用函数的时候必须指定参数值,例如:

 
  1. #定义加法函数plus,参数a,b就是必选参数
  2. def plus(a,b):
  3. c=a+b
  4. return(c)
  5. #调用函数plus时,必须给参数a,b传递值
  6. d=plus(1,2)
  7. #输出结果d
  8. print(d)

输出结果:

3

如果调用plus函数时,传入的参数不符合要求,例如:

>>d = plus() TypeError: plus() missing 2 required positional arguments: 'a' and 'b'

>>d = plus(1) TypeError: plus() missing 1 required positional argument: 'b'

默认参数

默认参数是指给函数参数提供默认值,如果在调用函数的时候没有给该参数传递值,则该参数使用默认值。例如:

 
  1. #定义加法函数plus,参数a是必选参数,参数b是默认值2的参数
  2. def plus(a,b=2):
  3. c=a+b
  4. return(c)
  5. #调用函数plus时,必须给参数a传递值,若不给b传递值,则b默认为2
  6. d=plus(1)
  7. #输出结果d
  8. print(d)

从上面的例子可以看出,在函数调用过程中可以不用给默认参数传递参数值。但在使用默认参数时,有两点需要注意:

  • 默认参数要放在所有必选参数的后面;
  • 默认参数必须指向不变对象。

可变参数

在有些情况下,我们在定义函数的时候,还不能确定函数应该包含多少个参数,这时我们可以使用可变参数,可变参数就是传入的参数数量是可变的。例如:

 
  1. #定义plus函数,完成的功能是返回输入的整数之和。
  2. # 参数numbers是可变参数,表示输入的参数个数可以为任意值
  3. def plus(*numbers):
  4. add = 0
  5. for i in numbers:
  6. add += i
  7. return(add)
  8. #调用3次plus函数,每次的参数个数都不相同
  9. d1 = plus(1,2,3)
  10. d2 = plus(1,2,3,4)
  11. d3 = plus(1,3,5,7,9)
  12. #向函数中可以传递任意参数,包括0个参数
  13. d4 = plus()
  14. #输出结果
  15. print(d1)
  16. print(d2)
  17. print(d3)
  18. print(d4)

输出结果:

6 10 25 0

在上面的例子中,numbers 就是一个可变参数,可变参数前面加一个标识符*,在函数内部,可变参数numbers接收到的值是一个 tuple

我们在调用参数是可变参数的函数时,可以给该函数传递任意个数的参数,包括0个参数。

关键字参数

可变参数允许我们在调用函数时传入任意个参数,这些可变参数在函数调用时自动组装为一个tuple

而关键字参数允许我们传入任意个含参数名的参数,这些关键字参数在函数调用时自动组装为一个dict。也就是说,关键字参数将长度任意的键-值对, 作为参数传递给函数。

 
  1. #定义一个包含关键字参数的函数,返回值为参数值
  2. def plus(**kw):
  3. return kw
  4. #调用plus函数,参数值为空
  5. d1 = plus()
  6. #调用plus函数,参数值为x=1
  7. d2 = plus(x=1)
  8. #调用plus函数,参数值为x=1,y=2
  9. d3 = plus(x=1, y=2)
  10. #输出d1,d2,d3
  11. print(d1)
  12. print(d2)
  13. print(d3)

输出结果:

{} {'x': 1} {'x': 1, 'y': 2}

在上面的例子中,kw就是一个关键字参数,关键字参数前面加两个*表示,关键字参数可以扩展函数功能,使传递参数过程更为简便,例如:

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数的参数就好比是搭建函数房子块,每个参数都是函数的构成部分,用来接收外部传入的数据或者指定默认值。函数的参数可以分为两种类型:位置参数和关键字参数。 位置参数是最常见的参数类型,顾名思义,传入的参数是按照位置顺序一一对应的。在定义函数时,我们需要指定位置参数的名称,当调用函数时,传入的参数会按照相同的顺序传递给函数。例如,我们定义了一个函数add,它接收两个位置参数a和b,用来计算a和b的和。当我们调用add函数时,传入的参数按照位置顺序分别对应a和b,函数会返回它们的和。 关键字参数是指传入函数时按照参数名进行传递的参数。与位置参数不同,关键字参数的传递顺序可以任意。在定义函数时,我们可以给参数指定默认值,这样在函数调用时,如果不传入对应的参数,则会使用默认值。使用关键字参数可以使函数的调用更加灵活,可以根据需要传递部分参数,而不必按照固定的顺序传递所有参数。 此外,函数还可以接收可变数量的位置参数和关键字参数。可变数量的位置参数是指传入函数的位置参数个数是可变的,可以是0个、1个或多个,函数在内部会将这些参数封装为一个元组。可变数量的关键字参数是指传入函数的关键字参数个数是可变的,可以是0个、1个或多个,函数在内部会将这些参数封装为一个字典。 总之,函数的参数就好比是搭建函数房子块,它们构成了函数的基础结构。根据参数的类型,我们可以通过位置参数或关键字参数来传递数据。在定义函数时,我们可以指定默认值,使得函数的调用更加灵活。同时,函数还可以接收可变数量的位置参数和关键字参数,使得函数的功能更加强大和灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值