美文网首页
1-1 Python程序概念层级

1-1 Python程序概念层级

作者: Avention | 来源:发表于2017-10-28 12:13 被阅读0次

什么是Python程序概念层级?

python分为4层:表达式 --> 语句  --> 模块 -->包

表达式

表达式是python程序中最小的构成单位。表达式最基本的功能就是创建和处理对象(可以是任意类型的)。

    name="王大锤"  

# 程序做了两件事情:

# 第一:在内存中开辟一块区域存储一个字符串对象"王大锤";

# 第二:把对象"王大锤"在内存中的唯一标识指向name。就可以通过name这个引用来操作"王大锤"对象了。

语句

个人理解:

    表达式说的是内存中有个什么对象 

    语句就是要多这个对象做什么

表达式:name="王大锤"

语句:print(name*3)  #在屏幕上连续打印3次"王大锤"

语句执行结果:王大锤王大锤王大锤

子语句的概念:

    语句: if score >= 60 :

    子语句: print('及格')

模块

个人理解:以.py作为后缀的文件都是模块。

在同一个模块中可以包含多个语句或表达式,也可以将语句或表达式定义到程序逻辑单元如函数或类中。

不管包含多少代码,当这些代码组织到一起形成一个以.py为后缀的文件,就形成了脚本文件,从概念上讲,这个脚本文件也称为一个模块。

在程序功能越来越复杂的情况下,可能需要将代码做一定的分割,将不同的功能放到不同的模块中(连接数据库模块、从网上爬取数据模块),而这些模块之间可能有一些关联,就需要将他们放在同一个文件夹下,这个文件夹在Python中就是包。用来定义一组文件或模块之间的关系的。


知道了Python层级,有什么用?

引用链接:http://www.jianshu.com/p/56829d816197

Python 包含子目录中的模块方法比较简单,关键是能够在 sys.path 里面找到通向模块文件的路径。

网上比较好找到的,是下面几种情况:

(1)主程序与模块程序在同一目录下:如下面程序结构:

-- src

|-- mod1.py

-- test1.py

若在程序 test1.py 中导入模块 mod1, 则直接使用import mod1或from mod1 import *;

(2)主程序所在目录是模块所在目录的父(或祖辈)目录如下面程序结构:

-- src

|-- mod1.py

|-- mod2

    |  -- mod2.py

-- test1.py

若在程序 test1.py 中导入模块 mod2, 需要在 mod2 文件夹中建立空文件init.py 文件(也可以在该文件中自定义输出模块接口); 然后使用from mod2.mod2 import *或import mod2.mod2.

(3)主程序导入上层目录中模块或其他目录(平级)下的模块如下面程序结构:

-- src

|-- mod1.py

|-- mod2

|  -- mod2.py

|-- sub

|  -- test2.py

-- test1.py

若在程序 test2.py 中导入模块 mod1 和 mod2。首先需要在 mod2 下建立init.py 文件(同(2)),src 下不必建立该文件。然后调用方式如下:

下面程序执行方式均在程序文件所在目录下执行,如 test2.py 是在 cd sub; 之后执行 python test2.py 而test1.py 是在 cd src; 之后执行 python test1.py;  但是在 src 目录下执行 python sub/test2.py 或者 python src/sub/test2.py 会报错。

import sys

sys.path.append("..")

import mod1

import mod2.mod2

(4)但是很多项目里,是通过命令行执行完整路径的 py 文件,需要解决如上问题。

通过(3)可以看出,导入模块关键是能够根据 sys.path 环境变量的值,找到具体模块的路径。如果在 src 目录下执行 python sub/test2.py 要成功,就需要在 test2.py 中添加当前文件所在的绝对路径到 sys.path, 代码如下:

import os

import sys

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),os.path.pardir)))

import mod2.mod2

然后执行 python src/sub/test2.py 就能正常导入 mod2 并使用了

相关文章

网友评论

      本文标题:1-1 Python程序概念层级

      本文链接:https://www.haomeiwen.com/subject/zafhpxtx.html