Python Module
Python Module 导入方法
import <module name>
调用这个方法导入的module中的函数时,需要<module name>.<function name>
格式进行使用from <module name> import <sth>
从某个模块中引入某些特殊函数等引入现在所在的全局命名空间中,直接使用<sth>
就可以进行使用。这里引入的可以是一个子包,也可以是子包中的任意对象。from <module name> import *
将模块中所有对象引入,直接使用原模块中的名称即可使用
搜索路径
导入一个模块时,Python 解析器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录,Python 则搜索在 shell 变量
PYTHONPATH
下的每个目录。 - 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为
/usr/local/lib/python/
。 模块搜索路径存储在system
模块的sys.path
变量中。变量里包含当前目录,PYTHONPATH
和由安装过程决定的默认目录。
命名空间和作用域
- 变量:名字与匹配对象的对应
- 命名空间:记录了所有名字-对象对应关系的字典
python表达式可以访问全局/局部命名空间,重名时局部命名空间优先。
使用global
语句可以告诉python变量属于全局变量。ex.global x
导入本地自定义包
文件结构
main.py
package
|--__init__.py
|--module1.py
|--module2.py
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在__init__.py
文件, 该文件的内容可以为空。__init__.py
用于标识当前文件夹是一个包。
假设module1.py
中有函数func1()
,则在main函数中可以使用以下集中方式进行包导入:
import mymodule.module1
此时对应func1()
的调用为mymodule.module1.func1()
,前缀较长,比较繁琐。import mymodule.module1 as m1
此时对应func1()
的调用为m1.func1()
from mymodule import module1
此时对应func1()
的调用为module1.func1()
集合数据类型
Python 编程语言中有四种集合数据类型:
- 列表(List)是一种有序和可更改的集合。允许重复的成员。
- 元组(Tuple)是一种有序且不可更改的集合。允许重复的成员。
- 集合(Set)是一个无序和无索引的集合。没有重复的成员。
- 词典(Dictionary)是一个无序,可变和有索引的集合。没有重复的成员。
选择集合类型时,了解该类型的属性很有用。
为特定数据集选择正确的类型可能意味着保留含义,并且可能意味着提高效率或安全性。
- List
thislist = ["apple", "banana", "cherry"]
print(thislist[1])
thislist[1] = "mango"
- Tuple
thistuple = ("apple", "banana", "cherry")
print(thistuple[1])
- 不可更改,需要转为列表更改后再转回
- Set
thisset = {"apple", "banana", "cherry"}
- 访问项目:
- 您无法通过引用索引来访问
set
中的项目,因为set
是无序的,项目没有索引。 - 但是您可以使用
for
循环遍历set
项目,或者使用in
关键字查询集合中是否存在指定值。
- 您无法通过引用索引来访问
- 要将一个项添加到集合,请使用
add()
方法。 - 要向集合中添加多个项目,请使用
update()
方法。
- Dictionary
- 创建字典
thisdict = { "brand": "Porsche", "model": "911", "year": 1963 }
x = thisdict["model"]
orx = thisdict.get("model")
- thisdict[“year”] = 2019
- 创建字典
Virtual Environment
安装虚拟环境
PS D:\Work\04 Research Project\21.08.19 Early Visual Processing\pyspice> pip install virtualenv
Collecting virtualenv
|████████████████████████████████| 5.6 MB 6.4 MB/s
Collecting filelock<4,>=3.2
Downloading filelock-3.4.0-py3-none-any.whl (9.8 kB)
Collecting backports.entry-points-selectable>=1.0.4
Downloading backports.entry_points_selectable-1.1.1-py2.py3-none-any.whl (6.2 kB)
Collecting platformdirs<3,>=2
Downloading platformdirs-2.4.0-py3-none-any.whl (14 kB)
Collecting distlib<1,>=0.3.1
|████████████████████████████████| 496 kB 1.6 MB/s
Requirement already satisfied: six<2,>=1.9.0 in c:\programming\python\lib\site-packages (from virtualenv) (1.16.0)
Installing collected packages: platformdirs, filelock, distlib, backports.entry-points-selectable, virtualenv
创建虚拟环境
virtualenv myvenv
,可选参数:
--no-site-packages
:创建虚拟环境时,不复制主环境中安装的第三方包,也就是创建一个 “干净的” 虚拟环境-p
:用于指定 Python 解析器,就是安装好的 Python 应用程序,默认为当前环境中的 Python--no-pip
:不需要安装 pip,默认为安装--clear
:如果创建虚拟环境的目录已经有了其他虚拟环境,清除重建
激活虚拟环境
虚拟环境创建好后,需要激活才能在当前命令行中使用,可以理解成将当前命令行环境中 PATH 变量的值替换掉
通过 virtualenv 和 模块 venv 创建的虚拟环境,激活方式是一样的,即运行激活脚本
- Windows 系统中,激活脚本路径是
<myvenv>\Scripts\activate.bat
,如果是 powershell 命令行,脚本换成Activate.ps1
, 注意将换成你自己的虚拟环境目录 - Linux 系统中,激活脚本路径是
<myvenv>/bin/activate
,默认脚本没有执行权限,要么设置脚本为可执行,要么用source
命令执行
激活后,可以查看PATH
变量 echo %PATH%
退出虚拟环境
退出虚拟环境很简单,只需要执行 deactivate
命令就行,这个命令也在虚拟环境的脚本目录下,因为激活时,将脚本目录设置到 PATH
中了,所以可以直接使用
退出虚拟环境相当于将 PATH
恢复成原来的
Minutiae
- Python does not have
switch
statement. Use dict instead. - autopep8 auto line feed:
- Python编码风格指导(PEP8)要求每行代码不得超过80个字符。而VSCode+Pyhon常用代码检查工具是pylint和flake8,常用代码格式化工具是yapf、autopep8和black。针对代码过长导致格式化时自动换行,应在setting.json中修改格式化工具的每行最大字符个数。
// autopep8 "python.formatting.provider": "autopep8", "python.formatting.autopep8Args": [ "--max-line-length=200" ],
- Python编码风格指导(PEP8)要求每行代码不得超过80个字符。而VSCode+Pyhon常用代码检查工具是pylint和flake8,常用代码格式化工具是yapf、autopep8和black。针对代码过长导致格式化时自动换行,应在setting.json中修改格式化工具的每行最大字符个数。
exec
执行储存在字符串或文件中的 Python 语句,相比于eval
,exec
可以执行更复杂的 Python 代码
Resources
(W3School Python 教程)[https://www.w3school.com.cn/python/index.asp]