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 然后回车,进入交互式編程界面,输入 exitexit()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

 

posted @ 2023-12-31 16:26  咸鱼IC  阅读(1021)  评论(0编辑  收藏  举报