7-5python函数-变量的作用域

简介: 局部变量是在函数内部定义的变量,只能在函数内部使用;

文章目录


7.5.1、局部变量和全局变量

7.5.2、局部变量

7.5.3 、局部变量的作用

7.5.4、局部变量的生命周期(局部变量作用范围)

7.5.5 、全局变量(全局变量作用范围)

7.5.6、全局变量与局部变量重名

7.5.7、global关键字

7.5.8、 练习


7.5.1、局部变量和全局变量


局部变量是在函数内部定义的变量,只能在函数内部使用;

全局变量是在函数外部定义的变量(没有定义在某一个函数内) ,所有函数

内部都可以使用这个变量,


提示:在其他的开发语言中,大多不推荐使用全局变量-可变范围太大, 导致

程序不好维护!


7.5.2、局部变量


局部变量是在函数内部定义的变量,只能在函数内部使用;

函数执行结束后,函数内部的局部变量,会被系统回收;

不同的函数,可以定义相同的名字的局部变量,彼此之间不会产生影响;


7.5.3 、局部变量的作用


在函数内部使用,临时保存函数内部需要使用的数据


总结


●局部变量

。函数内部定义的变量就是局部变量

。局部变量只能在函数内部使用

。不同的函数局部变量名字可以相同

●全局变量

。函数外部定义的变量就是全局变量

。全局变量在所有函数内部也可以使用

。局部变量能解决的问题,不要通过全局变量解决,尽量少定义全局变量


7.5.4、局部变量的生命周期(局部变量作用范围)

def my_func1():
    a = 1   # a是一个局部变量,只属于my_func1函数
    print(a)
def my_func2():
    a = 2   # a是一个局部变量,只属于my_func2函数
    print(a)
my_func1()  # 调用函数的时候,局部变量a出现了
# my_func1函数调用完毕,a 消失了
# 定义函数的时候局部变量并不存在,只有调用函数的时候局部变量出现了


●局部变量从调用函数的时候开始在内存出现,函数调用完毕,局部变量从内存消失

●如果一个函数内部定义了局部变量,但这个函数没有被调用,那么局部变量也不在内存中存


7.5.5 、全局变量(全局变量作用范围)


全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量

为了保证所有的函数都能够正确使用到全局变量,应该将全局变量定义放在其他函数上方。


●全局变量一般定义在函数定义的上方

●全局变量从定义变量开始在内存中出现,一直到程序运行完成,和程序起从内存中消失

num1 = 2
def my_func1():
    print(num1)
def my_func2():
    print(num1)
my_func1()
num1 = 10
my_func2()
执行结果
"D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/15全局变量.py
2
10


7.5.6、全局变量与局部变量重名


●如果在函数内部定义一个变量名字和全局变量重名,那么在这个函数内部只能使用局部变

num1 = 1
def my_func1():
    num1 = 10   # 这里不是为全局变量赋值,这里是定义了一个局部变量,名字和全局变量重名
    print(num1)  # 打印的是局部变量num1的值
    num1 += 1 # 这里改的是局部变量num1的值
def my_func2():
    print(num1)  #  全局变量num1
my_func1()
my_func2()
print(num1)     # 打印的是全局变量的num1的值


注意:只是在函数内部定义了一个局部变量而已,只是变量名相同在函数内部不能直接修改全局变量的值。


7.5.7、global关键字


如果在函数中需要修改全局变量,需要使用global 进行声明


●当需要在函数内部修改全局变量的值,修改前需要用global修饰全局变量的名字

def 函数():
    global 全局变量名
    全局变量名 = 值
num1 = 10
def my_func1():
    global num1  # 函数内部就不存在和全局变量重名的局部变量
    num1 = 1  # 这里是给全局变量num1 修改值
def my_func2():
    print(num1)  # 如果在函数内部不修改全局变量的值,就不用global
print(num1)
my_func1()
print(num1)
执行结果:
"D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/17在函数内部修改全局变量的值.py
10
1
Process finished with exit code 0
num1 = 10
def my_func1():
    # global num1  # 函数内部就不存在和全局变量重名的局部变量
    num1 = 1  # 这里是给全局变量num1 修改值
def my_func2():
    print(num1)  # 如果在函数内部不修改全局变量的值,就不用global
print(num1)
my_func1()
print(num1)
执行结果
"D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/17在函数内部修改全局变量的值.py
10
1
Process finished with exit code 0


7.5.8、 练习


定义一个全局变量name="张三”,定义一个函数my_ test1, 在函数my_ test1 内部

修改全局变量name的值为”李四”

name = "张三"
def my_test1():
    global name
    name = "李四"
my_test1()
print(name)
执行结果:
"D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/18练习-在函数内部修改全局变量的值.py
李四
ished with exit code 0


变量的作用域

a = 1
def my_test1():
    global a
    a = 2
def my_test2():
    a = 3  # 这里的a是一个只在my_test2里面的局部变量
    my_test1()
print(a) # 程序入口在这里
my_test2()
print(a)
执行结果:
"D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/19变量作用域.py
1
2
Process finished with exit code 0


相关文章
|
1月前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
118 68
|
7天前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
36 9
|
14天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
25 3
|
17天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
28 2
|
2天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
7 0
|
1月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
57 18
|
1月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
72 8
|
1月前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
39 9
|
1月前
|
Python
Python中的函数
Python中的函数
50 8
|
2月前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
43 0