• 【python】函数的使用


    一、函数与方法的区别

    • 直接调用的是函数
    • 通过对象点出来的是方法
    • 在Python中,函数和方法都是一段可重复使用的代码块,可以执行特定的任务。它们之间的区别在于它们的调用方式和应用场景。
    • 函数是独立的代码块,可以通过函数名直接调用。函数可以接受输入参数,并返回一个结果。函数可以在任何地方定义,不依赖于类或对象。
    • 方法是类中的函数,与特定的对象关联。方法必须通过对象或类进行调用。方法可以访问对象的属性,并对其进行操作。在调用方法时,方法自动传入关联的对象作为第一个参数,通常被称为 self。
    • 可以将函数视为独立的工具,而方法更像是与对象密切相关的行为。

    下面是函数和方法的使用:

    1. # 函数示例:
    2. def calculate_sum(a, b):
    3. return a + b
    4. result = calculate_sum(3, 4)
    5. print(result) # 输出:7
    6. # 方法示例:
    7. class Calculator:
    8. def __init__(self, value):
    9. self.value = value
    10. def add(self, number):
    11. self.value += number
    12. def get_value(self):
    13. return self.value
    14. # 创建 Calculator 对象
    15. calculator = Calculator(10)
    16. # 调用方法
    17. calculator.add(5)
    18. result = calculator.get_value()
    19. print(result) # 输出:15

    二、函数的定义

    • 使用关键字 def 来进行函数定义,后面指定函数名,还可在括号内指出参数。
    • 在Python中,函数是一段可重复使用的代码块,用于执行特定的任务。函数通常接受输入参数,并根据参数执行相应的操作,并最终返回一个结果。

    函数的定义通常包括以下几个部分:

    1. 函数头:函数头包括关键字 def,后跟函数名和一对圆括号 ()。函数名是我们给函数起的名称,用于标识和调用函数。括号内可以包含参数,用于接收函数调用时传递的输入值。

    2. 函数体:函数体是函数的主要部分,包括一组执行特定任务的语句。函数体通常由缩进块组成,用于标识函数体的范围。在函数体中,可以用来处理参数、执行操作,并最终返回结果。

    3. 返回值:函数可以选择性地返回一个结果。使用关键字 return 后跟要返回的值,可以将该值传递给函数的调用者。如果没有明确指定返回值,则函数默认返回 None

    下面是函数定义示例:

    1. def greet(name):
    2. """打印欢迎信息,使用传入的名字"""
    3. print("Hello, " + name + "!")
    4. # 调用函数
    5. greet("Alice") # 输出:Hello, Alice!

    在以上示例中,greet 是一个函数,接受一个参数 name,用于打印一条欢迎信息。在函数体内,使用 print 语句将欢迎信息输出到控制台。然后,我们调用函数 greet,并将参数 "Alice" 传递给它。

    【注意】函数定义后,可以在程序的任何地方调用函数,以重复执行其中的代码块

    定义一个函数,输出两个数字相加的结果

    1. def res(a, b):
    2. print(f'a={a}')
    3. print(f'b={b}')
    4. print(f'结果={a + b}')
    5. res(1, 2)
    • Python对于参数的传入是没有类型限制的
    • 不过可以通过给参数添加类型,提示调用时应传入的类型
    res(a: int, b: int)

    三、传参的几种方法

    1. 位置传参
      res(1, 2)

    2. 关键字传参
      res(a=1, b=2)

    3. 缺省参数
      1. res(a: int, b: int = 10)
      2. res(1)

      参数具备默认值的时候可以不传,具备默认值的参数需要放在没有默认值的参数后面

    4. 可变参数
      1. def res(*nums: int):
      2. val = 0
      3. for i in nums:
      4. val += i
      5. print(val)
      1. def res(**nums: int):
      2. val = 0
      3. for i in nums.values():
      4. val += i
      5. print(val)

    四、函数的返回值

    • 返回值不限类型,所以不需要指定返回类型
    • 使用 return 关键字
    • 可以通过元组的形式返回多个值

    编写一个函数,接受多个参数,返回最大值,最小值与总和

    1. def res(*nums: int):
    2. val = 0
    3. val_max = nums[0]
    4. val_min = nums[0]
    5. for i in nums:
    6. val += i
    7. val_min = i if i < val_min else val_max;
    8. val_max = i if i > val_max else val_max;
    9. return val, val_min, val_max

    五、函数的注释

    查看python中关于函数的说明: help()

    1. def res(a, b):
    2. """
    3. 两数相加
    4. :param a: 数字
    5. :param b: 数字
    6. :return: 结果
    7. """
    8. return a + b

    六、其他

    1、函数嵌套:

    • 定义求和函数
    • 在求和函数上完成平均值函数

    2、变量作用域:

    • 全局变量
    • 局部变量

    3、递归调用:

    计算1+n的和

    1. def res(target: int):
    2. if target <= 0:
    3. return '0'
    4. if target == 1:
    5. return 1
    6. return target + res(target - 1)

    计算斐波那契数列

    1. def res(target: int):
    2. if target <= 0:
    3. return '0'
    4. if target <= 2:
    5. return 1
    6. return res(target - 1) + res(target - 2)

    七、Lambda表达式

    1、作用

    • Lambda 表达式是 Python 中的一种小而简洁的匿名函数表示方法。与常规函数不同,Lambda 表达式可以在不定义函数名称的情况下创建函数对象。

    Lambda 表达式的作用有以下几个方面:

    1. 简化函数定义:Lambda 表达式的语法简洁,可以用一行代码定义简单的函数,不需要使用 def 关键字创建函数。

    2. 函数作为参数:Lambda 表达式可以作为其他函数的参数使用,尤其在需要传递简短函数逻辑的场景下非常方便。例如,在排序、映射、过滤等函数中经常会用到 Lambda 表达式作为参数。

    3. 代码的可读性:Lambda 表达式通常用于短小的函数逻辑,可以在代码中直接表示这些逻辑,避免了创建单独函数的繁琐过程。这样可以使代码更加简洁,更易于阅读和理解。

    4. 功能性扩展:Lambda 表达式可以与其他函数一起使用,增强了代码的功能性。通过使用 Lambda 表达式,我们可以在需要的地方快速创建并使用函数,而不必为每个小任务都创建新的函数定义。

    Lambda 表达式的基本语法是:lambda 参数: 表达式。其中,参数指定函数的输入参数,表达式指定函数的逻辑和返回值。

    下面是一个示例,展示了如何使用 Lambda 表达式来定义一个简单的加法函数:

    1. add = lambda x, y: x + y
    2. result = add(3, 5)
    3. print(result) # 输出:8

    lambda x, y: x + y 定义了一个匿名函数,接受两个参数 x 和 y,并返回它们的和。然后,我们将这个 Lambda 表达式赋值给变量 add,并在后续代码中使用 add 调用这个函数。最终,输出结果为 8。

    2、实例

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

    1. //常规
    2. Runnable r1=new Runnable() {
    3. @Override
    4. public void run() {
    5. System.out.println("你好");
    6. }
    7. };
    8. //lambda表达式
    9. Runnable r2=()->{
    10. System.out.println("你好");
    11. };

    但是 python中的表达式只能存在一行代码,使用 python 中的lambda来简化函数

    1. # 未简写
    2. def res():
    3. return 10
    4. # 简写
    5. res = lambda: 10
    6. 形式: lamdba 参数 : 执行操作/返回值

    编写一个函数,接受两个参数,并返回最大值

    1. def res(a, b):
    2. return a if a > b else b
    3. res = lambda a, b: a if a > b else b

    使用 lambda 对字典数据进行排序

    1. persons = [
    2. {"name": "张三", "age": 20},
    3. {"name": "李四", "age": 17},
    4. {"name": "王麻子", "age": 21}
    5. ]
    6. persons.sort(key=lambda p: p['age'], reverse=True)

    将一个元素中所有的值翻倍 map

    1. nums = [1, 2, 3, 4, 5, 6, 7]
    2. m = map(lambda a: a * 2, nums)
    3. for i in m:
    4. print(i)

    让集合中的对应位置进行相加

    1. nums1 = [1, 2, 3, 4, 5, 6, 7]
    2. nums2 = [2, 3, 4, 5, 6, 7, 8]
    3. m = map(lambda a, b: a + b, nums1, nums2)
    4. for i in m:
    5. print(i)

    对集合进行筛选

    1. nums = [1, 2, 3, 4, 5, 6, 7]
    2. f = filter(lambda a: a > 5, nums)
    3. for i in f:
    4. print(i)

  • 相关阅读:
    6. `Java` 并发基础之`ReentrantReadLock`
    云原生爱好者周刊:Prometheus 推出 Agent 模式来适应新的使用场景
    【人工智能Ⅰ】7-KNN & 决策树
    vue2人脸检测录入
    软件测试那十个不为人知的秘密,千万不要被误解了、
    ubuntu下同时安装和使用不同版本的库 librealsense
    神经网络模型数据处理,人工神经网络预测模型
    智昊电气推出RCL-0923U型光伏并网点电压自动控制装置/分布式光伏并网点电压自动控制设备/电压控制器
    Object 类——万类之父
    SwiftUI Swift 之正向地理编码与反向地理编码(教程含源码)
  • 原文地址:https://blog.csdn.net/weixin_74383330/article/details/133993657