Home
avatar

.𝙃𝙖𝙣

开始系统学 Python,先把 Hello World、数据类型和关键字过一遍

前面在接 ComfyUI 和 OBS 的时候,其实已经抄过一些 Python 代码了,但那种状态更像是“照着模板改”,还不算真的会。

这几天准备老老实实从头补一遍 Python。先不碰太复杂的东西,先把最基础的语法和概念过一遍,至少以后再看 ComfyUI 节点代码或者 SDK 示例时,不至于每一行都在猜。

1. 为什么现在开始系统学 Python

前面接 ComfyUI 的时候,我已经能把一些代码拼起来用了。

比如:

  • 复制 ComfyUI 里的节点模板
  • 按着示例改一些输入输出
  • 照着华为云 OBS 的 SDK 文档填参数
  • 跑通上传和回调

但那种“能跑”其实是有点虚的。

因为我当时很多时候并不是看懂了代码,而是:

  • 大概知道这一段是干嘛的
  • 改几个变量名
  • 补几个参数
  • 报错了再继续试

这么搞短期能解决问题,但后面会越来越难受。

因为一旦代码稍微绕一点,我就开始分不清:

  • 这一行是在定义变量,还是在调用方法
  • 这个字符串为什么要这样写
  • 这个参数为什么能传进去
  • defreturnclass 这些关键字分别是干嘛的

所以这次准备先别着急往后冲,先从最基础的东西开始补。

2. 先从 Hello World 开始,把运行这件事看简单一点

刚开始学的时候,最简单的一步还是先跑通:

print("hello world")

这行代码简单到不能再简单,但对我现在这个阶段还是有意义。

它至少先把一件事说清楚了:

Python 文件写好以后,解释器会按顺序执行。

print() 现在对我来说,可以先理解成一个最基础的输出方法。

它先不需要想太深,先记住两件事:

  1. print 可以把内容输出出来
  2. 括号里的内容会被当成参数传进去

比如:

print("hello world")
print(123)
print(True)

这几行虽然简单,但已经能看出一点东西:

  • 字符串可以打印
  • 数字可以打印
  • 布尔值也可以打印

Python 里“能处理的数据”不只一种类型。

3. 变量这件事,我现在先理解成“给一个值起名字”

继续往下看代码的时候,最常见的就是变量。

比如:

name = "kzh"
age = 23
is_working = True

我现在对变量的理解先记成一句最简单的话:

变量就是给一个值起名字,后面用这个名字去拿它。

像上面这几行:

  • name 这个变量里放的是字符串
  • age 里放的是整数
  • is_working 里放的是布尔值

这样再去看后面的代码,就没那么乱了。

比如:

print(name)
print(age)

这里不是在打印单词本身,而是在打印变量里存的值。

这个点虽然基础,但我之前刚开始看代码的时候,脑子里其实没这么清楚,经常会把“变量名”和“值”混在一起看。

4. 这几天先记住几个最常见的数据类型

我现在先不贪多,先把最常见的几种记住。

字符串 str

字符串可以先理解成:一段文本。

name = "hello"
msg = 'python'

我目前的理解:

  • 用引号包起来的,一般就是字符串
  • 双引号和单引号都可以表示字符串
  • 字符串适合放名字、路径、提示词、URL 这类文本内容

像我前面碰到的回调地址、文件名、bucket 名称,其实很多本质上都是字符串。

整数 int

整数就是没有小数点的数字。

age = 23
count = 10

这个比较直观,像数量、编号、循环次数,很多地方都可能会用到。

浮点数 float

带小数点的数字。

score = 95.5
ratio = 0.8

比如以后碰到一些权重、比例之类的参数,大概率就会看到这类值。

布尔值 bool

布尔值只有两个:

True
False

我现在先把它理解成“是 / 否”,“开 / 关”,“满足 / 不满足”。

这个东西在判断里应该会很常见。

列表 list

这个我现在也先记一下,因为看到得很频繁。

names = ["a", "b", "c"]
nums = [1, 2, 3]

先粗暴理解成:可以按顺序放多个值的东西。

后面看 ComfyUI 或者接口返回数据时,应该会经常碰到它。

5. 字符串这块先多看一点,因为后面最常用

我现在看下来,字符串应该是最先要熟一点的。

因为很多真实项目里的东西,本质上最后都会落到字符串:

  • 文件路径
  • 图片地址
  • 接口地址
  • token
  • 提示词
  • bucket 名称
  • 回调参数

所以这块我先多记一点。

字符串拼接

name = "kzh"
print("hello " + name)

这里我先理解成:字符串可以加在一起。

字符串重复

print("=" * 10)

这个小点挺有意思,说明字符串还能重复。

字符串长度

name = "python"
print(len(name))

这里又出来一个 len()

我现在先把它记成:拿长度的方法。

6. 方法、函数、关键字,这几个概念我现在先粗着分

这几天看代码的时候,我脑子里最容易混的其实是这几个东西。

先说函数

比如:

print("hello")
len("abc")

我现在先把函数理解成:

拿来做一件事的东西,调用时一般要写括号。

比如:

  • print() 负责输出
  • len() 负责拿长度

再说方法

比如字符串后面常见这种写法:

name = "python"
print(name.upper())

这里的 upper(),我现在先理解成:

挂在某个对象身上的函数。

  • print() 这种可以直接用
  • name.upper() 这种是“这个字符串自己带的方法”

这个区分我现在还在熟,但至少比之前完全混着看要好一点了。

再说关键字

像下面这些:

def
return
class
if
for
while
import

我现在先记成:

Python 语言自己保留的词,有固定用途,不能乱拿来当变量名。

比如 def 是定义函数时会用到的,if 是判断,import 是导入。

这个阶段不用一次全背下来,但至少得看着眼熟,不然读代码会特别卡。

7. 现在回头看前面抄的那些代码,开始能分清一点结构了

这几天补完这些最基础的东西以后,我再回头看前面接 ComfyUI 节点和 OBS SDK 的那些代码,感觉已经有一点不一样了。

虽然还是不能说完全看懂,但至少开始能拆了。

比如以前我看一段代码,感觉就是一坨。

现在会开始这样看:

  • 这里是在导入模块
  • 这里是在定义变量
  • 这里是在定义方法
  • 这里是在调 SDK
  • 这里是在返回结果

这个变化对我来说还挺重要的。

因为这说明我终于不是只会“照着改”,而是开始能一点点看清代码的骨架了。

8. 这篇先记一个目前够用的学习目标

我现在不打算一上来就把 Python 学得特别深。

现阶段更现实的目标是:

  1. 先把基础语法看顺
  2. 先把常见数据类型分清
  3. 先把函数、方法、关键字这些最常见的东西看懂
  4. 再回去看 ComfyUI 节点和 SDK 示例代码
  5. 让自己从“会抄”慢慢变成“能改、能看懂、能自己补一点”

这个目标不算高,但我觉得挺适合我现在这个阶段。

因为前面已经碰到实际问题了,所以这次再学这些基础,不会觉得它完全没用,反而会经常冒出一种感觉:

“哦,原来前几天那段代码这里是这个意思。”

这种反馈还挺直接的。

9. 先记到这里,后面继续往函数和类走

这篇先当作一个起点。

目前我先把最基础的几块过了一遍:

  • Hello World
  • 变量
  • 常见数据类型
  • 字符串
  • 函数
  • 方法
  • 关键字

下一步应该会继续往:

  • if
  • for
  • def
  • 模块导入

这些方向走。

因为我现在越来越感觉到,后面如果还要继续碰 ComfyUI 节点、SDK 封装、回调处理这些东西,Python 基础不补起来,很多代码都只能停留在“能跑就行”的层面。

先记一版,后面学到新的东西再继续补。

Python 学习笔记 基础语法 入门