当前位置: 首页 > news >正文

20.Python从入门到精通—参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数

20.从入门到精通:参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数

    • 参数
      • 位置参数
      • 关键字参数
      • 默认参数
    • 匿名函数
    • return 语句
    • 强制位置参数

参数

在Python中,函数可以接受任意数量的参数,包括位置参数、关键字参数和默认参数。以下是这些参数类型的详细介绍:

位置参数

位置参数是最常见的参数类型,它们按照定义的顺序传递给函数。例如,下面的函数接受两个位置参数:

def add_numbers(x, y):return x + y

调用这个函数时,必须按照定义的顺序传递两个参数:

result = add_numbers(1, 2)
print(result)  # 输出 3

关键字参数

关键字参数是指在调用函数时,使用参数名来指定参数的值。例如,下面的函数接受两个关键字参数:

def greet(name, greeting):print(f"{greeting}, {name}!")

调用这个函数时,可以使用参数名来指定参数的值:

greet(name="Alice", greeting="Hello")  # 输出 "Hello, Alice!"

关键字参数可以使函数调用更加清晰和易于理解,尤其是在函数接受多个参数时。

默认参数

默认参数是指在定义函数时,为参数指定一个默认值。如果调用函数时没有为这个参数传递值,则使用默认值。例如,下面的函数接受一个默认参数:

def greet(name, greeting="Hello"):print(f"{greeting}, {name}!")

调用这个函数时,可以只传递一个参数,而使用默认值来填充另一个参数:

greet("Alice")  # 输出 "Hello, Alice!"
greet("Bob", "Hi")  # 输出 "Hi, Bob!"

默认参数可以使函数调用更加简洁和易于使用,尤其是在函数的某些参数经常使用相同的值时。
以上是Python中函数参数的基本介绍,掌握函数参数的使用方法可以使我们编写更加灵活和高效的代码。

匿名函数

在 Python 中,匿名函数又称为 lambda 函数,是一种简单的函数定义方式,可以在一行代码中定义函数。lambda 函数的语法如下:

lambda arguments: expression

其中,arguments 是函数的参数列表,用逗号分隔;expression 是函数的返回值表达式。
下面是一个简单的 lambda 函数示例:

f = lambda x, y: x + y
print(f(1, 2))  # 输出 3
  1. 在这个例子中,我们使用 lambda 函数定义了一个函数 f,它接受两个参数 x 和 y,并返回它们的和。我们将 lambda 函数赋值给变量 f,然后调用 f 函数并传递参数 1 和 2,输出结果为 3。
  2. lambda 函数通常用于需要定义简单函数的场合,例如在函数中需要传递一个函数作为参数。

下面是一个使用 lambda 函数作为参数的示例:

numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares))  # 输出 [1, 4, 9, 16, 25]

在这个例子中,我们使用 map() 函数将列表 numbers 中的每个元素求平方,使用 lambda 函数 lambda x: x **
2 定义了一个简单的平方函数。map() 函数将 lambda 函数作为第一个参数,将列表 numbers
作为第二个参数,并返回一个可迭代对象,我们使用 list() 函数将其转换为列表并输出结果。

需要注意的是,lambda 函数通常用于定义简单的函数逻辑,如果函数逻辑比较复杂,建议使用普通函数来定义。

return 语句

在Python中,return语句用于从函数中返回一个值,并结束函数的执行。以下是一个示例,展示如何使用return语句从函数中返回一个值:

def add_numbers(x, y):result = x + yreturn resultsum = add_numbers(1, 2)
print(sum)  # 输出 3

在这个示例中,我们定义了一个名为add_numbers()的函数,它接受两个参数x和y,并计算它们的和。在函数内部,我们使用return语句返回计算结果result。在调用函数时,我们将返回的值赋给变量sum,并使用print()函数将其打印出来。

return语句可以帮助我们在函数内部计算出结果并将其返回给调用者。这使得函数可以在不同的上下文中重复使用,从而提高代码的复用性和可维护性。

强制位置参数

在 Python 中,可以使用 * 来强制位置参数,即在函数定义时, 后面的参数必须使用位置参数传递,不能使用关键字参数传递。下面是一个示例:*

def my_func(a, b, *, c, d):print(a, b, c, d)my_func(1, 2, c=3, d=4)  # 输出 1 2 3 4
my_func(1, 2, 3, 4)  # 报错:TypeError: my_func() takes 2 positional arguments but 4 were given

在上面的示例中,我们定义了一个函数 my_func,它接受两个位置参数 a 和 b,以及两个强制关键字参数 c 和 d。在调用函数时,我们可以使用关键字参数传递 c 和 d,也可以使用位置参数传递 a 和 b,但是不能同时使用位置参数和关键字参数传递 c和 d,否则会报错。

需要注意的是, 后面的参数必须使用关键字参数传递,否则会报错。例如:*

my_func(1, 2, 3, d=4)  # 报错:TypeError: my_func() takes 2 positional arguments but 3 positional arguments (and 1 keyword-only argument) were given

在这个示例中,我们使用位置参数传递了 c 的值,但是没有使用关键字参数传递,因此会报错。

相关文章:

  • 20240318-2-推荐算法Graph_Embedding
  • C++ 的标准模板库(STL)常用算法介绍
  • 微信小程序事件处理
  • 操作系统内功篇:硬件结构之软中断
  • 树形递归模板
  • 面试算法-88-反转链表
  • 【软件测试_黑白盒测试】白盒测试黑盒测试 区别
  • window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)
  • [Repo Git] manifests的写法
  • 【LLM多模态】Cogvlm图生文模型结构和训练流程
  • mysql的实训操作任务指南
  • 2024.3.9|第十五届蓝桥杯模拟赛(第三期)
  • java 实现发送邮件功能
  • YoloV8改进策略:BackBone改进|PKINet
  • 基于SpringBoot的高校办公室行政事务管理系统
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • axios 和 cookie 的那些事
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • docker-consul
  • E-HPC支持多队列管理和自动伸缩
  • Electron入门介绍
  • ES6系列(二)变量的解构赋值
  • go append函数以及写入
  • js中的正则表达式入门
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Lucene解析 - 基本概念
  • Material Design
  • Redux系列x:源码分析
  • 聊聊redis的数据结构的应用
  • 使用common-codec进行md5加密
  • 世界上最简单的无等待算法(getAndIncrement)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 因为阿里,他们成了“杭漂”
  • ionic异常记录
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #if 1...#endif
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)汇编语言——简单程序
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • ..回顾17,展望18
  • .NET BackgroundWorker
  • .NET 表达式计算:Expression Evaluator
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .Net下的签名与混淆
  • @ModelAttribute使用详解
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)