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

news/2024/11/16 20:51:57/

🥳🥳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.ppmy.cn/news/1028032.html

相关文章

华为网络篇 RIP的Slient-Interface-26

难度1复杂度 1 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 在默认情况下,RIP会在所有的接口泛洪路由更新信息(整个路由表),这里有一个问题,当RIP路由器连接的是一个末端网络时…

8.12学习笔记

在PyTorch中,Dataset和DataLoader是用于处理数据的两个重要类。Dataset类是一个抽象类,用于表示数据集。它的主要作用是将数据加载到内存中,并提供一种统一的方式来访问数据。为了使用Dataset类,你需要继承它并实现两个方法&#…

湘大 XTU OJ:1406 String Game、1098 素数个数 题解(非常详细)

1406 String Game 一、链接 1406 String Game 二、题目 题目描述 Alice和Bob正在玩一个基于字符串的游戏,一开始,Alice和Bob分别拥有一个等长的字符串S1和S2,且这两个字符串只包含小写字母。 在每个回合中,Alice和Bob必须分…

【C语言练习】——找出单身狗、详解atoi函数

目录 一.找出单身狗版本1版本2 二.atoi函数介绍atoi函数atoi函数的模拟实现 一.找出单身狗 版本1 题目: 一个数组中只有一个数字是出现一次,其他所有数字都出现了两次 找出这一个只出现一次的数字 一个数组比如是1、2、3、4、5、1、2、3、4 只有5出现一…

Python-OpenCV中的图像处理-霍夫变换

Python-OpenCV中的图像处理-霍夫变换 霍夫变换霍夫直线变换霍夫圆环变换 霍夫变换 霍夫(Hough)变换在检测各种形状的技术中非常流行,如果要检测的形状可以用数学表达式描述,就可以是使用霍夫变换检测它。即使要检测的形状存在一点破坏或者扭曲也是可以使…

阿里云账号注册入口_账户注册详细流程(图文)

阿里云账号怎么注册?阿里云账号支持手机号注册、阿里云APP注册、支付宝和钉钉多种注册方式,账号注册后需要通过实名认证才可以购买或使用云产品,阿里云百科来详细说下不同途径注册阿里云账号图文流程: 目录 阿里云账号注册流程 …

MySql012——检索数据:创建计算字段(拼接字段、使用别名、执行算术计算)

准备工作1:在study库中创建表vendors,并插入数据 说明:vendors表包含供应商名和位置信息。 use study;CREATE TABLE vendors (vend_id int NOT NULL AUTO_INCREMENT,vend_name char(50) NOT NULL ,vend_address char(50) NULL ,…

vue报错‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

运行我的后台管理项目的时候报错:‘vue-cli-service’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 查看自己package.json中是否有vue 或者vue-cli-service 查看自己项目目录下有没有node_module文件夹,如果有删除,然后…