python 变量名解析 LEGB原则

对于一个def语句:

变量名分为三个作用域进行查找:首先是本地,之后是函数内,之后是全局,最后是内置

在默认的情况下,变量名赋值会创建或者改变本地变量

当函数中使用未认证的变量名时,Python就会搜索4个作用域(本地作用域,之后是上一层结  
构中def或lambda的本地作用域,之后是全局作用域,最后是内置作用域,

但函数中给一个变量名赋值时,Python总是创建或者改变本地作用域的变量名,除非它已经在那个函数中声明为
全局变量

当在函数之外给一个变量名赋值时(也就是一个模块文件的顶层)本地作用域与全局作用域是相同的

时间: 2024-08-29 14:10:20

python 变量名解析 LEGB原则的相关文章

零基础学python-16.3 变量名解析:LEGB原则

这一章节我们来说说变量名解析的原则:LEGB原则 1.当函数使用未认证的变量名时,python搜索4个作用域,本地作用域(L)->上一层结构中def或者lambda的本地作用域(E)->全局作用域(G)>内置作用域(B),并且在第一次找到这个变量名的地方停下来 2.函数给一个变量赋值的时候,总是创建或者改变本地作用域的变量名,除法他是声明为全局 >>> def test(): x=1 print(x) print(id(x)) x=2 print(x) print(id

PHP 自定义字符串中的变量名解析

PHP 自定义字符串中的变量名解析 这样一个需求:页面的 title 可以在后台自定义,自定义内容中可能包含变量,变量用 {$var} 表示, 其中 $var 为变量名 将 title 字段存入数据库中,再提出来之后,用php自己的变量名解析就不管用了,会直接输出 {$var} ,不会像在定义字符串的时候,用双引号时就会自动把 {$var} 变换成相应的变量内容,这里就像是用单引号定义的字符串,所以需要自己解析. 这里的思路是用正则表达式把字符串中的所有 {$var} 提取出来,然后判断是否存在

《python第一课总结》python变量名规范、、、

python变量, 代指 变量名=值 变量名的一些规范 只支持数字.字母.下划线 数字不能开头 不能使用python自身命名的名称. python条件 if 条件,elif 条件,else 循环语句 while 条件 1 kaishi=1 2 while True: 3 print("kaishi") 4 if kaishi ==100; 5 break 6 start +=1 7 8 #输出100的数

python变量名感悟

我感悟的是python的变量名其实就可以理解为C/C++中的指针! 1.python的变量在使用之前必须赋值,就像指针在使用之前不能为空. 2.python的内存可以用del释放,C++可以用delete释放. Python:  del  temp  #表示temp所“贴到”的内存被释放,此时temp变量相当于没被赋值(没有对应内存空间),便用不可以使用. C++   :  delete temp; //释放指针,其实就是通过指针释放了指针所指向的内存. python的变量可以理解为指针或者是标

python 变量的解析

python 的变量是可变化数据对象的程序标识符, python 中的变量赋值是变量名指向数据对象的,即修改变量名是不会影响其数据对象的 python中变量的 "变" 是指变量所指向的数据对象的改变 python中变量的指向,是指向数据对象的 id python变量是不需要定义类型 原文地址:https://www.cnblogs.com/yuanjian6/p/9710566.html

(编程语言+python+变量名+垃圾回收机制)*知识点

编程语言 从低级到高级的发展的过程 1.机器语言 计算机是基于电工作的.(基于高.低电平 1010010101011) 如果用机器语言表现一个字符的意思需要多段代码的行.但是计算机读取的快. 所以机器语言的 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言 汇编语言的属性,汇编语言通过英文字符组成 优点:执行效率相较于机器语言略低 缺点:开发效率相较于机器语言略高 举个例子: ; hello.asm section .data ; 数据段声明 msg db "Hello, world!&q

python之学习-------变量名

python变量名的规范: 1.变量名只能包含数字.字母.下划线: 2.变量名不能以数字开头: 3.不能使用python内置的函数和关键字作为变量名 4.变量名应简短和有意义. 原文地址:https://www.cnblogs.com/yunhui/p/9462112.html

Python变量作用域(一)

在一个程序中使用变量名时,Python创建.改变或者查找变量名都是在所谓的命名空间中进行的.作用域指的就是命名空间. Python中的变量名在第一次赋值时已经创建,并且必须经过赋值后才能够使用.由于变量名最初没有声明,Python将一个变量名 被赋值的地点关联为一个特定的命名空间.也即是说,在代码中给一个变量赋值的地方决定了这个变量将存在于哪个命名空间,也 就是它可见的范围. 函数除了打包代码之外,还为程序增加了一个额外的命名空间曾:在默认的情况下,一个函数的所有变量名都是与函数的命名空间 相关

python变量和简单的数据类型

1.运行hello_world.py时发生的情况 运行hello_world.py时,Python都做了些什么呢?实际上,即便是运行简单的程序,Python所做的工作也相当多: #!/usr/bin/env python # -*- coding:utf-8 -*- print("Hello Python world!") 运行上述代码时,你将看到如下输出: Hello Python world! 运行文件hello_world.py时,末尾的.py指出这是一个python程序,因此编