今天在读django源码的时候遇到了一个问题!它就是__path__这个系统变量

一、__path__变更初见

  由__path__这个变量的名字就知道,这个是一个系统变量,不是用户自定义的变量,于是第一想法就是看一下这个变量的值是多少?

  创建一个叫/tmp/studio/main.py的脚本、内容如下:

#!/usr/local/python/bin/python3

if __name__=="__main__":
print(__path__)

  执行结果如下:

[root@workstudio tmp]# ./main.py
Traceback (most recent call last):
File "./main.py", line , in <module>
print(__path__)
NameError: name '__path__' is not defined # 这说明python在作用域中并没有找到 __path__这个变量

二、事实上__path__变量是python包里的一个变量,它的值就是包所位于的操作系统路径

  1  构建工作目录

mkdir /tmp/studio
mkdir /tmp/studio/tools/
touch /tmp/studio/main.py
touch /tmp/studio/tools/__init__.py

  2  用tree 看/tmp/studio

[root@workstudio tmp]# tree /tmp/studio/
/tmp/studio/
├── main.py
└── tools
└── __init__.py directory, files

  3  /tmp/studio/tools/__init__.py的内容如下

[root@workstudio tools]# cat /tmp/studio/tools/__init__.py
print(__path__)

  4  /tmp/studio/main.py的内容如下

[root@workstudio tools]# cat /tmp/studio/main.py
#!/usr/local/python/bin/python import tools if __name__=="__main__":
pass

  5  运行/tmp/studio/main.py

[root@workstudio tools]# python3 /tmp/studio/main.py
['/tmp/studio/tools'] -- 看到了吧,这个就是由/tmp/studio/tools/__init__.py中print出来的

三、总结:

  python中的__path__变量它的值就是它所在包的系统目录、也就是说不同包中的__path__这个变量的值是不同的

----

交流学习

python __path__ 变量的更多相关文章

  1. 配置python环境变量(转)

    默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行直接使用python命令. 1.首先需要在系统中注册python环境变量:假设python的安装路 ...

  2. python学习 变量的操作 与 基本数据类型

    一变量(本文使用python3.5): #变量:是计算机内存中的一块区域,变量可以存储规定范围内的值,变量可以改变#在python中变量是计算机内存中数据的引用 python的变量没有明显的类型,具体 ...

  3. python的变量传递

    python中变量都被视为对象的引用.python函数调用传递参数的时候,不允许程序员选择传值还是传引用,python参数传递采用的都是“传对象引用”的方式.     这种方式相当于传值和传引用的结合 ...

  4. Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  5. Windows下python环境变量配置

    默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行直接使用python命令. 1. 首先需要在系统中注册python环境变量:假设python的安装 ...

  6. windows7下python环境变量配置

    默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行或cmd里直接使用python命令. 1. 首先需要在系统中注册python环境变量:假设pyth ...

  7. FAQ:Python环境变量配置

    Python安装安装成,需要配置环境变量: 默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行直接使用python命令. 1. 首先需要在系统中注册 ...

  8. python基础(2):python的变量和常量

    今天看看python的变量和常量:python3 C:\test.py 首先先说一下解释器执行Python的过程: 1. 启动python解释器(内存中) 2. 将C:\test.py内容从硬盘读入内 ...

  9. python __name__ 变量的含义

    python __name__ 变量的含义 if __name__ == '__main__': tf.app.run() 当python读入程序时,会初始化一些系统变量.如果当前程序是主程序,__n ...

随机推荐

  1. linux 清空catalina.out日志 不需要重启tomcat

    # cd /usr/local/tomcat8.0/logs/ # echo "" > catalina.out

  2. linux下svn的用法

    转载:http://blog.chinaunix.net/uid-22150747-id-189264.html 1.将文件checkout到本地目录 svn checkout path(path是服 ...

  3. 企业应用:浅谈 “数据权限” 和 查询 API 设计

    背景 多数企业应用都需要对数据权限进行控制,如:某个用户只能看到某个范围的数据(数据行).某个用户只能看到某几列数据(数据列).本文以数据行级别的权限控制为范例,谈谈如何设计权限模型和查询 API. ...

  4. python爬虫beautifulsoup4系列4-子节点

    前言 很多时候我们无法直接定位到某个元素,我们可以先定位它的父元素,通过父元素来找子元素就比较容易 一.子节点 1.以博客园首页的摘要为例:<div class="c_b_p_desc ...

  5. OpenShift负载分区策略(Router Shading)

    在很多场景下,单靠几个在Infra节点上的Router进行服务请求的转发是不够的,项目中很多时候都有流量隔离的需求,主要场景在于: 一个集群中的不同的环境的流量隔离需求,比如开发走几个Router,生 ...

  6. HDU 4901 The Romantic Hero 题解——S.B.S.

    The Romantic Hero Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  7. C#获取相对路径[转]

    C#最常使用的相对路径是从当前程序所在路径开始相对寻径,找到要找的路径,即以下两种最简单的方式: 1. 程序根目录.(即exe程序所在路径) //下面两个路径是等价的,都是exe程序所在路径(通常是b ...

  8. java学习笔记3--类与对象的基础

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note3.html,转载请注明源地址. 1.面向对象的程序设计方法概述 面向对象的程序设计 与 ...

  9. Easyui 判断某个Div 里的表单项是否验证通过.

    var isValid = $("#divId").Form("validate"); if( isValid ){ alert("验证通过" ...

  10. [Grunt] Minifying your output with grunt-uglify

    For production we want to use minified javascript to reduce the payload that is sent from the server ...