Python函数的作用域与全局变量
需积分: 35 128 浏览量
更新于2024-08-17
收藏 106KB PPT 举报
"Python函数的定义、命名规则、作用域、参数、返回值和全局与局部变量的使用"
在Python编程中,函数是一种重要的组织代码的方式,它可以实现特定功能并重复使用,提高代码的效率和可读性。函数的定义通常采用`def`关键字,后跟函数名和参数列表,如`def function_name(arg1, arg2):`。如果函数没有返回值,Python会默认返回`None`。
函数名的命名遵循一定的规则:以字母或下划线开头,可包含字母、数字和下划线,且区分大小写,不能使用保留字。Python有名称空间的概念,不同的对象存在于不同的作用域中。全局作用域通常指在模块级别定义的变量,而函数内部定义的变量属于局部作用域,仅在函数内部有效。
在查找变量时,Python遵循LGB(Local, Global, Built-in)规则。首先在局部作用域查找,找不到则到全局作用域查找,再找不到会尝试查找内置作用域。如果要在局部作用域中修改全局变量,需要使用`global`关键字声明。例如:
```python
global a
a = 2
def test(b):
global a # 声明a为全局变量
a = b * a # 修改全局变量a
return a
test(10)
print(a) # 输出结果为20
```
在上述例子中,`global a`使得在`test`函数内部对`a`的赋值操作影响到了全局变量`a`。
不使用`global`关键字时,函数内部的变量只在函数内部有效,不会影响全局变量。例如:
```python
name = "Jims"
def set():
name = "ringkee" # 这里创建了一个局部变量name
set()
print(name) # 输出 "Jims",因为这里访问的是全局变量name
# 使用global后的例子
name = "Jims"
def set1():
global name
name = "ringkee" # 修改全局变量name
set1()
print(name) # 输出 "ringkee",因为全局变量name已被修改
```
在函数的参数传递中,Python采用“传对象引用”而非“传值”。这意味着,如果参数是可变对象(如列表、字典),函数内部对参数的修改会影响到原始对象;如果是不可变对象(如整数、字符串),则会在函数内部创建新的对象。
函数还可以有返回值,通过`return`语句指定。如果省略`return`,函数将默认返回`None`。例如:
```python
def add(x, y):
return x + y
result = add(3, 5)
print(result) # 输出8
```
此外,Python提供了许多内置函数,如`len()`、`type()`、`print()`等,可以直接使用,无需自己定义。
练习题目可以帮助巩固这些概念,例如编写一个函数,计算两个数的和,并考虑函数无返回值和有返回值的不同情况。理解并熟练应用这些知识,将有助于编写出更加高效、易维护的Python程序。
2019-09-13 上传
2022-03-11 上传
2022-02-10 上传
2023-06-28 上传
2022-02-26 上传
2021-03-25 上传
2021-03-20 上传
2021-03-14 上传
2021-04-01 上传
顾阑
- 粉丝: 19
- 资源: 2万+
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析