Python笔记:函数对象与变量作用域详解
需积分: 0 22 浏览量
更新于2024-08-30
收藏 611KB PDF 举报
本篇笔记记录了2020年3月19日关于Python编程的学习内容,主要涵盖了函数作为对象的概念,以及变量的作用域——全局变量和局部变量的区分与管理。以下是详细的知识点:
1. **函数也是对象**:
Python中,函数可以被视为对象,可以通过赋值给变量或作为参数传递。例如,`def test01():` 定义了一个函数,随后通过 `c = test01` 将函数赋值给变量 `c`,这表明函数是可以存储的对象。`c()` 调用函数,显示了函数作为对象的特性。
2. **变量作用域**:
- **全局变量**:在函数和类定义外部声明的变量,其作用域覆盖整个模块,如 `a=3`。全局变量应谨慎使用,尽量避免副作用,并通过 `global` 关键字在函数内部修改。
- **局部变量**:在函数体内定义的变量,如 `deftest01(): b=4`,局部变量的作用域仅限于函数内部。当函数结束时,局部变量会自动销毁。若函数内部有同名全局变量,局部变量会遮盖全局变量。
3. **效率测试**:
部分内容提到了局部变量的引用通常比全局变量更快,因为Python解释器更倾向于使用局部变量。
4. **参数传递**:
- **不可变对象的引用**:Python中的不可变对象(如数字、元组)传递的是对象的引用,而非副本,因此改变传入函数的不可变对象不会影响原对象。
- **可变对象的引用**:对于可变对象(如列表、字典),传递的是引用,函数内部的操作会改变原对象。
5. **浅拷贝和深拷贝**:
当传递不可变对象时,实际上是进行浅拷贝,而对象内部的引用仍指向原始数据。深拷贝用于复杂的数据结构,如字典或列表,它会创建全新的对象,独立于原始对象。
6. **函数参数类型**:
- **位置参数**:按顺序传递的参数。
- **默认值参数**:提供预设值,如果没有指定则使用默认值。
- **命名参数**:允许按名称而不是位置来传递参数,便于控制和理解。
- **可变参数**:`*args` 用于处理不定数量的位置参数,`**kwargs` 用于处理关键字参数。
7. **lambda表达式和匿名函数**:
Python中的匿名函数,可以用在需要函数对象但又不想定义完整函数的情况。`lambda x: x * x` 是一个简单的例子,表示接收一个参数并返回其平方。
8. **eval()函数**:
这个函数可以执行字符串作为Python代码,但使用时需谨慎,因为它能执行任何代码,可能带来安全风险。
9. **递归函数**:
函数调用自身的过程,适用于解决需要重复执行相同逻辑的问题,如树形结构遍历。
综上,这篇笔记围绕函数对象、变量作用域、参数传递等核心概念展开,帮助读者理解和掌握Python编程中的重要知识点。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-09-14 上传
2020-12-21 上传
2021-04-04 上传
2021-02-21 上传
2021-02-20 上传
点击了解资源详情
weixin_38666823
- 粉丝: 5
- 资源: 971
最新资源
- Manning - Spring in Action (2007).pdf
- 食品类公司网站建设方案
- C# 日期函数 string.Format
- SAP财务成本知识库.pdf
- 很好的 学校网站方案
- 第11界全国青少年信息学奥林匹克联赛初赛试题(C语言)
- 协会学会网站建设方案
- 网上书店管理系统详细分析
- 软件需求分析 图形解释的
- S3C44B0X 中文数据手册
- 基于FLAASH的多光谱影像大气校正应用研究
- 基于J2EE的Ajax宝典.pdf
- 如何发表SCI论文,希望对大家有帮助!
- c# 提供面试题大全
- C++ Core 2000
- The MIT Press Essentials of Programming Languages 3rd Edition Apr 2008