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

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

1. 函数定义

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

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

2. 函数的类型

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

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

3. 函数参数

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

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

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

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

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

    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语句返回一个值,可以返回任意类型的对象(如数字、字符串、列表、字典等)。

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

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

def no_return():pass
print(no_return())  # 输出:None

5. 函数嵌套

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

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

6. 局部变量与全局变量

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

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

    global_var = 5
    def modify_global():global global_varglobal_var = 10
    modify_global()
    print(global_var)  # 输出:10
    

7. 递归函数

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

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

8. 匿名函数(Lambda函数)

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

# 示例:求平方
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.lryc.cn/news/533333.html

相关文章:

  • 青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用
  • CosyVoice /F5-TTS /GPT-SoVITS /Fish-Speech 开源语音克隆与文本转语音(TTS)项目的对比整理
  • MySQL基于binlog和gtid主从搭建方案
  • 5 计算机网络
  • Vim跳转文件及文件行结束符EOL
  • 智能理解 PPT 内容,快速生成讲解视频
  • 【鸿蒙开发】第二十四章 AI - Core Speech Kit(基础语音服务)
  • Java/Kotlin双语革命性ORM框架Jimmer(一)——介绍与简单使用
  • 番外02:前端八股文面试题-CSS篇
  • Redis Copilot:基于Redis为AI打造的副驾工具
  • JavaScript遍历对象的7种方式
  • 如何避免NACK重传风暴
  • 并发工具CountDownLatch、CyclicBarrier、Semaphore
  • 十二. Redis 集群操作配置(超详细配图,配截图详细说明)
  • 网络工程师 (26)TCP/IP体系结构
  • TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...
  • 保姆级教程--DeepSeek部署
  • 机器学习之心的创作纪念日
  • VeryReport和FastReport两款报表软件深度分析对比
  • libtorch的c++,加载*.pth
  • 去除 RequestTemplate 对象中的指定请求头
  • b s架构 网络安全 网络安全架构分析
  • 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型
  • Spring Boot和SpringMVC的关系
  • java基础4(黑马)
  • nodejs - vue 视频切片上传,本地正常,线上环境导致磁盘爆满bug
  • 注意力机制(Attention Mechanism)和Transformer模型的区别与联系
  • C++,设计模式,【单例模式】
  • C++:类和对象初识
  • 官网下载Redis指南