python作用域

正常的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI等;

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;

类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等;

之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

时间: 2024-10-29 05:00:21

python作用域的相关文章

python作用域和多继承

python作用域 python无块级作用域 看c语言代码: #include<stdio.h> int main() { if(2 > 0) { int i = 0; } printf("i = %d", i); return 0; } 在这段代码中,if子句引入了一个局部作用域,变量i就存在于这个局部作用域中,但对外不可见,因此,接下来在printf函数中对变量i的引用会引发编译错误,但是在python中并非如此 看下面代码: if 1 == 1: name =

day10 Python作用域 Python2.7与Python3.x的类继承的区别及其他

一.Python作用域   1.Python中无块级作用域 if 1 == 1: name = 'test' print(name) #输出会报错,因为name的作用域仅限于if下的代码块,而不属于全局   2.Python中以函数为作用域 def func(): func_name = 'func_test' print(func_name) #这里同样会报错,因为变量func_name的作用于func函数中   3.Python作用域链,层层嵌套,使用时从内向外找   4.Python的作用

Python之路Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数

Python之路Python作用域.匿名函数.函数式编程.map函数.filter函数.reduce函数 一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") return test1 res = test() print(res) 输出结果 test <function test1 at 0x021F5C90> 分析:这里print(res)输出的是te

python作用域和JavaScript作用域

JavaScript 一.JavaScript中无块级作用域 一个大括号一个作用域,就属于块级作用域,在Java和c#才存在块级作用域 function Main(){ if(1==1){ var name = 'seven'; } console.log(name); } // 输出: seven 二.JavaScript采用函数作用域 在JavaScript中每个函数作为一个作用域,在外部无法访问内部作用域中的变量 function Main(){ var innerValue = 'sev

python 作用域

在写作用域前,先来了解下局部变量和全局变量.理解局部变量和全局变量后,作用域的概念就很好理解了. 局部变量:局部变量只能在局部访问到,当超过其作用域时,变失去作用. 全局变量:无论在任何作用域都可以使用.当前作用域有相同变量名的局部变量时,局部变量生效. (忘记准确定义了,忘掉他吧) 1.Python中无块集作用域 Java/C#有块集作用域 Python/JavaScript无块集作用域 所谓块集作用域,需要先了解Python的代码块概念.Python遵从严格的缩进标准,可以认为处在同一缩进之

飘逸的python - 作用域与lookup策略

首先了解什么是命名空间,命名空间是一个"命名->对象"的映射,在python中用dict实现的. 而作用域,是指能直接访问到的命名空间. 当我们访问一个变量时,会按LEGB的顺序来lookup: L->Local. 即局部变量,比如定义在def或lambda中的变量. E-> Enclosing function locals. 即闭包中的变量. G->Global (module).全局变量. B->Built-in .内置变量,比如len()/KeyE

Python作用域的规则小析

Python的作用域解析是基于叫做LEGB(Local(本地),Enclosing(封闭),Global(全局),Built-in(内置))的规则进行操作的.这看起来很直观,对吧?事实上,在Python中这有一些细微的地方很容易出错.看这个例子:12345678910 >>> x = 10>>> def foo():... x += 1... print x...>>> foo()Traceback (most recent call last): F

python——作用域之LEGB规则

1 变量的作用域 Python是静态作用域,也就是说在Python中,变量的作用域源于它在代码中的位置:在不同的位置,可能有不同的命名空间.命名空间是变量作用域的体现形式. 2 LEGB各自代表的含义 2.1  L-Local 函数内的命名空间.作用范围:当前整个函数体范围. 2.2 E-Enclosing function locals 外部嵌套函数的命名空间.作用范围:闭包函数. 2.3 G-Global 全局命名空间.作用范围:当前模块(文件). 2.4 B-Builtin 内建模块命名空

Python作用域--&gt;闭包函数--&gt;装饰器

1.作用域: 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我要理解两点:a.在全局不能访问到局部定义的变量 b.在局部能够访问到全局定义的变量,但是不能修改全局定义的变量(当然有方法可以修改) 下面我们来看看下面实例: x = 1 def funx(): x = 10 print(x) # 打印出10 funx() print(x) # 打印出1 如果局部没有定义变量x,那么函数内部会从内往外

Python 作用域和命名空间

Python Scopes and Namespaces A namespace is a mapping from names to objects. 命名空间是一个从名字到对象的映射(指向,明确的路径). Most namespaces are currently implemented as Python dictionaries. 大部分都是由字典dict(其他语言也称为hash)实现. 例子: the set of built-in names .放置内置函数的集合.模块中的全局名称: