20.python之局部变量和全局变量

本文详细介绍了Python中的全局变量和局部变量,包括它们的定义和使用场景。通过示例代码展示了如何在函数内部修改全局变量,以及全局函数`globals()`和`locals()`的作用。此外,还讲解了魔术变量`name`和`doc`的用途。
摘要由CSDN通过智能技术生成

变量

全局变量

  • 在python中最上层代码块的变量
  • 全部变量可以在函数内使用

局部变量

  • 在函数体内定义的变量
  • 不可以在除自身函数外使用

例:

# 全局变量
name = '张三'

def test():
    # 局部变量
    age = 11

关键字global

  • 使全局变量可以在函数体内进行修改
  • 仅支持字符串、数字、布尔类型、空类型
  • 列表、字典和集合类型的数据无需global就可以在函数体中修改

例:

str1 = 'aa'
str2 = 'bb'
int1 = 123
int2 = 321
list1 = [1, 'a']
dict1 = {'name':'张三'}
set1 = {1, 2}
def test():
    global str1
    global int1
    str1 = 'aaaaaaaaa'  # 字符串类型,在函数中使用了global,变量改变
    str2 = 'bbbbbbbbb'  # 字符串类型,在函数中没有使用了global,变量不变
    int1 = '111111111'  # 数字类型,在函数中使用了global,变量改变
    int2 = '222222222'  # 数字类型,在函数中没有使用了global,变量不变
    list1.append('11111')  # 列表类型,无需使用global也可在函数体中修改
    dict1['age'] = 10  # 字典类型,无需使用global也可在函数体中修改
    set1.add('33')  # 集合类型,无需使用global也可在函数体中修改

test()
print('str1是{}'.format(str1))  
print('str2是{}'.format(str2))  
print('int1是{}'.format(int1))  
print('int2是{}'.format(int2))  
print('list1是{}'.format(list1))  
print('dict1是{}'.format(dict1))  
print('set1是{}'.format(set1)) 

结果:
在这里插入图片描述

globals和locals

  • globals():获取全局变量
  • locals():获取当前作用域的数据

例:

a = 1
def t():
    b = 2
    print(f'函数体内:{globals()}')
    print(f'函数体内:{locals()}')

# 在函数体内,globals和locals获取的是不一样的,因为当前作用域就是局部的
t()

# 在函数体外,globals和locals获取到的是一样的,因为当前作用域就是全局的
print(f'函数体外:{globals()}')
print(f'函数体外:{locals()}')

在这里插入图片描述
根据运行结果可以看出,在函数外2个结果是一样的,因为此时作用于全局;在函数内结果不一样,此时作用于局部

魔术变量拓展:

  • name:若当前脚本作为主程序运行,则是__main__;若是当前脚本作为模块被其他脚本引用,则是当前的文件名称xx.py
  • doc:当前脚本的文档说明,即第一个三引号中的内容;例如:获取某个函数的文档说明:函数名.doc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值