基础小白快速入门Python---->作用域是个啥?

news2025/2/25 20:28:20

在Python代码中,我们经常会使用到一个名词,作用域,那么,作用域究竟是个啥?

不同的编程语言中,作用域搭配使用的模块或者具体名称可能会略有差别

作用域是个啥?

作用域,就像是我们学习数学的定义域和值域一样,是一个区间范围,

在这个范围内,我们可以对进行的函数来进行取值,或者说这个函数的功能得以实现,当然,转换成编程之中,就是函数的作用域,通俗来讲,就是,函数只在这个区间,才会实现他的功能,跳过这个区间,就无法实现功能了

编程本就是一种数学思维的体现,

在我们这个普实世界中,满足了重力,支持力等等其他条件,用数学式子计算出来的结果,

例如水的密度,倾斜角的摩擦力等等,这些能够通过数学计算解决我们三维世界的具体问题称为物理,而数学,本就是一种工具,数学思维应用于直接推算加减,就是最普通的数学,从某种概念上来讲,物理是数学思维的一种呈现,而编程思维也同样如此,我们将代码融入数学思维构建了新兴学科,计算机科学与技术

但在大学教程里,数学也被称之为计算机科学,足以证明数学对编程的重要影响。作用域就是数学思维在编程中的一种体现,我们通过代码构建函数,

类似于求数学中的求倒数,构造函数只是为了实现功能,最终解决问题,同样,在编程中,我们构造函数之后,通过函数实现我们想要的功能来服务于人类。定义域就这样诞生了,。

定义域就是编程中,函数的作用范围

在数学中,不同的函数拥有不同的定义域,相同的,在编程语言中,不停的函数拥有不同的作用域,

但作用域也被人们细细划分几大类来帮助我们更好的解决问题。

全局作用域(Global Scope)

全局作用域是指在代码中最外层定义的变量的作用域。在全局作用域中定义的变量可以在代码的任何其他部分被访问和修改,除非它们被局部作用域或内置作用域中的同名变量所覆盖。

类似于数学中整个函数所求的定义域

x = 10  # 全局作用域

def func():
    print(x)  # 可以直接访问全局作用域中的x

func()


局部作用域(Local Scope)

局部作用域是指在函数内部定义的变量的作用域。局部变量仅在函数内部有效,函数外部无法直接访问局部变量。

类似于在数学中,我们截取了一段函数,在该段函数中的定义域

def func():
    y = 5  # 局部作用域
    print(y)  # 只能在func函数内部访问y

func()

嵌套作用域

def outer_func():
    x = 10  # 外部函数的局部作用域

    def inner_func():
        y = 5  # 内部函数的局部作用域
        print(x, y)  # 可以在inner_func内部访问外部函数的x
    inner_func()

outer_func()

全局作用域和局部作用域( Global 和 Local 作用域):

x = 10  # 全局作用域

def func():
    y = 5  # 局部作用域
    print(x, y)  # 可以在func内部同时访问全局作用域的x和局部作用域的y

func()


内置作用域(Built-in Scope)

内置作用域是指Python内置函数和模块的作用域。所有内置函数和内置变量都在这个作用域中。可以直接使用内置函数,如print()或len(),无需导入任何模块。

在Python中,不同的函数实现不同的功能,我们在写了很多功能函数的时候,创建了一个名为库的东西来装载我们所实现的功能,而在开发中,为了满足程序员的方便,Python在创建时便开发了一些基础的函数,例如输入输出等,使用这些函数的时候,我们不需要导入库,这是Python本身自带的库。

而内置作用域就是这些函数的作用域,换而言之,Python在创建的时候就已经创建了这些基础的函数和相应的,他们的作用域。

def func():
    print(len("hello"))  # 内置函数len属于内置作用域

func()


块作用域(Block Scope)

Python 3.8版本引入了async和await关键字,这引入了一种新的作用域:块作用域。块作用域通常用于async函数中的await表达式。

虽然Python没有块级作用域,但可以通过在函数中使用临时作用域来实现类似的效果。例如,使用匿名函数(lambda)或者在函数中定义一个内部函数,都可以创建一个临时的工作空间。

块作用域(Block Scope)是指在编程语言中,变量定义在一个代码块内部,其作用域也限于这个代码块内部。这意味着,当变量在代码块外部时,它是不可访问的。块作用域通常用于限制变量的访问范围,减少命名冲突,并帮助程序员更清晰地表达他们的意图。

x = 10  # 全局作用域

def func():
    y = 5  # 局部作用域
    def inner_func():
        z = 3  # 嵌套的局部作用域
        print(z)  # 访问内层局部作用域中的变量
    inner_func()

func()

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

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

相关文章

【MySQL】学习多表查询和笛卡尔积 - 副本

](https://img-blog.csdnimg.cn/21dd41dce63a4f2da07b9d879ad0120b.png#pic_center) ??个人主页: ??热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ??个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-N8PeTKG6uLu4bJuM {font-family:“trebuchet ms”,…

安卓开发1- android stdio环境搭建

安卓开发1-android stdio环境搭建 Jdk环境搭建 1. 准备Jdk,这边已经准备好了jdk1.8.0,该文件直接使用即可 2. 系统变量添加 %JAVA_HOME%\bin JAVA_HOME 3. 系统变量,Path路径添加 4. 添加完成后,输入命令javac / java -version,验证环…

python实现跨进程(跨py文件)通信01

前言 项目中总会遇到数据需要跨进程通信的问题,今天就给大家带来一套简单的跨进程通信代码。代码分为服务端与客户端两部分。 一、server端 import multiprocessing import timedef do_socket(conn, addr, ):try:while True:if conn.poll(1) False:time.sleep(0…

JQMobile Loader Widget 遮罩层改造

最近在用jqmobile 做一个混合APP项目时候用到 jqmobile1.4.3提供的Loader Widget控件,但是这个控件本身是一个loading弹出层,这个弹出层弹出之后,用户还是可以去点击按钮,重复发送请求,为了防止重复提交,我想了两种办法, 1,在loading弹出层弹出之后,让按钮不可用.但是form表单…

SDWAN异地组网难在哪?怎么解决?

SD-WAN作为一种先进的网络技术,为企业提供了更加灵活和高效的网络连接方案。然而,在异地组网的过程中,SD-WAN也面临一些挑战。本文将探讨SD-WAN异地组网所面临的难题,并提供相应的解决方案。 挑战一:网络延迟和不稳定性…

五、数组——Java基础篇

五、数组 1、数组元素的遍历 1.1数组的遍历:将数组内的元素展现出来 1、普通for遍历:根据下表获取数组内的元素 2、增强for遍历: for(数据元素类型 变量名:数组名){ 变量名:数组内的每一个值…

家庭游泳池:阳台上可安装的泳池

游泳池可根据场地大小选择安装在室内或室外,这种的泳池规格尺寸相对来说较大,较适合于大型体育场馆、小区配套、健身房等场所。这款家庭泳池与之前的不太一样,不论是从池体材料还是装饰面层都有着很大的差异。 该家庭泳池规格尺寸比较固定&a…

信号的分类

确定信号与随机信号 确定信号:用一个确定的时间函数表示的信号(其他函数也可以,但在信号与系统中主要指时间函数)。其中包括周期信号与非周期信号,连续时间信号与离散时间信号等。 随机信号:信号不能用一…

Smart Link基本概念

Smart Link通过两个端口相互配合工作来实现功能。这样的一对端口组成了一个Smart Link组。为了区别一个Smart Link组中的两个端口,我们将其中的一个叫做主端口,另一个叫做从端口。同时我们利用Flush报文、Smart Link实例和控制VLAN等机制,以更…

【软件设计师】多元化多方面了解多媒体技术的内容

🐓 多媒体技术基本概念 多媒体主要是指文字、声音和图像等多种表达信息的形式和媒体,它强调多媒体信息的综合和集成处理。多媒体技术依赖于计算机的数字化和交互处理能力,它的关键是信息压缩技术和光盘存储技术。 亮度 亮度是光作用于人眼时所…

2024年2月深度学习的论文推荐

我们这篇文章将推荐2月份发布的10篇深度学习的论文 Beyond A*: Better Planning with Transformers via Search Dynamics Bootstrapping. https://arxiv.org/abs/2402.14083 Searchformer是一个基于Transformer架构的人工智能模型,经过训练可以模拟A星寻路算法&a…

【习题——菱形的打印】

一、打印下面的图形(菱形) 我们可以先来看一个简单点的菱形: 输入描述: 输入一个char类型字符 输出描述: 输出一个用这个字符填充的对角线长5个字符,倾斜放置的菱形: 1、思路: 我…

微服务 人工智能AI 物联网智慧工地云平台源码

目录 ​编辑 智慧工地架构 智慧工地系统 智慧工地云平台功能模块 1、基础数据管理 2、考勤管理 3、安全隐患管理 4、视频监控 5、塔吊监控 6、升降机监控 7、移动端数据推送 智慧工地管理平台子系统构成 智慧工地物联网解决方案,对工地施工安全人员、设…

如何使用 Pandas 删除 DataFrame 中的非数字类型数据?

目录 前言 识别非数字类型数据 删除非数字类型数据 1. 使用 drop() 方法删除非数字类型的列 2. 使用布尔索引删除非数字类型的行 3. 使用 applymap() 方法转换非数字类型数据 4. 使用 to_numeric() 函数转换非数字类型数据 应用实例:处理销售数据 总结 前言 在…

SemiDrive E3 MCAL 开发系列(2) – Port Dio 模块的使用

一、概述 本文将会介绍如何导入 SemiDrive E3 系列 MCU 的 MCAL 配置工程以及介绍 Port 和 Dio 模块的基本配置,并且会结合实际操作的介绍,帮助新手快速了解并掌握这两个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官…

android应用开发基础知识,安卓面试2020

第一章:设计思想与代码质量优化 1、设计思想六大原则 2、三大设计模式 3、数据结构 4、算法 第二章:程序性能优化 1、启动速度和执行效率优化 2、布局检测与优化 3、内存优化 4、耗电优化 5、网络传输与数据存储优化 6、APK大小优化 7、屏幕适配 8、…

【教3妹学编程-算法题】标记所有下标的最早秒数 II

3妹:2哥2哥,你有没有看到上海女老师出轨男学生的瓜啊。 2哥 : 看到 了,真的是太毁三观了! 3妹:是啊, 老师本是教书育人的职业,明确规定不能和学生谈恋爱啊,更何况是出轨。 2哥 : 是啊…

【小沐学QT】QT学习之信号槽使用

文章目录 1、简介2、代码实现2.1 界面菜单“转到槽”方法2.2 界面信号槽编辑器方法2.3 QT4.0的绑定方法2.4 QT5.0之后的绑定方法2.5 C11的方法2.6 lamda表达式方法 结语 1、简介 在GUI编程中,当我们更改一个小部件时,我们通常希望通知另一个小程序。更普…

【Unity】构建简单实用的年份选择器(简单原理示范)

在许多应用程序和游戏中,年份选择是一个常见的需求。无论是在日历应用程序中查看事件,还是在历史类游戏中选择时间段,年份选择器都是用户体验的重要组成部分,下面实现一个简易的年份选择器。 一、效果预览: 目录 一、…

sylar高性能服务器-日志(P43-P48)内容记录

文章目录 P43:Hook01一、HOOK定义接口函数指针获取接口原始地址 二、测试 P44-P48:Hook02-06一、hook实现基础二、class FdCtx成员变量构造函数initsetTimeoutgetTimeout 三、class FdManager成员变量构造函数get(获取/创建文件句柄类&#x…