3、Python基础知识:注释、变量以及数据类型、标识符和关键字、输入函数、输出函数、运算符、程序类型转换

各位工程师朋友,大家好。今天我们来聊聊Python最基础的东西。别小看这些基础,我见过太多仿真脚本跑着跑着就崩了,回头一查,往往是变量名写错、类型搞混这种低级问题。咱们把地基打牢,后面写复杂脚本才不慌。

本章核心脉络:从注释到类型转换,一条线串起Python编程的“语法骨架”。

Python基础语法 注释 # 单行 / ''' 多行 ''' 变量 & 数据类型 int / float / str / bool / list / dict 标识符 & 关键字 命名规则 / 保留字 输入 / 输出 input() / print() 运算符 算术 / 比较 / 逻辑 / 赋值 / 成员 类型转换 int() / float() / str() / list() 打好基础 → 写出健壮的仿真脚本

3.1 注释:给代码加个“说明书”

注释这东西,说白了就是写给未来的自己看的。我有个习惯:写脚本前先写注释,把逻辑理清楚再动手敲代码。你想想看,三个月后你打开一个脚本,看到满屏的#号,是不是比看天书舒服多了?

Python里注释分两种:

  • 单行注释:用 # 开头,整行都失效。
  • 多行注释:用三个单引号 ''' 或三个双引号 """ 包起来。
# 这是单行注释,通常用来解释下一行代码
voltage = 3.3  # 电源电压,单位V

'''
这是多行注释
可以写好几行说明
比如描述整个函数的功能
'''

我的小技巧:在EDA仿真脚本里,我习惯在文件头部写一段多行注释,记录脚本用途、作者、修改日期。这样团队协作时,大家一眼就知道这个脚本是干嘛的。

3.2 变量与数据类型:存数据的小盒子

变量就是个名字,指向内存里的一块空间。Python是动态类型语言,你不需要声明类型,直接赋值就行。但别高兴太早——类型搞混了,程序照样崩。

常用的数据类型有这些:

类型 例子 说明
int a = 10 整数,比如仿真步数、计数器
float b = 3.14 浮点数,比如电压、电流值
str c = "hello" 字符串,比如文件名、路径
bool d = True 布尔值,True/False,用于条件判断
list e = [1,2,3] 列表,可修改,存一组数据
dict f = {"key":"value"} 字典,键值对,查数据很快
# 变量赋值
sim_time = 1000       # int
voltage = 1.8         # float
netlist_file = "top.sp"  # str
is_converged = False   # bool
node_list = ["VDD", "GND", "CLK"]  # list
params = {"temp": 25, "corner": "tt"}  # dict

我曾经踩过的坑:有一次我把一个字符串当数字去计算,结果报错TypeError。后来我养成了习惯——从文件读进来的数据,先用type()检查一下类型,再决定要不要转换。

3.3 标识符和关键字:起名字的规矩

标识符就是你给变量、函数、类起的名字。Python对名字有要求:

  • 只能包含字母、数字、下划线,不能以数字开头。
  • 区分大小写,Voltage 和 voltage 是两个变量。
  • 不能使用Python的关键字(保留字)。

关键字有哪些?比如 if、for、while、def、class、import 等等。你可以用 import keyword; print(keyword.kwlist) 查看完整列表。

我的命名习惯:仿真脚本里,我常用小写字母加下划线,比如 sim_time、output_file。这样一眼就能看出是变量,不是类名。团队里统一风格,代码看起来才舒服。

3.4 输入函数与输出函数:和程序对话

input() 用来从键盘获取输入,print() 用来把结果打印到屏幕。这两个函数在调试脚本时特别有用。

# 输入
user_input = input("请输入仿真时间:")
print("你输入的是:", user_input)

# 输出格式化
voltage = 1.2
print(f"当前电压为 {voltage} V")  # f-string,Python 3.6+ 推荐

注意:input() 返回的永远是字符串。如果你要数字,记得转换。

我曾经犯的错:写了一个交互式脚本,让用户输入仿真步数。结果用户输入了"1000",我直接拿去计算,报错。后来我加了 int(input(...)),问题解决。记住:input出来的是字符串,不是数字!

3.5 运算符:让数据动起来

运算符就是用来操作数据的符号。Python的运算符很丰富,我挑几个常用的说说:

类别 运算符 例子
算术 + - * / // % ** 10 // 3 = 3(整除)
比较 == != > < >= <= a == b 判断相等
逻辑 and or not if a > 0 and b < 10
赋值 = += -= *= /= count += 1 等价于 count = count + 1
成员 in not in "VDD" in node_list
# 算术运算
a = 10
b = 3
print(a + b)   # 13
print(a // b)  # 3(整除)
print(a ** b)  # 1000(10的3次方)

# 逻辑运算
voltage = 1.2
temp = 85
if voltage > 1.0 and temp < 100:
    print("条件满足,继续仿真")

# 成员运算
netlist = ["VDD", "GND", "CLK"]
if "VDD" in netlist:
    print("VDD节点存在")

我的经验:在仿真脚本里,我经常用 // 做整除,比如计算步数。用 in 检查节点是否在列表中,比写循环快多了。

3.6 程序类型转换:把数据变成你想要的形状

类型转换,就是把一种数据类型变成另一种。Python提供了内置函数来做这件事:

  • int(x):把x转成整数
  • float(x):把x转成浮点数
  • str(x):把x转成字符串
  • list(x):把x转成列表
  • bool(x):把x转成布尔值
# 字符串转数字
s = "3.14"
f = float(s)   # 3.14
i = int(f)     # 3(注意:直接截断,不四舍五入)

# 数字转字符串
num = 100
text = str(num)  # "100"

# 列表转字符串
nodes = ["VDD", "GND"]
node_str = ", ".join(nodes)  # "VDD, GND"

我曾经踩过的坑:有一次我从CSV文件读了一列电压值,全是字符串。我直接拿去做比较,结果"1.2" > "1.8" 返回True!因为字符串比较是按字典序。后来我老老实实先 float() 转换,再比较。记住:类型不对,结果全错。

好了,这一章的内容就这些。注释、变量、数据类型、标识符、输入输出、运算符、类型转换——这些是Python的“字母表”。你想想看,写仿真脚本无非就是用这些基础元素,组合成逻辑,去控制仿真器、处理数据。基础打牢了,后面学函数、类、文件操作,才会顺手。

一句话总结:写脚本前先想清楚数据类型,用注释理清思路,用print验证中间结果。这是我多年仿真脚本开发的经验,分享给你。

可可精品资料库