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
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
1月前
|
存储 数据安全/隐私保护 索引
Python 散列类型三以及函数基础
【10月更文挑战第11天】
Python 散列类型三以及函数基础
|
25天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
31 4
|
26天前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
28天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
1月前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
31 4
|
1月前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
22 1
|
1月前
|
安全 数据处理 数据安全/隐私保护
python中mod函数怎么用
通过这些实例,我们不仅掌握了Python中 `%`运算符的基础用法,还领略了它在解决实际问题中的灵活性和实用性。在诸如云计算服务提供商的技术栈中,类似的数学运算逻辑常被应用于数据处理、安全加密等关键领域,凸显了基础运算符在复杂系统中的不可或缺性。
22 0
|
1月前
|
存储 程序员 Python
Python编程入门:探索变量和数据类型
【10月更文挑战第8天】本文是针对初学者的Python编程入门指南,重点介绍Python中变量的定义和使用以及不同的数据类型。我们将通过实例来理解基本概念,并展示如何在Python程序中应用这些知识。文章旨在帮助初学者建立扎实的基础,使他们能够更自信地编写Python代码。
|
3月前
|
存储 数据采集 人工智能
一:《Python基础语法汇总》— 变量与数据类型
【8月更文挑战第15天】本篇文章详细讲述了关于变量的命名规范,id()函数及Python的数据类型与强制转换
27 2
下一篇
无影云桌面