IC脚本—— Python基本使用
Shell 不够 Python 凑,可能工作中还常常看到 Perl 脚本,但是那玩意儿更难学一些,现在越来越多人投入到 Python 的怀抱。IC设计中该怎么使用 Python 呢?
1 Python基础知识
1.1 Python不同版本
Python 的 3.0 版本常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python3.0 在设计的时候没有考虑向下兼容。官方宣布:2020年1月1日,停止Python2的更新。因此,我们只要学习 Python3 就行了,本文所阐述的也都是 Python3 的内容。下面是关于查看和加载 Python 版本的常用命令:
- 查看正在使用的 python 版本:
- python -version
- python -V
- 查看所有可用的 python 版本
- module av tool/python
- 卸载指定的python版本:
- module unload tool/python/3.5.0
- 加载指定的 python版本:
- module load tool/python/3.7.2
- 在环境里指定默认 python 版本:
- Home 目录下的 .cshrc 中写上:setenv PYTHON_VER 3.9.7
1.2 Python IDE工具
首选 PyCharm,学生版免费,类似的还有 VScode,IDE 工具支持 调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等,让开发更加方便。
如果是轻量级的开发,直接用 gvim、sublime 编辑器就够了,除了语法高亮,配合 Python 相关插件也能进行编译功能。
1.3 Python运行方法
(1)交互式
交互式編程不需要創建脚本文件,是通过 Python 解释器的交互模式来編写代码。Linux 上你只需要在命令行中输入 Python 命令即可启动交互式編程,例如:
- python
- 命令行输入 python 然后回车,进入交互式編程界面,输入 exit() 或 ctrl+d 退出;
- ipython
- 命令行输入 ipython 然后回车,进入交互式編程界面,输入 exit、exit() 或 ctrl+d 退出;
- ipython 更加强大易用,例如可以输入 ls 等 Linux 命令、界面会标识行数等。
(2)脚本式
.FileName
./FileName.py
- 作用:打开一个 Python 读取并执行文件内的命令,不会影响当前 Terminal 下的变量。
- 注意:建议加上 ./ 符号,避免与其他系统设置好了的同名脚本命令冲突。
python ./FileName
python FileName.py
- 作用:当前 Terminal 的 python 环境下执行文件内的命令,会影响当前Terminal下的变量。
- 注意:FileName.py 可以是无运行权限的。
(3)#!注意事项
在写 Python 脚本时,第一行常常会指定解释器的路径,如 #!/usr/bin/python,那么当执行 ./test.py 时就会用 /usr/bin 下的 python 解释器去执行这个脚本。有常见的下面两种写法:
- #!/usr/bin/python3
- 告诉系统执行这个脚本时用 /usr/bin 下的 python3 解释器。
- 相当于写死了 python3 路径。
- #!/usr/bin/env python3
- 为防止用户没有将 python3 装在默认的 /usr/bin 路径里,当系统看到这一行的时候首先会到 env 设置里査找 python3 的安装路径,再用对应路径下的解器程序完成操作。
- 推荐这种写法。
1.4 Python包和模块
(1)Python包
所谓 Python 包其实就是一个分层次的文件目录结构,它定义了一个由模块及子包,以及子包下的子包等组成的 Python 的应用环境。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件,内容可以是空,用于标识当前文件夹是一个包。
那么 Python 包的结构和正常 Python 文件的关系如下所示:
当我们导入包进行使用时,需要在 my_code.py 的头上写明确是导入哪个包的哪个模块,然后才能使用,例如:
import my_packet.module_1
import my_packet.module_2
my_packet.module_1.func1()
my_packet.module_2.func2()
这样就太麻烦了,怎么省事一点呢?那就可以利用 __init__.py 文件,将这些导入包的代码写在 __init__.py 里,然后 my_code.py 文件只需要导入整个包就行了,例如:
#=============================== __init__.py
import my_packet.module_1
import my_packet.module_2
#=============================== my_code.py
import my_packet
my_packet.module_1.func1()
my_packet.module_2.func2()
此外还可以在 __init__.py 文件里用 __all__ 来指定模块里哪些函数方法可以被导入,例如:
from pysolid.grid import (
calc_solid_earth_tides_grid,
plot_solid_earth_tides_grid,
)
from pysolid.point import (
TIDES,
calc_solid_earth_tides_point,
plot_solid_earth_tides_point,
plot_power_spectral_density4tides,
)
__all__ = [
'__version__',
'calc_solid_earth_tides_grid',
'plot_solid_earth_tides_grid',
'TIDES',
'calc_solid_earth_tides_point',
'plot_solid_earth_tides_point',
'plot_power_spectral_density4tides',
]
(2)Python模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和 Python 语句。模块的导入语句是 import,当运行 import 时会执行所导入的包里面的语句内容,后面就可以用该包里面的函数方法了。
import语句
import my_packet.module1
my_packet.module1.func1()
from...import语句
from my_packet import module1
module1.func1()
from my_packet.module2 import func2
func2()
from...import *
from my_packet.module1 import *
func1()
as
import my_packet.module1 as a
a.func1()
from my_packet import module2 as b
b.func2()
2 Python重要语法
本来想和 Shell 那篇博客一样把所有语法过一遍,然而网上教程实在太多,平时遇到生疏的,去菜鸟网查查就行了:https://www.runoob.com/python/python-tutorial.html,因此这里只记录一下个人觉得比较有用的语法,并不断更新。
2.1 print格式化
(1)类C写法
类C写法,中间用 % 隔开,如下所示:
(2)f-string法
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 { } 包起来,它会将变量或表达式计算后的值替换进去。如下所示:
(3)三引号法
大段的需要换行的字符串,可以采用三引号法,如下所示:
2.2 print换行
(1)中间换行
采用转义字符 \n 即可,如下所示:
(2)结尾不换行
将 print 参数 end 设置为 "" 即可,如下所示:
3 Python常用包
3.1 命令行参数argparse
argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse。
3.2 Excl表格处理相关
xlrd、xlwt、xlsxwriter、pandas、openpyxl、numpy。
推荐博客:https://www.runoob.com/python/python-tutorial.html
3.3 其他
re、numpy、
未完待续......
参考资料:
[1] 菜鸟网Python基础教程:https://www.runoob.com/python/python-tutorial.html
[2] B站Python子木:https://www.bilibili.com/video/BV1wD4y1o7AS/?p=1&vd_source=a331e054109066482a3cb202fffeb664