Python的作用域

Python中的作用域是用来确定变量和函数的作用范围和生命周期的规则。在Python中,有四种类型的作用域:局部作用域、外层作用域、全局作用域和内置作用域。

一:局部作用域

在函数内部定义的所有变量都属于局部作用域。这些变量只能在该函数内部被访问,并在函数返回时销毁。局部作用域允许重复使用变量名,而不必担心与程序的其他部分发生冲突。

def outer_function():  
    x = 10  # 在外层作用域中定义变量x  
      
    def inner_function():  
        x = 5  # 在局部作用域中重新定义变量x  
        print(x)  # 输出局部作用域中的x,即5  
      
    inner_function()  
    print(x)  # 输出外层作用域中的x,即10

这个例子中,我们在外部函数outer_function中定义了一个变量x。然后,我们在内部函数inner_function中重新定义了变量x。在内部函数中,我们打印了局部作用域中的x,输出为5。在外部函数中,我们打印了外层作用域中的x,输出为10。

 

二:外层作用域

外层作用域是指在外部函数中定义的变量。这些变量可以被嵌套在外层函数中的函数访问。外层作用域对于创建闭包非常有用,闭包是一种能记住其外层函数变量值的函数。

def outer_function():  

    x = 10 # 在外层作用域中定义变量x  

      

    def inner_function():  

        print(x) # 在内部函数中访问外层作用域中的x  

      

    inner_function()

在这个例子中,我们在外部函数outer_function中定义了一个变量x。然后,我们在内部函数inner_function中访问了外层作用域中的x。由于内部函数可以访问外层作用域中的变量,所以我们可以直接在内部函数中打印x的值。

 

三:全局作用域

在所有函数之外定义的变量属于全局作用域。这些变量可以从程序的任何部分访问,包括函数。全局作用域对于定义在整个程序中使用的常量或变量非常有用。在全局作用域中定义的变量可以被任何函数访问,但在函数内修改全局变量需要使用global关键字。

x = 10 # 在全局作用域中定义变量x  

  

def outer_function():  

    print(x) # 在外部函数中访问全局作用域中的x  

  

outer_function()

在这个例子中,我们在全局作用域中定义了一个变量x。然后,我们在外部函数outer_function中访问了全局作用域中的x。由于全局作用域中的变量可以在任何函数中访问,所以我们可以直接在外部函数中打印x的值。

四:内置作用域

内置作用域是指Python内置的变量和函数。这些变量和函数可以在程序的任何地方使用。内置作用域包括print()和len()等函数。

 

print("Hello, World!") # 在内置作用域中调用print()函数

这个例子中,我们调用了Python内置的print()函数。这个函数是在Python解释器的内置作用域中定义的,可以在程序的任何地方直接调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/666890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西瓜书学习笔记——核化线性降维(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 核化线性降维是一种使用核方法(Kernel Methods)来进行降维的技术。在传统的线性降维方法中,例如主成分分析(PCA)和线性判别分析(LDA),数据被映…

C++学习Day03之构造函数的调用规则

目录 一、程序及输出1.1 编译器会给一个类 至少添加3个函数1.2 自己提供了 有参构造函数1.3 自己提供了 拷贝构造函数 二、分析与总结 一、程序及输出 1.1 编译器会给一个类 至少添加3个函数 编译器会给一个类 至少添加3个函数 默认构造(空实现) 析构函…

QCoro: Qt C++ 20 协程库介绍

C20 推出了协程的实现(coroutines)。虽然开发一个支持协程特性的类库还是要花很多功夫的,但是使用一个开发好的类库则是非常嗨。这也是C 委员会一贯的原则: 如果你是类库开发者,必须足够有耐心学习拗口的特性。但如果…

MySQL分区的优缺点

前言 数据库中的分区技术为处理大规模数据提供了一种有效的手段,通过将数据划分成更小的可管理单元,我们能够提高查询性能、简化数据维护并更灵活地管理存储空间。然而,在采用分区时,我们必须认真考虑分区键的选择和实施细节&…

vue封装滚动表格

1.组件的使用 <div style"height:93%; overflow: hidden;"> <autoScroll :data"shortageList" :speed"0.5" :waitTime"500" :singleHeight"100" v-if"shortageList.length>0"><el-row v-for…

ACM训练题:曲线

这题只需要注意一个点&#xff0c;就是所有二次函数的二次系数都是大于0的&#xff0c;这说明这是个下凸函数&#xff0c;而且最小值旁边都是单调的&#xff0c;对于求区间凸函数极值问题&#xff0c;套三分模板即可。 AC代码&#xff1a; #include<bits/stdc.h> usin…

2023年全球软件开发大会(QCon上海站2023):核心内容与学习收获(附大会核心PPT下载)

在信息化和全球化日益加速的今天&#xff0c;软件开发技术日新月异&#xff0c;对全球各行各业产生了深远影响。2023年全球软件开发大会&#xff08;QCon上海站2023&#xff09;无疑成为行业内外瞩目的焦点。本次大会汇集了全球顶级的软件开发专家、企业领袖、研究者&#xff0…

nextcloud 优化扩展

cd /config vi config.php #ONLYOFFICE allow_local_remote_servers > true, #应用商店加速 appstoreenabled > true, appstoreurl > https://www.orcy.net/ncapps/v2/, #nginx配置调优 add_header Strict-Transport-Security max-age15552000; add…

cesium-加载谷歌影像

cesium在开发的时候有可能会加载不同的影像&#xff0c;今天就先看一下加载谷歌的吧。 使用谷歌有个好处就是基本不会出现此区域无卫星图的情况 闲言话语不多说&#xff0c;看代码 <template><div id"cesiumContainer" style"height: 100vh;"&g…

在nodejs中使用mysql2

目录 安装 mysql2:导入 mysql2 模块:创建数据库连接:执行查询操作:关闭数据库连接: 在之前的项目中nodejs模板使用的mysql包&#xff0c;mysql数据库版本是5.7&#xff0c;最近更新了数据库版本为mysql8&#xff0c;发现之前的代码无法成功连接数据库&#xff0c;经过排查发现问…

力扣题目训练(7)

2024年1月31日力扣题目训练 2024年1月31日力扣题目训练387. 字符串中的第一个唯一字符389. 找不同401. 二进制手表109. 有序链表转换二叉搜索树114. 二叉树展开为链表52. N 皇后 II 2024年1月31日力扣题目训练 2024年1月31日第七天编程训练&#xff0c;今天主要是进行一些题训…

springboot jar包编写启动start.sh

对于Spring Boot应用&#xff0c;由于其内置了用于启动的主类&#xff08;默认为org.springframework.boot.loader.JarLauncher或你自定义的SpringBootApplication注解的类&#xff09;&#xff0c;因此start.sh脚本可以相对简化。以下是一个针对Spring Boot应用的start.sh脚本…

springcloud-gateway升级版本allowedOrigins要改allowedOriginPatterns

前言 报错: java.lang.IllegalArgumentException: When allowCredentials is true,allowedOrigins cannot contain the special value "*"since that cannot be set on the "Access-Control-Allow-Origin"response header. To allow credentials to a se…

C语言第十八弹---指针(二)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1、const修饰指针 1.1、const修饰变量 1.2、const修饰指针变量 2、指针运算 2.1、指针- 整数 2.2、指针-指针 2.3、指针的关系运算 3、野指针 3.1、…

HBase 数据导入导出

HBase 数据导入导出 1. 使用 Docker 部署 HBase2. HBase 命令查找3. 命令行操作 HBase3.1 HBase shell 命令3.2 查看命名空间3.3 查看命名空间下的表3.4 新建命名空间3.5 查看具体表结构3.6 创建表 4. HBase 数据导出、导入4.1 导出 HBase 中的某个表数据4.2 导入 HBase 中的某…

linux系统haproxy负载均衡工具的介绍以及使用

haproxy 概述haproxy的特点haproxy算法haproxy做四层负载均衡haproxy做七层负载均衡 概述 ha-proxy是一款高性能的负载均衡软件。其专注于负载均衡这一些事情&#xff0c;因此与nginx比起来&#xff0c;负载均衡做的更好haproxy---主要是做负载均衡的7层&#xff0c;也可以做4…

视觉惯性SLAM系列——ORB-SLAM3的整体介绍及各个线程的功能(五)

ORB-SLAM3的整体介绍及各个线程的功能&#xff08;五&#xff09; ORB-SLAM3是一个多线程的系统&#xff0c;它主要包含以下几个线程&#xff0c;每个线程负责不同的功能&#xff1a; 跟踪线程&#xff08;Tracking Thread&#xff09;&#xff1a; 作用&#xff1a;负责处理每…

openGauss DataPod资源池化获金融科技产业联盟2023年十佳课题

NEWS 近日&#xff0c;由中国人民银行指导的北京金融科技产业联盟公布2023年度十佳课题评选结果&#xff0c;由openGauss社区牵头的《资源池化数据库金融关键业务场景技术研究》荣获了“北京金融科技产业联盟2023年度十佳课题。” 2023年&#xff0c;openGauss发布5.0.0和5.1.…

【Node系列】node核心模块util

文章目录 一、util介绍二、util模块函数三、node介绍四、热门文章推荐 一、util介绍 Node.js的核心模块util为开发者提供了一些常用的实用工具函数。这些函数能够很方便地进行对象的继承、类型判断以及其他工具函数的实现。 util模块主要提供了以下几个功能&#xff1a; 继承…

vulhub中 Apache Airflow Celery 消息中间件命令执行漏洞复现(CVE-2020-11981)

Apache Airflow是一款开源的&#xff0c;分布式任务调度框架。在其1.10.10版本及以前&#xff0c;如果攻击者控制了Celery的消息中间件&#xff08;如Redis/RabbitMQ&#xff09;&#xff0c;将可以通过控制消息&#xff0c;在Worker进程中执行任意命令。 1.利用这个漏洞需要控…