6.Python函数:函数定义、函数的类型、函数参数、函数返回值、函数嵌套、局部变量、全局变量、递归函数、匿名函数

news/2025/2/9 6:15:22 标签: python, 开发语言

1. 函数定义

Python函数通过def关键字定义。一个函数通常包括函数名、参数列表和函数体。

python">def greet(name):
    return f"Hello, {name}!"

2. 函数的类型

Python中的函数主要有以下几种类型:

  • 普通函数:具有明确的输入参数和返回值。
  • 递归函数:函数内部调用自身。
  • 匿名函数(Lambda函数):没有名字的小函数,通常用于简单的操作。

3. 函数参数

函数的参数有不同的形式:

  • 位置参数:按照定义顺序传入参数。

    python">def add(a, b):
        return a + b
    add(1, 2)  # 输出:3
    
  • 默认参数:为参数指定默认值,如果调用时没有传入该参数,使用默认值。

    python">def greet(name, greeting="Hello"):
        return f"{greeting}, {name}!"
    print(greet("Alice"))  # 输出:Hello, Alice!
    print(greet("Alice", "Good Morning"))  # 输出:Good Morning, Alice!
    
  • 可变参数(*args:接收多个位置参数,将它们作为元组传递给函数。

    python">def sum_all(*args):
        return sum(args)
    print(sum_all(1, 2, 3))  # 输出:6
    
  • 关键字参数(**kwargs:接收多个关键字参数,将它们作为字典传递给函数。

    python">def print_info(**kwargs):
        for key, value in kwargs.items():
            print(f"{key}: {value}")
    print_info(name="Alice", age=25)
    # 输出:
    # name: Alice
    # age: 25
    

4. 函数返回值

Python函数通过return语句返回一个值,可以返回任意类型的对象(如数字、字符串、列表、字典等)。

python">def multiply(x, y):
    return x * y
result = multiply(2, 3)  # 输出:6

如果没有return语句,函数将默认返回None

python">def no_return():
    pass
print(no_return())  # 输出:None

5. 函数嵌套

函数可以在另一个函数内定义,称为函数嵌套。内嵌的函数只能在外部函数内部使用。

python">def outer():
    def inner():
        return "Hello from the inner function!"
    return inner()
print(outer())  # 输出:Hello from the inner function!

6. 局部变量与全局变量

  • 局部变量:在函数内部定义的变量,只能在该函数内部访问。

    python">def example():
        local_var = 10
        print(local_var)
    example()  # 输出:10
    
  • 全局变量:在函数外部定义的变量,可以在函数内部访问。可以通过global关键字在函数内修改全局变量的值。

    python">global_var = 5
    def modify_global():
        global global_var
        global_var = 10
    modify_global()
    print(global_var)  # 输出:10
    

7. 递归函数

递归函数是函数内部调用自身。递归通常需要一个终止条件,否则会导致无限递归,最终引发RecursionError

python">def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)
print(factorial(5))  # 输出:120

8. 匿名函数(Lambda函数)

lambda函数是没有名字的小函数,通常用于需要简单操作的场合。语法为:lambda 参数: 表达式

python"># 示例:求平方
square = lambda x: x ** 2
print(square(3))  # 输出:9

# 示例:排序
data = [(1, 'one'), (3, 'three'), (2, 'two')]
data.sort(key=lambda x: x[0])
print(data)  # 输出:[(1, 'one'), (2, 'two'), (3, 'three')]

总结

  • 函数定义:通过def定义。
  • 函数类型:包括普通函数、递归函数和匿名函数。
  • 函数参数:支持位置参数、默认参数、可变参数和关键字参数。
  • 返回值:通过return语句返回,默认为None
  • 函数嵌套:可以在函数内部定义其他函数。
  • 局部变量与全局变量:局部变量仅在函数内有效,global关键字用于修改全局变量。
  • 递归函数:函数调用自身,通过终止条件避免无限递归。
  • 匿名函数(Lambda函数):简单的匿名函数,适合短小的操作。

http://www.niftyadmin.cn/n/5845678.html

相关文章

深入解析:React 事件处理的秘密与高效实践

在 React 中,事件处理是构建交互式应用的核心。本文将带你深入探索 React 事件处理的机制、最佳实践以及如何避免常见陷阱,助你写出更高效、更健壮的代码。 1. React 事件处理的独特之处 合成事件(SyntheticEvent) React 使用合…

LabVIEW之TDMS文件

在很多场合,早期的LabVIEW版本不得不借助常规的数据库来做一些数据管理工作,但常规数据库对于中高速数据采集显然是不合适的,因为高速数据采集的数据量非常大,用一般的数据库无法满足存储数据的要求。 直到TDM(Technical Data Ma…

CentOS虚机在线扩容系统盘数据盘

最近在制作Openstack下的镜像,用户需要CentOS6以及CentOS7的虚机镜像,遇到了些关于系统盘以及数据盘在线扩容的问题,故此整理一下。 ​ 传统我们想对磁盘在线热扩容,必然会想到LVM逻辑卷。如果没有LVM逻辑卷的情况下,…

【ArcGIS】R语言空间分析、模拟预测与可视化技术

R语言在空间数据挖掘中具有广泛的应用,以下是一些关键内容和常用包的介绍: R语言空间数据挖掘的关键技术 空间数据类型 矢量数据:包括点(Point)、线(Line)、面(Polygon)等…

胶质瘤患者功能性磁共振成像数据分析的最佳方法

背景: 静息态功能磁共振成像(rs-fMRI)越来越多地被用于研究胶质瘤对大脑功能组织的影响。文献中出现了各种预处理技术和功能连接分析方法。然而,迄今为止还没有对不同方法如何影响观察结果进行系统性比较。 新方法: 我们首先调查了当前文献并确定了该领…

Model ML:重塑华尔街工作方式的AI驱动金融研究平台

在当今快速发展的金融科技领域,人工智能(AI)正在改变传统的金融分析和研究方式。Model ML 是一款由两位连续创业者 Chaz 和 Arnie Englander 兄弟创立的AI驱动工作空间,旨在自动化并简化金融研究、尽职调查和数据分析过程。本文将详细介绍 Model ML 的核心功能、差异化优势…

PySide(PyQT)使用场景(QGraphicsScene)进行动态标注的一个demo

用以标注图像的一个基本框架demo import sys from PySide6.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QMainWindow, QLabel, QGraphicsPixmapItem from PySide6.QtGui import QPixmap, QPainter, QTransform from PySide6.QtCore import Qt, QPointF, S…

软件工程的熵减:AI如何降低系统复杂度

软件开发的世界,如同一个不断膨胀的宇宙。随着功能的增加和时间的推移,代码库越来越庞大,系统复杂度也随之水涨船高。代码膨胀、维护困难、开发效率低下等问题困扰着无数开发者。这不禁让人联想到物理学中的“熵增”原理——一个孤立系统的熵…