python---模块化
相对路径:
绝对路径:
一个python文件,在运行时都会有一个运行时位置,最开始 即为 文件所在的文件夹,sys.path.append("..") 可以将当前python解释器的位置 设置为上一层目录
在大型工程中,固定一个确定的路径(绝对位置)是十分必要的(一般相对路径是个很不好的选择),因为代码会迁移,相对路径容易造成错误
一个独立的项目,所有模块的追寻方式,最好从根目录开始,这叫相对的绝对路径
在pycham中构建python项目,pycharm会将sys.path 列表的第一个元素设置为空字符串,代表项目根目录的绝对位置。
python的虚拟运行环境:
通过virtualenv 工具,很方便的创建一个全新的python运行工环境
对于每一个项目来说,最好有一个独立的运行环境,保证包和模块的纯净性
在虚拟运行环境里,有一个文件activate,用于激活运行时环境,可以通过在该文件末尾添加 export PYTHONPATH="你想添加的目录,比如项目的根目录",添加环境的搜索路径中(适用于linux系统,不适用于win系统)
python 是脚本语言,和java不同 ,并不需要提供显示的main()函数入口
那么 if __name__ == "__main__"可以带来什么好处呢?
1、python在导入文件的时候,会自动将暴露在外面的代码全部执行一遍,在导入模块时会带来问题,执行一些不需要执行的代码
2、在模块(python文件)中,没有封装,但是在被import时,又不需要被执行的代码,要封装在 if __name__== "__main__"下面,来避开import时执行
3、原理,__name__是python的魔术内置参数,是模块对象的一个属性;在import导入模块时,__name__会被赋值为该模块的名字,自然就不等于__main__
from module_name import * 会把module中所有的函数和类都拿过来,如果和其他函数名、类型名称相同,会发生冲突
import module_name 直接导入模块名,通过module_name.class_name(或者.function_name)来使用内部的类和函数,可以防止出现名称 冲突的问题
在项目中的文件夹下加入__init__.py文件,表示项目对外暴露的接口,这种方式是python2 的标准方式;在python3中可以不用写__init__.py文件
多个import 同一个模块,模块中的语句只会被执行一次,可以防止重复导入引起的错误(模块种语句的多次执行)
代码规范:非特殊情况,所有的import语句都写在文件的顶部