百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python基础 - 变量的作用域(python中变量由什么组成)

itomcoil 2025-04-10 23:49 11 浏览

变量的作用域决定了变量在程序中的可见性和生命周期。

在Python中,变量的作用域有以下几种:

  • 局部作用域(当前函数内部)
  • 嵌套作用域(外层函数)
  • 全局作用域(模块级别)
  • 内置作用域(Python的内置函数和内置变量)

局部作用域

函数内的变量通常称为局部变量,只有该函数内部可见,函数外无法访问,函数执行结束时,该变量会被销毁。

示例如下:

def access_local():
    v = 100  # 局部变量
    print(v)
    
# 输出: 100
access_local()

# 以下语句会报错,因为v是access_local()的内部变量,外部不可见
# print(v)

嵌套作用域

在 Python 中,可以在一个函数(外部函数)中定义另一个函数(内部函数),内部函数可以访问外部函数的变量,外部函数的变量也称为嵌套作用域变量。外部函数变量仅对外部函数内部可见,外部函数外不可访问,因为外部函数和内部函数都可以访问该变量,所以其生命周期会受到这两个函数的共同影响。

示例如下:

def outer_func():
    def inner_func():
        print(v)  # 内部函数可以访问外部函数的变量

    v = 100
    inner_func()
    
# 输出: 100
outer_func()

全局作用域

在函数外定义的变量称为全局变量,在整个模块(或文件内)可见,全局变量在整个程序运行结束后销毁。 如果模块外部要访问模块内部定义的全局变量,常用的方法是通过 import 导出这个模块到外部。

示例如下:

v = 100  # 全局变量
def access_global():
    print(v)
    
# 输出: 100
access_global()

内置作用域

内置作用域的函数和变量在任何模块都可以随时访问,例如,常见的内置函数有 len()、print() 等,常见的内置变量有 None、True、False等。

有一个重要的内置变量是需要注意的,它是 __name__,当 Python 文件作为脚本直接运行时,__name__ 的值为 '__main__',当 Python 文件作为模块被其他文件导入时,__name__ 的值为模块名称,因此,__name__ 通常用于区分 Python 文件是直接运行还是被外部引用。

示例如下:

if __name__ == '__main__':
    # 输出: __main__
    print(__name__)

查找变量的顺序

访问一个变量时,Python 会按照以下顺序查找:局部作用域 -> 嵌套作用域 -> 全局作用域 -> 内置作用域。

这意味着,如果不同作用域存在重名的变量,Python 会优先访问先找到的变量,其他变量会被屏蔽。需要注意的是,虽然这种情况,Python 不会报错,但是,在实际编码中,不同范围的变量尽量不要重名。

示例如下:

x = 200
def access_local_x():
    x = 300
    print(x)
    
# 输出: 300
access_local_x()

函数内修改全局变量

函数内是可以访问全局变量的,但是默认情况下,不能修改全局变量。如果要修改全局变量,可以借助 global 关键字。

示例如下:

y = 1000

def modify_global():
    global y  # 声明此处使用的变量 y 是全局变量
    y = 2000

print(y)  # 输出: 1000
modify_global()
print(y)  # 输出: 2000

内部函数中修改外部函数的变量

内部函数可以访问外部函数的变量,但是默认情况下,不能修改该变量。如果要修改外部函数的变量,可以借助 nonlocal 关键字。

示例如下:

def outer_function():
    v = 100  # 外部函数的变量

    def inner_function():
        nonlocal v  # 声明此处使用的 v 是外部函数的变量
        v = 200  # 修改外部函数的变量

    print(v)  # 输出: 100
    inner_function()
    print(v)  # 输出: 200


outer_function()

相关推荐

Python合集之Python字符串常用操作(一)

在上一节的合集中,我们了解了Python集合增删改及集合间运算的相关知识,本节我们将进一步了解一下Python字符串的常用操作的相关知识。1.拼接字符串使用+运算符可完成对多个字符串的拼接,+运...

Python 入门系列——17. tuple 简介

tupletuple常用来将多个item放在一个变量中,同时tuple也是python4个集合类型之一,其他的三个是:List,Set,Dictionary,它们都有自己的用途和场景。tupl...

Python基础 - 变量的作用域(python中变量由什么组成)

变量的作用域决定了变量在程序中的可见性和生命周期。在Python中,变量的作用域有以下几种:局部作用域(当前函数内部)嵌套作用域(外层函数)全局作用域(模块级别)内置作用域(Python的内置函数和内...

Python中冷门但非常好用的内置函数

Python中有许多内置函数,不像print、len那么广为人知,但它们的功能却异常强大,用好了可以大大提高代码效率,同时提升代码的简洁度,增强可阅读性Countercollections在pytho...

Python常用函数整理(python常用函数大全pdf)

以下是Python中常用函数整理,涵盖内置函数、标准库及常用操作,按类别分类并附带示例说明:一、基础内置函数print()输出内容到控制台。pythonprint("Hello,World!")#...

新手易犯错的地方Python作用域(python作用域和命名空间)

好多新手一开始比较容易犯错的地方理解作用域对于编写高效的python代码十分重要现在就讲下四种作用域,按照从内到外的顺序:局部作用域(Local)-在函数内部定义的变量嵌套作用域(Enclosin...

函数与模块:Python编程中的核心工具

一、函数的定义与核心概念1.1函数的定义函数是封装可重复执行代码的模块化单元,通过命名的方式组织代码逻辑,实现代码复用和功能解耦(将不同功能独立开来,减少代码之间的依赖关系)。其基本语法结构为:de...

太好用!教你几招Python魔法方法的妙用

专注Python、AI、大数据,请关注公众号七步编程!Python是一种简单的编程语言,满足一个需求,可以有各种各样的实现方法。正是因为它可以通过各种串联满足很多复杂的逻辑,因此,对代码可读性关注度不...

深入解析Python中的range()函数(python里面range函数)

range()是Python中一个非常基础且功能强大的内置函数,广泛用于循环控制和数字序列生成。它在迭代、索引处理和循环次数控制中扮演重要角色。本文将从基础用法到高级技巧,全面解析range()的使用...

站长在线python精讲在Python中使用len()函数计算字符串长度详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用len()函数计算字符串的长度详解》。本知识点主要内容有:在Python中使用len()函数计算字符串在UTF-8编...

linux工作中常用之必备基础命令(二)

1、clear命令功能说明:清屏。举例:clear;ctrl+l2、who命令功能说明:当前在本地系统上的所有用户的信息举例:whoami;who3、uptime命令功能说明:查询系统...

CentOS7装Ollama,本以为小菜一碟,没想到掉坑里了!

今天准备在CentOS7上安装Ollama,原本以为是小事一桩。哪想还是遇上了点小麻烦。因为在Windows上安装Ollama太小儿科了,上ollama.com网站下载程序,一键安装即可,最多就是设...

Linux下 sudo命令(linux里sudo怎么用)

平常使用Linux的时候,都是用普通用户登录执行命令,但是有些命令需要root权限才能执行,如果切换到root用户去执行,就需要输入root密码,为了系统的安全性,应该尽可能少的直接在终端上输入roo...

CentOS7.3 Linux系统中杀死进程的方法

CentOS7.3学习笔记总结(二十四)-Centoslinux系统中杀死进程的方法在工作中,我常常需要终止有问题的进程,一般通过程序的关闭命令把进程关闭掉,这是最安全的方法,但是有些时候,我们无法...

Linux(CentOs7)防火墙命令,两种使用方式示例

一、CentOs7关闭防火墙的命令1:查看防火状态systemctlstatusfirewalldserviceiptablesstatus2:暂时关闭防火墙systemctlstop...