Python模块中的变量和函数的作用域
来源:互联网 发布:日本经济数据 编辑:程序博客网 时间:2024/05/22 03:24
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868200196665403ac40fac14536939dd5af20810782000
作用域
在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_
前缀来实现的。
正常的函数和变量名是公开的(public),可以被直接引用,比如:abc
,x123
,PI
等;
类似__xxx__
这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__
,__name__
就是特殊变量,hello
模块定义的文档注释也可以用特殊变量__doc__
访问,我们自己的变量一般不要用这种变量名;
类似_xxx
和__xxx
这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc
,__abc
等;
(注释:_xxx的函数和变量是protected,直接从外部访问不会有异常;__xxx的函数和变量是private,直接从外部访问会报异常,因为python会将该名称加上一个前缀来隐藏它,所以_xxx是一个不存在的东西)
之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
private函数或变量不应该被别人引用,那它们有什么用呢?请看例子:
def _private_1(name): return 'Hello, %s' % namedef _private_2(name): return 'Hi, %s' % namedef greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name)
我们在模块里公开greeting()
函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()
函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:
外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。
- Python模块中的变量和函数的作用域
- python --- 变量和函数的作用域
- javascript和python函数中变量作用域的区别
- Python中的变量、引用和作用域
- python 中模块(model)概念的引入 以及 函数变量的作用域
- python函数变量的作用域
- python函数-变量作用域
- python的变量和模块
- Python中的变量、引用、拷贝和作用域
- python变量和作用域
- python变量和作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- shell中脚本变量和函数变量的作用域
- 如何利用已有的切片文件生成TPK
- DecimalFormat的使用
- 程序与自动机及静态分析杂想
- 封装JSONUtils工具类及使用
- Android设计模式-单例模式(Singleton Pattern)
- Python模块中的变量和函数的作用域
- statusbar相关
- linux汇编语法
- opencv2读取摄像头并保存为视频
- App Webview与内嵌web交互实现
- 登录过滤器(Struts2)
- 开始
- Java多线程——sleep()和wait()的区别
- tomcat配制文件说明