今天在读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. MYSQL DBA大牛

    http://www.penglixun.com/masters_books/dba_masters

  2. OPENGL架构

    第2章 OpenGL 简介 每台计算机都有专门处理图形的硬件,它们控制着屏幕上显示的内容.OpenGL向这种硬件发出命令,告诉它们执行什么操作.计算机游戏或者其他任意软件借助制造商提供的设备驱动程序, ...

  3. iOS-- UIimageView详解

    原文地址: http://blog.csdn.net/djxiaoyu_haha/article/details/40348377 // (1)创建 UIImageView *imageView = ...

  4. leetCode(28):Contains Duplicate II

    Given an array of integers and an integer k, find out whether there there are two distinct indices i ...

  5. 如何在jenkins上通过mvn方式运行sonar

    1.首先在jenkins所在机器的的maven配置文件(settings.xml)里做如下配置: <profile> <id>sonar</id> <acti ...

  6. kafka生产者、消费者java示例

    1. 生产者 import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.Ke ...

  7. iOS:网络编程的第三方框架:AFNetworking、SDWebImage

    网络编程第三方框架:AFNetworking.SDWebImage 介绍:这些框架是开源的,经过前人的封装.改进,成为使用次数很多的一个性能好的源代码框架,只需要将它导入项目中,就可以使用.因此,在做 ...

  8. JavaScript实现瀑布流

    前端内容: 使用JavaScript和四个div,将照片放入四个div中 <!DOCTYPE html> <html lang="en"> <head ...

  9. mysql考试总结

    USE school; -- 班级表 CREATE TABLE class( cid TINYINT PRIMARY KEY AUTO_INCREMENT, caption VARCHAR(20) ) ...

  10. 主题 Theme 小结

    主题的使用 默认创建的Android工程中,在AndroidManifest.xml文件中有<application android:theme="@style/AppTheme&qu ...