入门 Python 语言:Python函数

部署运行你感兴趣的模型镜像

入门 Python 语言:Python函数

目录

入门 Python 语言:Python函数

✨前言✨

📚本篇目标

🔥重难点说明

重点

难点

📖学习正文

函数定义与调用

函数参数

位置参数

关键字参数

默认参数

可变参数

函数返回值

局部变量与全局变量

💻练习题

单选题-5

多选题-3

判断题-2

代码题-1

📝答案解析

单选题

多选题

判断题

代码题

总结

Python的优势对比于 C++ 的维度点说明


✨前言✨

本系列文章目的在于将 Python 的基础内容完全夯实,最终目的是为后期的深度学习在算法上有一定的铺垫,前期在学习数学的过程中也会有很大的帮助,相对于 C++ 来说 Python 有自身的优势,文末会有 Python 的优势对比于 C++ 的维度点说明,我已经先写过 C++的基础使用 了,两种语言各自有各自的优势,我们要根据具体的需求来分析使用哪种语言更为方便,其它的语言暂时不在考虑范畴之内,我们的目标是AI深度学习。

前置环境与代码结构文章:

1、Python 环境配置与Jupyter Notebook开发工具下载使用

2、入门 Python 语言:Python基础课程目录

📚本篇目标

  1. 让初学者理解 Python 函数的基本概念和作用。
  2. 掌握函数的定义和调用方法。
  3. 熟悉不同类型的函数参数,包括位置参数、关键字参数、默认参数和可变参数的使用。
  4. 理解函数返回值的意义,以及局部变量和全局变量的区别与使用。

🔥重难点说明

重点

  • 函数的定义和调用流程,确保能够正确封装和使用代码块。
  • 不同类型参数的特点和传递方式,以便在函数调用时能灵活运用。
  • 函数返回值的处理,以及局部变量和全局变量作用域的区分。

难点

  • 可变参数的使用,理解其在函数内部的处理逻辑。
  • 局部变量和全局变量的作用域问题,避免在编程中出现变量使用混乱的情况。

📖学习正文

函数定义与调用

在 Python 中,使用 def 关键字来定义函数,格式为 def 函数名(参数列表):。函数定义后,可通过函数名加括号的方式调用。

def greet():
    print("Hello!")

# 调用函数
greet()

执行效果:

Hello!

函数参数

位置参数

位置参数是最常见的参数类型,调用函数时,按照参数定义的顺序依次传递值。

def add(a, b):
    return a + b

result = add(3, 5)
print(result)

执行效果:

8
关键字参数

关键字参数允许在调用函数时通过参数名指定传递的值,不依赖参数的位置。

def person_info(name, age):
    print(f"Name: {name}, Age: {age}")

person_info(age=25, name="Alice")

执行效果:

Name: Alice, Age: 25
默认参数

默认参数在定义函数时为参数指定一个默认值,调用函数时如果没有传递该参数,则使用默认值。

def power(x, n=2):
    return x ** n

print(power(3))
print(power(3, 3))

执行效果:

9
27
可变参数

可变参数允许函数接受不定数量的参数,使用 * 来定义。在函数内部,可变参数被当作元组处理。

def sum_numbers(*numbers):
    total = 0
    for num in numbers:
        total += num
    return total

print(sum_numbers(1, 2, 3))

执行效果:

6

函数返回值

函数可以使用 return 语句返回一个值,调用函数时可以接收这个返回值进行后续处理。

def multiply(a, b):
    return a * b

product = multiply(4, 6)
print(product)

执行效果:

24

局部变量与全局变量

局部变量是在函数内部定义的变量,只能在函数内部使用;全局变量是在函数外部定义的变量,可以在整个程序中访问。

# 全局变量
global_var = 10

def test():
    # 局部变量
    local_var = 20
    print(f"Local variable: {local_var}")
    print(f"Global variable: {global_var}")

test()
# 尝试访问局部变量会报错
# print(local_var) 

执行效果:

Local variable: 20
Global variable: 10

💻练习题

单选题-5

  1. Python 中定义函数使用的关键字是?
    A. function
    B. def
    C. define
    D. fn

  2. 对于函数 def func(a, b=2):,以下调用方式正确的是?
    A. func ()
    B. func (1)
    C. func (b=1)
    D. func (a=1, b)

  3. 以下关于函数返回值的说法,正确的是?
    A. 函数只能返回一个值
    B. 函数可以没有返回值
    C. 函数返回值只能是整数
    D. 函数必须有返回值

  4. 可变参数在函数内部以什么形式存在?
    A. 列表
    B. 元组
    C. 字典
    D. 集合

  5. 以下代码的输出结果是?

    x = 5
    def change_x():
        x = 10
        print(x)
    
    change_x()
    print(x)

    A. 10 10
    B. 5 10
    C. 10 5
    D. 5 5

多选题-3

  1. 以下属于函数参数类型的有?
    A. 位置参数
    B. 关键字参数
    C. 默认参数
    D. 可变参数

  2. 关于局部变量和全局变量,以下说法正确的是?
    A. 局部变量只能在函数内部使用
    B. 全局变量可以在函数内部和外部使用
    C. 在函数内部可以修改全局变量的值
    D. 局部变量和全局变量可以同名

  3. 函数调用时,以下哪些情况是合理的?
    A. 传递的参数数量与函数定义的参数数量一致
    B. 使用关键字参数传递部分参数
    C. 省略默认参数的传递
    D. 传递可变数量的参数

判断题-2

  1. 函数定义中的参数顺序可以随意调整,不影响函数的调用。( )
  2. 在函数内部如果没有使用 global 关键字,不能直接修改全局变量的值。( )

代码题-1

编写一个函数,接受可变数量的整数参数,返回这些整数的平均值。

📝答案解析

单选题

  1. 答案:B
    • 在 Python 中,使用 def 关键字来定义函数,所以选 B。
  2. 答案:B
    • 函数 func 有一个位置参数 a 和一个默认参数 b。选项 A 没有传递必需的位置参数 a,错误;选项 B 传递了位置参数 a,使用默认值 b = 2,正确;选项 C 没有传递位置参数 a,错误;选项 D 语法错误,关键字参数 b 后面不能没有值。所以选 B。
  3. 答案:B
    • 函数可以没有返回值,不使用 return 语句或者 return 后面不跟值都表示没有返回值;函数可以返回多个值(以元组形式);返回值可以是任意数据类型。所以选 B。
  4. 答案:B
    • 可变参数在函数内部以元组形式存在,所以选 B。
  5. 答案:C
    • 在 change_x 函数内部定义了一个局部变量 x,其值为 10,所以函数内部打印的是 10;而函数外部的全局变量 x 的值没有被修改,仍然是 5,所以最后打印的是 5。因此选 C。

多选题

  1. 答案:ABCD
    • 位置参数、关键字参数、默认参数和可变参数都是 Python 函数中常见的参数类型,所以选 ABCD。
  2. 答案:ABD
    • 局部变量只能在函数内部使用,全局变量可以在函数内部和外部使用;在函数内部如果要修改全局变量的值,需要使用 global 关键字声明;局部变量和全局变量可以同名,在函数内部使用时优先使用局部变量。所以选 ABD。
  3. 答案:ABCD
    • 传递的参数数量与函数定义的参数数量一致是基本要求;可以使用关键字参数传递部分参数;默认参数在调用时可以省略;函数定义了可变参数时,可以传递可变数量的参数。所以选 ABCD。

判断题

  1. 答案:错误
    • 位置参数的顺序不能随意调整,否则会导致参数传递错误,影响函数的调用结果。所以该说法错误。
  2. 答案:正确
    • 在函数内部如果没有使用 global 关键字,对与全局变量同名的变量赋值会创建一个局部变量,而不会修改全局变量的值。所以该说法正确。

代码题

def average(*numbers):
    if len(numbers) == 0:
        return 0
    total = sum(numbers)
    return total / len(numbers)

print(average(1, 2, 3, 4, 5))

函数 average 接受可变数量的整数参数,首先判断参数数量是否为 0,如果为 0 则返回 0;否则计算所有参数的总和并除以参数的数量,得到平均值并返回。

总结

本文全面介绍了 Python 函数的相关知识,包括函数的定义与调用、不同类型的参数(位置参数、关键字参数、默认参数、可变参数)、函数返回值以及局部变量和全局变量。通过示例代码展示了函数的使用方法和执行效果,并通过练习题加深了对这些知识点的理解和运用。掌握函数的使用能让我们更高效地组织和复用代码,为编写更复杂的 Python 程序奠定基础。

Python的优势对比于 C++ 的维度点说明

对比维度Python 优势C++ 情况
性能效率1. 开发效率高:代码简洁,语法灵活,能够用较少的代码实现相同的功能,缩短开发周期。
2. 有高性能库支持:对于计算密集型任务,可以使用如 NumPy、Pandas 等高性能库,它们底层使用 C 或 Fortran 实现,能在一定程度上弥补 Python 执行速度慢的问题。
1. 开发效率低:代码相对冗长,需要编写更多的代码来实现相同功能,开发周期较长。
2. 开发难度大:需要手动管理内存,容易出现内存泄漏等问题,对开发者要求较高。
底层控制能力1. 代码编写简单快速:无需关注底层硬件细节,能让开发者更专注于业务逻辑的实现,快速搭建应用原型。
2. 适合快速迭代开发:在应用开发过程中,能够快速对代码进行修改和调整,适应不断变化的需求。
1. 代码编写复杂:需要对底层硬件有深入了解,编写代码时要处理很多底层细节,开发难度大。
2. 开发周期长:由于需要关注底层,代码的修改和调整相对困难,不适合快速迭代开发。
语言特性1. 语法简洁易懂:代码可读性高,易于学习和上手,降低了编程门槛,适合初学者。
2. 动态类型灵活:在编写代码时无需提前声明变量类型,能够根据需要灵活赋值,提高了代码的编写效率。
1. 语法复杂:学习成本较高,对于初学者来说有一定难度。
2. 静态类型不够灵活:在编写代码时需要提前声明变量类型,不够灵活,修改代码时可能需要对类型进行调整。
可移植性1. 跨平台部署方便:只要安装了相应的 Python 解释器,代码可以在不同操作系统上轻松运行,无需重新编译。
2. 云服务支持好:很多云服务平台都提供了 Python 运行环境,方便将 Python 应用部署到云端。
1. 跨平台编译麻烦:不同操作系统的编译器和运行时环境可能存在差异,需要针对不同平台进行编译和调试。
2. 云服务集成复杂:将 C++ 应用部署到云服务平台时,需要处理更多的底层配置和依赖问题。
生态系统和工具链1. 库丰富且易用:拥有大量的开源库和框架,涵盖了数据分析、机器学习、Web 开发等多个领域,能够快速实现各种功能。
2. 社区活跃:有庞大的开发者社区,遇到问题可以很容易找到解决方案和技术支持。
1. 库学习成本高:虽然有很多专业级库,但部分库的学习曲线较陡,使用起来有一定难度。
2. 社区相对较小:相比 Python 社区,C++ 社区规模相对较小,获取技术支持和解决方案的渠道相对较少。
安全性和稳定性1. 内置安全机制:有一些内置的安全机制,如异常处理机制,能够在程序出现错误时进行捕获和处理,避免程序崩溃。
2. 代码审查相对容易:简洁的语法和动态类型使得代码结构相对简单,在代码审查时更容易发现问题。
1. 手动管理易出错:手动管理内存和资源容易出现错误,如内存泄漏、悬空指针等,影响程序的稳定性和安全性。
2. 代码审查复杂:由于语法复杂,代码结构可能比较复杂,在代码审查时需要花费更多的时间和精力。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值