首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python 变量作用

变量作用 python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。 变量的作用决定了在哪一部分程序可以访问哪个特定的变量名称。...python作用一共有4种,分别是: L (Local) 局部作用 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用 B (Built-in) 内建作用 以 L...x = int(2.9)  # 内建作用 g_count = 0  # 全局作用 def outer():     o_count = 1  # 闭包函数外的函数中     def inner():...        i_count = 2  # 局部作用 举个例子 name = "Li Si" def change_name(name):     print("before change:", ...全局变量作用是整个程序,局部变量作用是定义该变量的子程序。 当全局变量与局部变量同名时: 在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用

66730
您找到你想要的搜索结果了吗?
是的
没有找到

Python 作用命名空间

在介绍类之前,我首先要告诉你一些Python作用规则。类定义对命名空间有一些巧妙的技巧,你需要知道作用命名空间如何工作才能完全理解正在发生的事情。...关于Python命名空间的重要一点是,不同命名空间中的名称之间绝对没有关系;例如,两个不同的模块都可以定义函数“最大化”而不会产生混淆 - 模块的用户必须在其前面加上模块名称。...一个 作用 是一个命名空间可直接访问的 Python 程序的文本区域。 这里的 “可直接访问” 意味着对名称的非限定引用会尝试在命名空间中查找名称。...则所有引用赋值将直接指向包含该模块的全局名称的中间作用。...事实上,所有引入新名称的操作都使用局部作用:特别地,import 语句函数定义会在局部作用域中绑定模块或函数名称。

68150

JS作用作用

下面就要借助JS的作用链来更好的理解作用了。 在此之前,先要明确个概念,即执行环境作用是两个完全不同的概念。 函数的每次调用都有与之紧密相关的作用执行环境。...当代码在一个环境中执行时,会创建变量对象的一个作用链(scope chain)。作用链的用途是保证对执行环境有权访问的所有变量函数的有序访问。...作用链包含了执行环境栈中的每个执行环境对应的变量对象。通过作用链,可以决定变量的访问标识符的解析。 注意:全局执行环境的变量对象始终都是作用链的最后一个对象。...需要注意的是:内部环境可以通过作用链访问所有的外部环境,但是外部环境不能访问内部环境中的任何变量函数。 标识符解析(变量名或函数名搜索)是沿着作用链一级一级地搜索标识符的过程。...任何一对花括号({})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用。 函数作用就好理解了,定义在函数中的参数变量在函数外部是不可见的。

4.1K30

静态作用动态作用

静态作用动态作用 所谓作用规则就是程序解析名字的方法。...当然,采用动态作用规则的语言也会不断向外层作用寻找名字,所以对下面这个表达式求值,无论是采用静态作用规则还是动态作用规则,其结果都是 2: (let ((a 1)) (let ((doubleA...分别实现两种作用 下面要谈到的是对于一个解释器来说,这两种作用应该分别怎么实现 2,当然,刚刚也说了,动态作用其实没什么好处,这么做其实纯粹是为了好玩。...bindings) body env scope = do val <- eval' expr env evalLet bindings body env ((name, val):scope) 对于静态动态作用而言...scope("x", 3, 'a'); 除了类本身的改动之外,最重要的是上面定义了三个宏,用这三个宏进行 token 的处理,使我们不必手动将 x 写成 "x",避免了出错,同时它也在一个 do-while 循环中帮我们创建了

2.1K10

Python: 作用(scope) LEGB

约束 名字空间 作用 之间的那些事 不管在什么编程语言, 都有作用这个概念.作用控制在它范围内代码的生存周期, 包括名字实体的绑定....而每个名字空间, 也将对应一个作用, 作用是代码正文中的一段代码区域, 作用的有效范围更多是这段代码区域去衡量,一个作用可以有多个名字空间, 一个名字空间也能有多个约束(多个赋值语句) 可以通过...为什么它能决定作用? frameobjec实际上就是python虚拟机上所维护的每个栈帧, 这和我们常规理解的栈帧多点差别, 因为python在原有栈帧的基础上, 在封装一层形成自己的栈帧...., So, 也能近似看成算是作用的名字了~ 作用话题似乎聊得有点深入了, 让我们暂告一段落, 继续讲讲 约束 作用的关系吧 每个约束一旦创建, 将会持续的影响后面代码的执行, 但是约束也只能在名字空间内生效...内置模块的名字空间 而查找的优先顺序从左到右以此是: L -> E -> G -> B 从上面我们已经知道, 约束, 是受作用名字空间的影响, 所以查找肯定也是只能在名字空间去进行 来些简单代码吧

65030

JavaScript 作用作用

局部作用(Local Scope) 全局作用相反,局部作用一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用称为函数作用 。 如 1....中的变量 inVariable 函数 innerFun 都只拥有局部作用。...函数对象其它对象一样,拥有可以通过代码访问的属性一系列仅供 JavaScript 引擎访问的内部属性。...一个好的经验法则是:如果一个跨作用的对象被引用了一次以上,则先把它存储到局部变量里再使用。 ---- VO & AO 变量初始化阶段 JS解释器如何找到我们定义的函数变量?...理解 JavaScript 作用作用链 JavaScript 深入浅出-慕课网

1.7K10

函数作用作用

实际的结果就是在整个代码片段得到周围创建了一个作用气泡,也就是说这段代码中的任何声明都将绑定在整个新创建的包装函数的作用里,而不是先前所在的作用 为什么隐藏“变量”“函数”是一个非常有用的技术。...最小授权、最小暴露原则:在软件设计中,应该最小限度地暴露必要地内容,而将其他内容都“隐藏”起来,比如某个模块或对象的 API 设计 如果所有变量函数都在全局作用域中,当然可以在所有的内部嵌套的作用域中去访问到他们...函数作用 在任意代码片段外部添加包装函数,可以将内部的变量函数定义“隐藏”起来,外部作用无法访问包装函数内部的任何内容。虽然这种技术可以解决一些问题,但是它并不理想,因为会导致一些额外的问题。...i , 通常是因为只想在 for 循环内部的上下文中使用 i 这就是块级作用的用处,变量的声明应该距离使用的地方越近越好,并最大限度地本地化 块作用就是对之前的最小授权原则进行扩展的工具, 块作用...本质上,声明一个函数内部的变量或函数会在所处的作用隐藏起来,这是有意为之的良好软件的设计原则。 但函数不是唯一的作用单元。块作用指的是变量函数不仅可以属于所处的作用,有可以属于某个代码块。

2.4K20

python 变量作用列表

变量作用 变量由作用范围限制 分类:按照作用分类 全局(global):在函数外部定义 局部(local):在函数内部定义 变量的作用范围 全局变量:在整个全局范围都有效 全局变量在局部可以使用(即函数内部可以访问函数外部定义的变量...) 局部变量在局部范围可以使用 局部变量在全局范围无法使用 LEGB原则 L(Local)局部作用 E(Enclosing function local)外部嵌套函数作用 G(Global module...)函数定义所在模块作用 B(Buildin):python内置模块的作用 # 认为a1是全局的 a1 = 100 def fun(): print(a1) print("I am...优点:简洁,理解容易 缺点:对递归深度有限制,消耗资源大 python对递归深度有限制,超过限制报错 在写递归程序的时候,一定注意结束条件 # 递归调用深度限制代码 x = 0 def fun()...fun() 10 11 # 调用函数 RecursionError: maximum recursion depth exceeded while calling a Python

1K107

JS进阶:作用作用

作用(Scope) 1.什么是作用 作用是在运行时代码中的某些特定部分中变量,函数对象的可访问性。换句话说,作用决定了代码区块中变量其他资源的可见性。...ES6 之前 JavaScript 没有块级作用,只有全局作用函数作用。ES6的到来,为我们提供了‘块级作用’,可通过新增命令letconst来体现。...值得注意的是:块语句(大括号“{}”中间的语句),如 if switch 条件语句或 for while 循环语句,不像函数,它们不会创建一个新的作用。...另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用,而循环体内部是一个单独的子作用。...取a的值时,试图在fn作用取,但是取不到,只能转向创建fn的那个作用域中去查找,结果找到了,所以最后的结果是30 作用与执行上下文 许多开发人员经常混淆作用执行上下文的概念,误认为它们是相同的概念

2.5K20

理解JavaScript作用作用

​一、JavaScript中的作用 作用是当前的执行上下文,值表达式在其中“可见”或可被访问。如果一个变量或表达式不在当前的作用域中,那么它是不可用的。...function foo() { var x = 'sfa' } console.log(x) // x is not defined 全局作用函数作用 全局作用:在JavaScript...中 {} 外面的作用就是全局作用,里面的变量函数等其他资源可以在任意地方被访问到。...在这个作用内声明的变量,就只能在它这个作用其子作用域中才能使用。...块级作用 ES6新增的块级作用:用letconst声明的变量才存在块级作用,在该代码块外部访问不到该变量。在{ }中用letconst声明的变量就是一个块级作用

37800

理解javascript作用作用

作用 作用就是变量函数的可访问范围,控制着变量函数的可见性与生命周期,在JavaScript中变量的作用有全局作用和局部作用。    ...全局和局部作用下面用一张图来解释: ? 单纯的JavaScript作用还是很好理解的。...作用链 全局执行环境是最外层的一个执行环境,在web浏览器中全局执行环境是window对象,因此所有全局变量函数都是作为window对象的属性放大创建的。...当代码在一个环境中执行时,会创建变量对象的一个作用链(scope chain)来保证对执行环境有权访问的变量函数的有序访问。     用一张图来解释作用链的运行:由里向外执行。 ?    ...新的作用链如下图所示: ?    在函数执行过程中,没遇到一个变量,都会经历一次标识符解析过程以决定从哪里获取存储数据。

2.1K10

PythonScala的变量作用

今天聊的主题是变量作用,也就是定义的变量可以使用的一片区域。变量通常意义指的是一个存储着标识符标识符所关联的值的空间。...什么是变量作用呢?...那么在具体的语言ScalaPython是如何处理变量作用的呢? Scala: Scala在变量声明时就确定了它的作用范围,最常见的作用是用一个花括号括起来的区域,这就是一个新的作用。...Python作用规则最出名的就是LEGB,这四个字母的含义代表着Python的对于变量的查找顺序locals -> enclosing -> globals -> builtins。...这四个变量代表着四个不同的作用,不同于Scala内部作用无法获取外部作用变量,这里输出的结果表示函数的局部变量是可以获得外部作用的变量。

76310

JavaScript中的作用作用

作用(Scope) 1. 作用 作用是在运行时代码中的某些特定部分中变量,函数对象的可访问性。换句话说,作用决定了代码区块中变量其他资源的可见性。...ES6 之前 JavaScript 没有块级作用,只有全局作用函数作用。ES6 的到来,为我们提供了‘块级作用’,可通过新增命令 let const 来体现。 2....3.函数作用 函数作用,是指声明在函数内部的变量,全局作用相反,局部作用一般只在固定的代码片段内可访问到,最常见的例如函数内部。...值得注意的是:块语句(大括号“{}”中间的语句),如 if switch 条件语句或 for while 循环语句,不像函数,它们不会创建一个新的作用。...var count = 30; // 不会抛出错误 if (condition) { let count = 40; // 其他代码 } 循环中的绑定块作用的妙用 开发者可能最希望实现 for 循环的块级作用

2.1K10

作用作用链的简单理解

作用作用作用 javascript采用的静态作用,也可以称为词法作用,意思是说作用是在定义的时候就创建了, 而不是运行的时候。...思路是完美的,可是js的作者采用的静态作用,不管你们怎么运行,你们 定义的时候作用已经生成了。 那么什么是作用? 变量函数能被有效访问的区域或者集合。作用决定了代码块之间的资源可访问性。...作用也就是一个独立的空间,用于保护变量防止泄露,也起到隔离作用。每个作用里的变量可以相同命名,互不干涉。就像一栋房子一样,每家每户都是独立的,就是作用。...作用又分为全局作用函数作用,块级作用。 全局作用任何地方都可以访问到,如window,Math等全局对象。 函数作用就是函数内部的变量方法,函数外部是无法访问到的。...块级作用指变量声明的代码段外是不可访问的,如let,const. 作用链 知道作用后,我们来说说什么是作用链? 表示一个作用可以访问到变量的一个集合。

78431

Python变量作用

这就是作用的理解,那么变量的作用,就是变量在不同环境下所表达的角色(当然是不同的) 好了,如果你理解了变量作用的概念,那么下面那就让我们来看看,在Python中,变量的作用有几种呢?...全局作用一般是定义在函数体之外的,这里的变量通常对全局有效 4.内建作用(Building-in) 内建作用作用就是Python语言内建的函数范围,比如我们使用一个print(),一个if()等等...因为越是小范围的变量越精确,也就是说作用越小的变量,使用起来将会越准确 (这与我们人类的语言使用习惯有关) 这四个作用域中,最常用的就是局部作用、全局作用内建作用,闭包在简单的程序设计中基本不常用...下面,我分别对内奸作用、局部作用全局作用进行说明: 如果我们进行一个非常简单的输出变量,这里的x就是内建作用 我们可以看到,上面的代码中有两个num,一个在函数体外,一个在函数体内,后面两个输出语句实际上都是输出...值得注意的是:在Python中,只有引用了模块(Module)、类(Class)、函数(Def及Lambda)时才会引入新的作用,使用其他模块的时候是不会引入新的作用的,这点很重要。

91860

python基础—作用

函数的返回值 python函数使用return语句返回  返回值 所有函数都有返回值,如果没有return语句,默认调用 return None return语句并不一定是函数的语句块的最后一条语句...: 结束函数调用返回值 使用return返回值时,不能同时返回多个值,返回的是一个值,并不是多个: 上面的这个就是返回的一个元组,我们可以结合解构来获取这三个值, 作用 一个标识符的可见范围,这就是标识符的作用...,仅限于函数内部使用,且对于外部是不可见的 再来看一个示例: 这个示例我们可以看出,内层函数可以引用外层函数的变量,但是内层函数在进行重新定义变量时,是外层函数中的同名变量是不影响的,也就是说,这两个变量所作用作用不同...,在外层函数的作用域中对内层函数里的变量并不可见,而相反,内层作用是可以看见外层的变量的 那么我们该如何区分局部作用全局作用,也就是如何定义全局变量和局部变量呢?...全局变量global 使用global关键字的变量,将函数内部的变量声明为全局变量,并在本层作用外部作用可以随意使用

42120

Python变量作用

变量作用   Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。   变量的作用决定了在哪一部分程序可以访问哪个特定的变量名称。...Python作用一共有4种,分别是: L (Local) 局部作用 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用 B (Built-in) 内建作用 以 L...NAME='John' #NAME在全局作用域中 def fun(): name='July' #闭包函数外的函数 def fun2(): name='Jack'...#局部作用 print(name) fun() Jack Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用,其它的代码块(如...if/elif/else/、try/except、for/while等)是不会引入新的作用的,也就是说这这些语句内定义的变量,外部也可以访问: if True: a=123 print(a)

1K20
领券