python中bar是什么意思_Python中下划线的变量是什么个意思
这篇文章说两个问题:
问一:下划线变量
单下划线开头的变量,Pyhthon规定为内部变量(私有变量),from M import * 时,这种变量并不会导入进来,例如:
foo.py
#foo.py
bar = 10
bar2 = 11
_bar = 20
__bar = 30
foo2.py
#foo2.py
from foo import *
if __name__ == '__main__':
print locals()
执行 python foo2.py,输出:
{'bar2': 11, 'bar': 10, '...省略'}
输入结果中并没有 _bar和__bar,因为它们都是以下划线开头的变量,所以没有导入进来,但是如果你非要把这些变量导入进来也是可以的,使用import时,明确导入具体的变量时就行了。如:
#foo2.py
from foo import *
from foo import _bar
from foo import __bar
if __name__ == '__main__':
print locals()
输出:
{'_bar': 20, 'bar2': 11, 'bar': 10, '__bar': 30, ‘...省略'}
单下划线结尾的变量:用于避免于Python关键字冲突的变量,如class_:
Tkinter.Toplevel(master, class_='ClassName')
如上所说的变量讲的是定义在模块中的变量,属于模块中的属性,如果这些变量定义在函数里面,那它和普通的变量没什么两样的,都是局部变量。此外,单下划线同样适用于函数。
双下划线开头的变量:它在模块中还是当作单下划线看待,但出现在类中作为类属性就不一样了,在运行时该类属性会被“混淆",不能直接访问,需要在该变量前加上下划线和类名才能访问。如:
class Foo(object):
boo = 40
_boo = 50
__boo = 60 # _Foo__boo
def __init__(self):
self.__booo = 70
def __test(self): #_Foo__test
print "__test"
if __name__ == '__main__':
print Foo.boo
print Foo._boo
print Foo._Foo__boo
foo = Foo()
print foo._Foo__booo
foo._Foo__test()
这样可以防止与父类或子类中同名的__xxx属性发生冲突。
开始和结尾都有的双下划线的变量:此类变量属于魔法对象,如:init,file,你永远不要自己也发明个出来。
问二:all
__all__对象是装有字符串的列表对象,他会覆盖 from import * 的默认行为:如
#foo.py
__all__ = ['bar', 'baz']
waz = 5
bar = 10
def baz(): return 'baz'
from foo import *
print bar
print baz
# 异常
print waz
在foo.py里面定义了__all__后,import * 就会按照 __all__定义的内容导入,所以这里 print waz就抛异常了,因为它不在 __all__里面。为外,你可以把下划线开头的变量的字符串形式加入到__all__中,这样 import * 也能看到这些变量。
有问题可以扫描二维码和我交流
关注公众号「Python之禅」,回复「1024」免费获取Python资源
python中bar是什么意思_Python中下划线的变量是什么个意思相关推荐
- python中class __str__怎么用_python中下划线的作用
学习python的时候,我们经常碰到一些变量的变量名带单下划线/双下划线前缀或者后缀,然后会觉得这样的命名风格很奇怪.除了变量命名风格外,也会遇到下划线的表达式,也会让人摸不着头脑.今天我们就来看下, ...
- python中turtle要安装吗_Python中下划线的5种含义你都知道吗?
黑客技术 点击右侧关注,了解黑客的世界! Linux编程 点击右侧关注,免费入门到精通! 程序员严选 甄选正品好物,程序员生活指南! 本文介绍了Python中单下划线和双下划线("dunde ...
- python定义函数以什么开头_python中下划线开头函数是什么
python用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线 ...
- python中bar函数的用法_Python:如何在函数中使用progressbar
我正在使用以下函数:def LAS2TXTGridClip(inFile,poly,MinPoints=1): sf = shapefile.Reader(poly) #open shpfile sr ...
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- python中模块是什么意思_Python中的模块是什么?3分钟搞懂Python中的模块问题
Python 中的模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,模块让你能够有逻辑地组织你的 Python 代码段.把相关的代码分配到一个模块里能 ...
- python中标识符的命名规则_python标识符的命名规则是什么
在Python中,一切都是对象,包括常量数据类型,如整数数据类型(1,2,3...),字符串数据类型("ABC").想要使用这些对象,就要使用它的对象引用.赋值操作符,实际上是使得 ...
- python程序中长下划线怎么打_python中下划线怎么输入
python中下划线使用键盘上的Shift+减号键即可打出,减号键位于0和加号键之间. 在Python中下划线还具有 private 和 protected 类似的访问权限作用,下面我们具体分析.Py ...
最新文章
- Flash数据的采集方法-搜房房价走势采集
- CodeForces - 557E(trie
- swagger文档转换为WebApiClient声明式代码
- mysql 用户密码md5_使用MD5编码实现数据库用户密码字段的加密
- Jquery Mobile 画面导航栏共用的实现方法
- 那些很厉害的人,是如何度过职场迷茫的?
- 素材路上|专注平面设计素材模板,可能会让你抛弃花瓣!
- pg安装部署linux_简简单单基于docker部署微服务网关
- [原] 内心深处唱的这首歌
- 106. 数据库增删改的封装
- 华为手机热点无法连接_为什么华为手机开热点别的手机连不上?
- 药用计算机题目,医用计算机基础_超星尔雅_题库及答案
- 医疗物联网的定义的业务场景
- 最早的支付网关(滴滴支付)和最新的聚合支付设计架构
- 今天第一次来这里开博,大家多多指教
- 塔式太阳能热发电系统的防雷设计
- layui数据表格重载与导出
- 光和颜料中的三原色,美术中的三原色
- Git 学会git,探索GitHub,掌握新知识 (二)
- 误删了efi分区,怎么样恢复,使电脑开机回到windows
热门文章
- 社交之后又是资讯,支付宝要用内容吸引流量
- 【python】python的二元表达式和三元表达式
- Spring AOP介绍
- U盘安装ubuntu server 10.4
- Amazon网站架构学习总结
- GAE 博客——B3log Solo 0.3.0 正式版发布了!
- The Double-Checked Locking is Broken Declaration
- 1、环境搭建、Helloworld
- 华为鸿蒙系统备用,就只有华为有备用系统?其实谷歌也准备了一个,不输鸿蒙系统!...
- ARMv8体系结构基础02:搭建实验环境