python的包级别高于模块,其树结构可以参看如下示意图
包1
|_ 子包1.1
|_ 子包1.1.1
|_ 模块1.1.1
|_ 模块1
|_ 模块2
python查看帮助文档
第一种方法在命令行中查看模块的帮助文档
python #开启python程序
from sys import argv #导入要查看的模块
help(argv) #查看相关帮助
第二种方法查看具体指令的帮助文档
python -m pydoc open # open 是想要查看的目标命令名称
格式化字符串
在python3.6中可以直接通过f开头的字符串完成该功能
print(f"hello {变量名}")
在python2.7中通过 % 或者format方式完成
stringToBePrinted = 'hello %(gustName)+s,i am %(age)d' %{'gustName':'shawn.li','age':18}
定义一个函数
def helloFunc(theNameToSayHllo):
print("hello",theNameToSayHllo)
调用一个函数
from helloFunc import helloFunc
theName = raw_input("type in the name !")
helloFunc(theName)
python 以冒号(:)作为一个新代码块开始的标志,以缩进区分代码块之间的界限,冒号之后一定是缩进,否则python会报错
if/for/while/def/classs 等都是新代码块,语句结尾时候都是 冒号
然后在相关代码块中的代码,都以相同的缩进表示属于当前代码块;
然后是新的代码块 if/for/while/def/classs 冒号
在当前代码块中的代码,都以相同的缩进表示属于当前代码块;
import 与 from 包 import 模块的使用场景区别
1、如果你要经常存取模块的属性和方法,且不想一遍遍地敲入模块名,使用 from module import。
2、如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import。
3、如果模块包含的属性和方法与你的某个模块同名,你必须使用 import module 来避免名字冲突。
配置项目骨架
需要安装的工具包
distribute 、virtualenv、nose
注意事项,要先安装virtualenv并进行配置,再安装nose,这样可以为不同的项目安装不同的相互冲突的软件包版本,同时还不会污染主系统级别的配置。
第一步,安装distribute包
pip install distribute
第二步,安装虚拟环境包
pip install virtualenv
第三步,在目标文件夹.venvs下创建一个叫lpthw的虚拟环境
mkdir .venvs
virtualenv --system-site-packages .venvs/lpthw
第四步,激活lpthw虚拟环境,每次重新运行软件的时候都要运行该指令以使响应的虚拟环境被重新激活
.\.venvs\lpthw\Scripts\activate
第五步,在虚拟环境中安装nose
(lpthw) D:\python\pythonProj>pip uninstall nose
卸载工具包与退出虚拟环境的指令
pip unistall 包名称
D:\python\pythonProj>.\.venvs\lpthw\Scripts\deactivate
第六步,创建一个项目框架,其中NAME是存放模块的包的名字,在test文档中,import的包就是这个名字
D:\python\pythonProj\pythonLearning>..\.venvs\lpthw\Scripts\activate
# 重开cmd后,重新激活相关目录中的虚拟环境
(lpthw) D:\python\pythonProj\pythonLearning>mkdir projectsFramework
# 创建一个存放所有项目的目录
(lpthw) D:\python\pythonProj\pythonLearning>cd projectsFramework
(lpthw) D:\python\pythonProj\pythonLearning\projectsFramework>mkdir skeleton
# 创建新项目的基础目录
(lpthw) D:\python\pythonProj\pythonLearning\projectsFramework>cd skeleton
# 进入创建的项目目录
(lpthw) D:\python\pythonProj\pythonLearning\projectsFramework>mkdir bin NAME tests docs
# 创建四个文件夹
第七步,在NAME 和 tests 文件夹下分别创建一个_init_.py文件
在poweShell中的指令为
PS C:\Users\Dell> cd D:\python\pythonProj\pythonLearning\projectsFramework
PS D:\python\pythonProj\pythonLearning\projectsFramework> new-item -type file NAME/_init_.py
PS D:\python\pythonProj\pythonLearning\projectsFramework> new-item -type file tests/_init_.py
第八步,在projectsFrameswork目录下创建一个setup.py文件,拷入以下代码
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
config = {
'description':'My project',
'author':'shawn.li',
'url':'toBeFilled',
'dowload_url':'toBeFilled',
'author_email':'shawn.yim@foxmail.com',
'version':'0.01',
'install_requires':['nose'],
'packages':['NAME'],
'scripts',[],
'name':'skeleton'
}
setup(**config)
第九步,在tests文件夹下创建NAME_tests.py文件,测试文件的名称格式严格按照这种格式来写“模块名称_tests.py”,拷入一些简单的代码,通常项目目录路径不在sys.path中,需要单独append,但是在pythonShell中append之后每次退出,保存的路径就会丢失,因此可以直接写到脚本中。
from nose.tools import *
import sys
sys.path.append('D:\python\pythonProj\pythonLearning\projectsFramework\skeleton\NAME')
import NAME
def setup():
print("setup!")
def teardown():
print("teardown!")
def test_basic():
print("i ran!")
第十步,在projectsFramework目录下运行指令nosetests
nosetests
得到运行结果
(lpthw) D:\python\pythonProj\pythonLearning\projectsFramework\skeleton>nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.012s
OK