从零开始学Python(三)函数与lambda表达式

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于Python的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.函数

1.函数与方法的区别

2.函数的定义

3.函数的传参

4.函数的返回值

5.函数的运用

二.lambda表达式


一.函数

1.函数与方法的区别


  1. 函数是独立的代码块,可以在任何地方调用。方法是与对象相关联的,只能通过对象调用

  2. 函数可以接受任意数量的参数,包括可选参数和默认参数。方法通常只接受一个参数,即对象本身

  3. 函数可以返回任何类型的值,包括None。方法通常返回与对象相关的值

  4. 函数可以定义在模块级别或类级别。方法只能定义在类级别

⭐⭐总之,函数是独立的代码块,可以在任何地方调用,而方法是与对象相关联的,只能通过对象调用(直接调用的是函数 通过对象点出来的是方法)


2.函数的定义

语法:

def function_name(parameters):"""docstring"""# function bodyreturn value#function_name是函数的名称
#parameters是函数的参数列表,可以是任意数量的参数,用逗号分隔
#函数体是由缩进的代码块组成,可以包含任意数量的语句
#return语句用于返回函数的结果,可以省略,如果省略,则函数返回None

演示:

#定义函数
def add(x, y):"""Return the sum of x and y."""return x + y#调用函数
result = add(2, 3)
print(result)  # Output: 5

3.函数的传参

  1. 位置参数传递:按照函数定义时参数的顺序,依次传入参数值

    def add(x, y):return x + yresult = add(1, 2)  # 位置参数传递
    print(result)  # 输出 3
  2. 关键字参数传递:通过指定参数名来传递参数值,可以不按照函数定义时参数的顺序传递参数

    def add(x, y):return x + yresult = add(y=2, x=1)  # 关键字参数传递
    print(result)  # 输出 3
  3. 默认参数传递:在函数定义时为参数指定默认值,调用函数时可以不传递该参数,使用默认值

    def add(x, y=2):return x + yresult1 = add(1)  # 默认参数传递
    result2 = add(1, 3)  # 位置参数传递
    print(result1)  # 输出 3
    print(result2)  # 输出 4
  4. 可变参数传递:在函数定义时使用*args语法,可以接收任意数量的位置参数,将它们作为元组传递给函数

    def add(*args):result = 0for arg in args:result += argreturn resultresult1 = add(1, 2, 3)  # 可变参数传递
    result2 = add(1, 2, 3, 4, 5)
    print(result1)  # 输出 6
    print(result2)  # 输出 15
  5. 关键字可变参数传递:在函数定义时使用**kwargs语法,可以接收任意数量的关键字参数,将它们作为字典传递给函数

    def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_info(name="Alice", age=18)  # 关键字可变参数传递
    # 输出:
    # name: Alice
    # age: 18
     

4.函数的返回值

①返回值不限类型,所以不需要指定返回类型

②使用 return 关键字

③可以通过元组的形式返回多个值

5.函数的运用

①函数嵌套

#题目需求:定义求和函数,在求和函数上完成平均值函数def sum_numbers(numbers):"""求和函数"""result = 0for number in numbers:result += numberreturn resultdef average_numbers(numbers):"""平均值函数"""sum_result = sum_numbers(numbers)return sum_result / len(numbers)numbers = [1, 2, 3, 4, 5]
sum_result = sum_numbers(numbers)
average_result = average_numbers(numbers)
print(sum_result)  # 输出 15
print(average_result)  # 输出 3.0

②变量的作用域区分

全局变量是在函数外部定义的变量,可以在程序的任何地方访问

        

x = 10  # 全局变量def print_x():print(x)  # 可以访问全局变量xprint_x()  # 输出 10#变量x是在函数外部定义的,因此它是全局变量。在print_x函数中,我们可以直接访问全局变量x

局部变量是在函数内部定义的变量,只能在函数内部访问

        

def print_x():x = 10  # 局部变量print(x)  # 可以访问局部变量xprint_x()  # 输出 10#变量x是在print_x函数内部定义的,因此它是局部变量。在函数外部无法访问局部变量x

🔺需要注意的是,如果在函数内部使用了与全局变量同名的变量,那么该变量会被视为局部变量,而不是全局变量

        

x = 10  # 全局变量def print_x():x = 20  # 局部变量,与全局变量同名print(x)  # 访问局部变量xprint_x()  # 输出 20
print(x)  # 输出 10,访问全局变量x#虽然全局变量x的值为10,但是在print_x函数内部我们定义了一个同名的局部变量x
#因此在函数内部访问的是局部变量x的值,而不是全局变量x的值
#在函数外部访问x时,仍然访问的是全局变量x的值

二.lambda表达式

定义:相当于匿名函数,可以简化目前的函数,在 java 中的流式操作与函数接口有体现

使用场景及示例:

排序:lambda表达式可以作为sorted函数的key参数,用于指定排序规则

              使用lambda表达式按照字符串长度对列表进行排序

words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # 输出 ["date", "apple", "banana", "cherry"]

②过滤:ambda表达式可以作为filter函数的第一个参数,用于指定过滤规则

               使用lambda表达式过滤出列表中的偶数

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出 [2, 4, 6]

③映射:lambda表达式可以作为map函数的第一个参数,用于指定映射规则

               使用lambda表达式将列表中的元素平方

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

④函数传参:lambda表达式可以作为函数的参数,用于指定函数的行为

def apply_operation(operation, x, y):return operation(x, y)result = apply_operation(lambda x, y: x + y, 1, 2)
print(result)  # 输出 3

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/35579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[PaddlePaddle] [学习笔记] [上] 计算机视觉(卷积、卷积核、卷积计算、padding计算、BN、缩放、平移、Dropout)

1. 计算机视觉的发展历程 计算机视觉作为一门让机器学会如何去“看”的学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场…

深入解析 SOCKS5 代理及其在网络安全与爬虫中的应用

在当今数字化时代,网络安全和数据获取成为了互联网时代的重要课题。为了实现安全的网络连接和高效的数据采集,各种代理技术应运而生。本文将深入探讨 SOCKS5 代理及其在网络安全和爬虫领域的应用,同时比较其与其他代理方式的优势与劣势。 1.…

TypeScript 语法

环境搭建 以javascript为基础构建的语言,一个js的超集,可以在任何支持js的平台中执行,ts扩展了js并且添加了类型,但是ts不能被js解析器直接执行,需要编译器编译为js文件,然后引入到 html 页面使用。 ts增…

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…

通过matlab对比music,mvdr以及tdoa三种定位算法的性能

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 MUSIC(Multiple Signal Classification) 4.2 MVDR(Minimum Variance Distortionless Response) 4.3 TDOA(Time Difference o…

开发一个RISC-V上的操作系统(七)—— 硬件定时器(Hardware Timer)

目录 往期文章传送门 一、硬件定时器 硬件实现 软件实现 二、上板测试 往期文章传送门 开发一个RISC-V上的操作系统(一)—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统(二)—— 系统引导…

AD域机器KMS自动激活

1、打开AD域控,点击DNS管理 2、创建其它记录 3、选择服务位置 SRV 4、输入相关信息 服务:_VLMCS协议:_TCP权重:100端口号:1688KMS服务器地址:10.3.0.211 5、成功,这时域内主机重启后&#xff0…

腾讯云CVM服务器2核2g1m带宽支持多少人访问?

腾讯云2核2g1m的服务器支持多少人同时访问?2核2g1m云服务器短板是在1M公网带宽上,腾讯云服务器网以网站应用为例,当大规模用户同时访问网站时,很大概率会卡在公网带宽上,所以压根就谈不上2核2G的CPU内存计算性能是否够…

sql 执行的顺序

在执行 SQL 查询时,通常会按照以下顺序进行处理: FROM 子句:指定要查询的表或视图。WHERE 子句:筛选满足特定条件的行。GROUP BY 子句:将结果按照指定的列进行分组。HAVING 子句:筛选满足特定条件的分组。…

烧写PYNQ镜像到SD卡

一,安装 Win32diskimager 首先将Micro SD卡插入读卡器的卡槽中,然后再将读卡器插入计算机USB接口,此时计算机将会识别到插入的可移动磁盘。双击打开Win32DiskImager-1.0.0.zip 压缩文件,里面win32diskimager-1.0.0-install.exe文…

Postman

Postman 简介下载安装 简介 Postman 是一款用于测试和开发 API(应用程序编程接口)的工具,它提供了用户友好的界面和丰富的功能,帮助开发者轻松地创建、测试、调试和文档化各种类型的 API。无论是在构建 Web 应用、移动应用还是其…

“深入解析Maven:安装、创建项目和依赖管理的完全指南“

目录 引言Maven的安装创建Maven项目之前的装备工作Eclipse创建新的Maven项目项目依赖管理 总结 引言 Maven是一个流行的项目管理工具,被广泛用于Java项目的构建、依赖管理和部署。它提供了一种简单而强大的方式来管理项目的各个方面,使开发人员能够更专…

LeetCode 1631. Path With Minimum Effort【最小瓶颈路;二分+BFS或DFS;计数排序+并查集;最小生成树】1947

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

阿里云PolarDB数据库倚天ARM架构详细介绍

阿里云云原生数据库PolarDB MySQL版推出倚天ARM架构,倚天ARM架构规格相比X86架构规格最高降价45%,PolarDB针对自研倚天芯片,从芯片到数据库内核全链路优化,助力企业降本增效。基于阿里云自研的倚天服务器,同时在数据库…

谁能讲清楚Spark之Spark系统架构

### 整体架构概述 Spark与Hadoop MapReduce的结构类似,Spark也采用Master-Worker结构。如果一个Spark集群由4个节点组成,即1个Master节点和3个Worker节点,那么在部署Standalone版本后,Spark部署的系统架构图如图2.1所示。简单来说,Master节点负责管理应用和任务,…

【0day】复现广联达-Linkworks 协同办公管理平台GetUserByUserCode接口存在SQL注入漏洞

目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 一、漏洞描述 广联达科技股份有限公司成立于1998年,以建设工程领域专业应用为核心基础支撑,以产业大数据、产业新金融等为增值服务的数字建筑平台服务商。广联达-Linkworks 协同办公管理平台GetUserByUserC…

pytest fixture 用于teardown工作

fixture通过scope参数控制setup级别,setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作。这里用到fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作。 举个例子: 输出: 说明&…

掌握Python的X篇_37_类的实例化、类方法

上篇我们已经学习了python中的类,并且学习到可以通过class关键字定义类,而类的最基本特性就是它是一个名称空间,本篇将会学习类的实例化。 文章目录 1. 类的实例化1.1__init__函数1.2 实例化流程 2. 类方法与成员 1. 类的实例化 上篇中新定义…

二十二、策略模式

目录 1、项目需求2、传统方案解决鸭子问题的分析和代码实现3、传统方式实现存在的问题分析和解决方案4、策略模式基本介绍5、使用策略模式解决鸭子问题6、策略模式的注意事项和细节7、策略模式的使用场景 以具体项目来演示为什么需要策略模式,策略模式的优点&#x…

贝锐蒲公英:快速搭建连锁门店监控体系,赋能企业高效管理

随着国民生活水平的提高和零售场景的变革,消费者对于餐饮类目的消费支出不断增加,线下社区生鲜商超作为下沉市场最主要的消费场景之一,蕴藏着巨大价值机会。 对于线下连锁生鲜超市而言,连锁门店多、员工多,门店管理时会…