很多人第一次学 Python,跑去搜“Python 基本命令”,结果搜出来的东西五花八门——有人教你在终端里敲python --version,有人教你在 Python 交互环境里写print("hello"),还有人一上来就甩给你一堆 Linux 命令。其实这些都算“Python 基本命令”的范畴,但它们是不同层面的东西。这篇文章我会把这两个维度合并到一起讲清楚:一是你的电脑怎么“命令” Python 干活(终端命令),二是 Python 解释器里怎么“命令”它输出、计算、判断(语言内置命令)。对刚入门的朋友来说,把这层窗户纸捅破,后面学什么都顺了。
如果你是零基础,这篇文章就是给你准备的;如果你已经会装 Python 但总觉得各种概念很碎,也能从中把知识串起来。我尽量按实战路径来写,每一步都解释清楚“为什么这么做”,而不是光给一串代码让你复制。
1. 新手理解“Python 命令”的第一步:解释器与脚本的差异
1.1 交互式解释器:Python 的“命令行模式”
很多教程第一章就让你打开命令行输入python,回车之后你会看到类似>>>的提示符,这就是进入了 Python 交互式解释器。在这个模式下,你输入一行命令它立刻执行一行,回车就出结果。这种“敲一行、反馈一行”的模式非常适合验证语法、快速计算、测试某个函数到底怎么用。
比如你输入:
>>> 2 + 3 5 >>> print("你好,Python") 你好,Python要注意一点:在这个>>>环境里,我们输入的其实不是 Windows 命令或者 Linux 命令,而是 Python 语言本身的语句。所以“Python 基本命令”这个概念要分清:操作系统的命令(比如dir、cd)跟 Python 语言里的命令(比如print、if)是两码事。你输入cd Desktop想在 Python 交互器里切换目录,是做不到的,得退出解释器回到终端才能用操作系统的命令。
交互式解释器有个好处:你不需要创建文件,打开就能玩。很多老手排查问题也是这么干的——先开个 Python 环境,敲几行代码验证思路,确认没问题再写进脚本文件。我自己的习惯是日常 90% 的简单测试都在交互环境里完成,真正需要复用、批量处理的时候才会写脚本。
1.2 脚本文件:把命令存下来批量执行
当你需要一次性执行好几十行命令时,再一行一行敲效率就太低了。Python 的通用做法是把命令写在一个后缀为.py的文件里,然后用终端去“命令” Python 解释器执行这个文件。
在终端里执行:
python my_script.py如果你的电脑装了多个版本的 Python,可能要用python3来指定:
python3 my_script.py这里就出现了一个让很多新手懵圈的点:python my_script.py里的python是操作系统能识别的命令,它会去系统的 PATH 环境变量里找 Python 解释器,然后由解释器去执行.py文件里的内容。所以本质上,你是在用操作系统命令去调用 Python,然后用 Python 语言命令去控制计算机。这两层关系理清了,后面的各种命令都不会再混淆。
我见过不少人卡在“为什么我输入python没反应”这种问题上,一半以上都是环境变量没配对,具体排查方法我会在第 6 章细讲。
2. 环境准备:从下载安装到终端里敲出第一行代码
2.1 下载安装与版本选择
Python 官网的下载地址是 python.org,进去之后找到 Downloads 页面,系统会自动识别你的操作系统推荐对应版本。Windows 用户下载.exe安装包,macOS 用户下载.pkg,Linux 用户一般直接用包管理器安装,比如 Ubuntu 上是:
sudo apt update sudo apt install python3版本选择上,我建议新手直接装当前最新的稳定版即可。很多人纠结 Python 2 还是 Python 3——不用纠结了,Python 2 在 2020 年就停止维护,现在学 Python 3 就好。下载时注意看版本号,比如当前常见的是 3.9、3.10、3.11、3.12,装高一点的版本问题不大,除非你要用的一些老库还不兼容。
Windows 安装的时候有一个小细节极其重要:安装向导第一页最底部有一个勾选项,叫“Add python.exe to PATH”,一定一定要勾上。这个选项的意思是让 Windows 系统在全局范围内都能识别python这个命令。很多教程会漏掉这一步,或者用户装得太快没注意,结果装完一打开终端输入python,系统直接弹到微软商店去了。这里的事故我会在第 6 章展开。
2.2 环境变量与常用命令
安装完之后,你可以打开终端输入检测命令:
python --version python -V两个命令都能输出当前 Python 版本号。从这个时刻开始,python就成了你电脑里一个可用的“命令”。紧接着你应该试一下看安装路径:
where python # Windows 下查看可执行文件路径 which python3 # Linux / macOS 下查看路径这个命令的价值在于确认你运行的是哪个 Python。很多电脑里装了不止一个 Python——比如你系统自带了一个、自己又装了一个、用 Anaconda 又装了一个。这时候where python的排查价值就体现出来了。我遇到太多人问“为什么我 pip 装的库 import 不到”,一查才发现pip是 A 环境的,python是 B 环境的,两个人互相不认识。
Python 生态里还有一个命令是绕不开的:pip。它是 Python 的包管理工具,专门用来安装第三方库,比如最近热词里很多人搜的 numpy、sklearn、cv2,都用 pip 来装:
pip install numpy pip install scikit-learn pip install opencv-python装完之后如果你想确认装好了,可以进入 Python 交互模式然后import一下:
import numpy print(numpy.__version__)能打印出版本号就说明装好了。这个“装库 + import 验证”的组合拳,是后面所有第三方库使用的基础。
2.3 第一次运行:print() 与 id()/type() 的直观感受
环境配好之后,你的第一行代码建议从print开始。print是 Python 里最基础、最常用的输出命令,它的作用是把括号里的内容显示到屏幕上。
print("Hello, World!") print(3.14) print(1 + 2)但我要提醒你,print只是把值“显示”出来,它跟函数返回的结果是两回事。你可以顺手试一下这两个内置函数:
type(123) id(123)type()会告诉你一个数据的类型,id()会告诉你这个对象在内存中的唯一编号。这两个命令是后面理解 Python“一切皆对象”的关键。很多老手调试时也是靠type()来判断一个变量到底是什么类型,尤其是从 JSON 接口拿数据、从 Excel 读数据时,看到type()的结果你才不慌。
3. 最常用的基础命令与内置函数:不仅会用,还要懂原理
3.1 输入输出:input() 与 print() 的格式化
程序跟人交互的两个最基础动作就是输入和输出。Python 里输入用input(),输出用print()。
name = input("请输入你的名字:") print("你好," + name)注意一点:input()接收到的内容永远是字符串类型。很多新手在这里踩坑——输入了数字,拿去计算,结果报错或者结果是“10”+“20”得到“1020”而不是 30。正确做法是先做类型转换:
age = input("请输入年龄:") age = int(age) print("你明年", age + 1, "岁")print()的格式化输出也是入门必会的技能。我推荐三种写法,你自己选喜欢的:
# 方式一:拼接字符串(适合少量变量) print("你好," + name + ",你今年" + str(age) + "岁") # 方式二:格式化字符串 f-string(Python 3.6+,最推荐) print(f"你好,{name},你今年{age}岁") # 方式三:format 方法 print("你好,{},你今年{}岁".format(name, age))这里面 f-string 是现在主流的写法,代码最短,可读性最好,你只要记住在字符串前面加个f,然后在你想插入变量的位置用{变量名}包起来就行。
3.2 数据类型转换:int、float、str、bool
Python 里最常见的几个内置数据类型,新手一定要烂熟于心:
| 类型 | 代表内容 | 示例 | 转换函数 |
|---|---|---|---|
| int | 整数 | 42 | int() |
| float | 浮点数(小数) | 3.14 | float() |
| str | 字符串 | "hello" | str() |
| bool | 布尔型 | True / False | bool() |
| list | 列表 | [1, 2, 3] | list() |
| dict | 字典 | {"name": "张三"} | dict() |
| tuple | 元组 | (1, 2, 3) | tuple() |
| set | 集合 | {1, 2, 3} | set() |
类型转换是 Python 命令里的高频操作。比如从文件里读出来的数字是字符串格式,你没法直接做加减乘除,就得先转成int或float。再比如你写入 Excel 的时候,你希望它保留数字格式而不是文本格式,也要提前把类型转好。
有一个容易忽略的点:bool("")的结果是False,bool("0")的结果是True。因为空字符串会转为 False,而字符串 "0" 不是空字符串,它是非空字符串,所以是 True。这个细节在判断用户输入是否为空的时候非常实用。
3.3 容器的基本操作:列表、字典、数组切片
容器是 Python 命令中最见功力的部分。列表(list)可以理解成一个有序的“收纳盒”,你可以往里放任意类型的元素:
fruits = ["apple", "banana", "cherry"] fruits.append("orange") # 末尾追加 fruits.insert(1, "grape") # 指定位置插入 fruits.remove("banana") # 按值删除 print(fruits[0]) # 第一个元素 print(fruits[-1]) # 最后一个元素这里[-1]这种负数索引是 Python 的经典特性,很多新手一开始不习惯,但一旦用顺了会觉得比别的语言方便很多。它的规则是:-1代表最后一个,-2代表倒数第二个,依此类推。
字典(dict)是另一种高频容器,它存的是“键值对”,类似现实中的通讯录——一个姓名对应一个电话:
person = {"name": "李四", "age": 25, "city": "上海"} print(person["name"]) # 按键取值 person["age"] = 26 # 修改值 person["job"] = "工程师" # 新增键值对字典在实际开发中太常用了:解析 JSON 数据、读取配置文件、操作数据库查询结果,返回的基本都是字典或列表套字典的结构。
切片(slice)则是操作列表和字符串的利器,格式是[起始:结束:步长]:
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(nums[2:5]) # [2, 3, 4] 注意结束位置不包含 print(nums[:3]) # [0, 1, 2] 开头到第 3 个 print(nums[::2]) # [0, 2, 4, 6, 8] 每隔一个取一个 print(nums[::-1]) # 倒序翻转值得注意的是切片是“左闭右开”的:nums[2:5]包含索引 2、3、4,但不包含 5。这个规则如果你记混了,写代码会经常差一个数,老手也会偶尔翻车,所以建议直接把它背下来。
4. 流程控制与函数:从单条命令到完整的逻辑单元
4.1 if / elif / else 条件判断
程序之所以能“智能”,靠的就是条件判断。Python 的判断命令写法很简洁:
score = 85 if score >= 90: print("优秀") elif score >= 60: print("及格") else: print("不及格")有几个新手常见陷阱我要专门提醒:
一是冒号不能丢。if行结尾必须有冒号,下面缩进的代码块才属于这个条件。如果你漏了冒号,Python 会直接报SyntaxError。
二是缩进意思重大。Python 用缩进来表示代码块归属,不像 Java、C++ 用大括号。你写 if 下面的语句必须缩进 4 个空格(或者 Tab),同一层的缩进长度必须一致。很多人从别的语言转过来,容易在这个地方报IndentationError。
三是条件的真假判断。你可以直接写:
if name: # 等价于 if name != "" print(name)因为空字符串在条件判断中相当于 False,非空字符串相当于 True。同理,if len(list) > 0可以简写成if list。这个技巧在判空时非常常用。
4.2 for 与 while 循环
循环是让程序自动化重复劳动的主要手段。for循环经常配合range()使用:
for i in range(5): print(i) # 输出 0 1 2 3 4range(5)生成 0 到 4 的整数序列,注意不包含 5。如果你要 1 到 5,就用range(1, 6)。
遍历列表和字典也是 for 循环的核心场景:
# 遍历列表 for fruit in ["apple", "banana", "cherry"]: print(fruit) # 遍历字典的键值对 person = {"name": "李四", "age": 25} for key, value in person.items(): print(key, value)while循环适合你不知道具体循环多少次、只知道退出条件的场景:
count = 0 while count < 10: count += 1 print(count)写while最怕死循环——条件永远为真,程序永远不退出。一个有用的技巧是提前写好退出条件,或者用break主动中断循环:
while True: user_input = input("输入 q 退出:") if user_input == "q": break print("你输入的是", user_input)4.3 定义函数:def、return、参数默认值
当一段逻辑你需要在很多地方重复使用时,就应该把它封装成函数。Python 定义函数的命令是def:
def add(a, b): return a + b result = add(3, 5) print(result) # 8这里return是函数的“产出”,函数执行到return就会结束并把值返回给调用方。如果函数没有return,它返回的是None,也就是“什么都没有”。
参数默认值也是常用技巧:
def greet(name, greeting="你好"): return f"{greeting},{name}" print(greet("张三")) # 你好,张三 print(greet("张三", "早上好")) # 早上好,张三设置默认值的参数必须放在非默认参数后面。也就是说你不能写:
def greet(greeting="你好", name): # 这样会报错为什么?因为 Python 的位置参数匹配规则是从左到右的,如果你把有默认值的参数放在前面,调用时只传一个值的话,解释器无法判断你传的是给greeting还是name。
4.4 列表推导式:简洁高效的“一行命令”
列表推导式是 Python 里既显专业又实用的语法,它把循环和生成列表压缩成一行:
# 生成 0 到 9 的平方列表 squares = [x * x for x in range(10)] print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 筛选出偶数 evens = [x for x in range(10) if x % 2 == 0] print(evens) # [0, 2, 4, 6, 8]这个语法的核心结构是[表达式 for 变量 in 可迭代对象 if 条件]。我建议新手不要直接用太复杂的推导式,但必须能读懂别人写的推导式,因为在实际项目、面试题、开源代码里出现频率极高。等你熟练之后,它带来的效率提升非常明显——四行循环写成的代码一行搞定,而且可读性反而更好。
5. 日常实操中最常调用的标准化命令
5.1 文件读写:open、read、write
Python 处理文件几乎是每个项目都绕不开的。最基础的文件读取用open()配合with语句:
with open("data.txt", "r", encoding="utf-8") as f: content = f.read() print(content)而写入文件则是:
with open("output.txt", "w", encoding="utf-8") as f: f.write("Hello, World!\n") f.write("第二行\n")这里"r"表示只读模式,"w"表示写入模式,"a"表示追加模式。第二个参数这个模式标识要记牢:
| 模式 | 含义 | 文件不存在时 |
|---|---|---|
| r | 只读 | 报错 |
| w | 写入(覆盖原内容) | 创建新文件 |
| a | 追加(在末尾接续写) | 创建新文件 |
| rb / wb | 二进制读写 | 同上 |
编码问题我要专门强调。你写open("data.txt", "r")如果遇到中文乱码,十有八九是编码没指定对。最稳妥的做法是写文件时显式指定encoding="utf-8",读文件时也显式指定。Python 3 在 Windows 上默认编码是中文环境下的 GBK,在不同机器之间迁移代码时很容易出乱码,所以规范点总是好的。
5.2 路径与操作系统交互:os、sys 模块
想通过 Python 操作文件路径、获取当前目录、判断文件是否存在,就要用到os模块。它是 Python 标准库的一部分,不需要额外安装:
import os print(os.getcwd()) # 获取当前工作目录 print(os.listdir(".")) # 列出当前目录下的文件 print(os.path.exists("data.txt")) # 判断文件是否存在 os.mkdir("new_folder") # 创建文件夹sys模块则用于跟 Python 解释器交互,最常用的命令是获取命令行参数和退出程序:
import sys # 脚本运行时传入的参数列表 print(sys.argv) # 退出程序并返回退出码 0 sys.exit(0)sys.argv这个命令在写自动化脚本时极其常用。比如你写了一个批量处理脚本,希望运行时传参指定文件名,代码就可以这样写:
import sys if len(sys.argv) < 2: print("请传入文件名:python my_script.py data.txt") sys.exit(1) filename = sys.argv[1] print(f"处理文件:{filename}")5.3 字符串处理:split、join、replace、切片
字符串操作在 Python 里的出现频率是最高的,因为现实中大量数据都是文本。几个核心方法必须熟练掌握:
text = "apple,banana,cherry" fruits = text.split(",") # 按逗号切割成列表 print(fruits) # ['apple', 'banana', 'cherry'] new_text = "-".join(fruits) # 用连接符拼接列表 print(new_text) # apple-banana-cherry replaced = text.replace("apple", "orange") print(replaced) # orange,banana,cherry注意split是把字符串切成列表,join是反方向把列表拼成字符串。这两个命令就像互逆操作,成对记忆不容易混。
字符串切片也是高频操作,这里我再强调一下它是“左闭右开”:
url = "https://example.com" print(url[:8]) # https:// print(url[-3:]) # com print(url[8:]) # example.com5.4 引入第三方库:pip install 与 import 的配合
Python 最强的地方在于生态,第三方库要做什么都有。热词里很多人搜的 numpy(数值计算)、pandas(数据处理)、matplotlib(画图)、openpyxl(操作 Excel)都是第三方库,它们的安装和使用规律是一样的:
pip install pandas然后在代码里引入:
import pandas as pd df = pd.read_excel("data.xlsx") print(df.head())安装第三方库时有一个心态容易让人崩溃:明明pip install成功了,一运行代码还是提示ModuleNotFoundError: No module named 'pandas'。这种情况九成是环境不统一,你在终端里用的python和pip不是同一个。排查方法很简单:
python -m pip list如果你用python -m pip install pandas来安装,就能确保装到当前python对应的环境里。这也是我推荐所有新手默认使用python -m pip而不是直接用pip的原因,能省掉很多环境错乱的坑。
6. 避坑:新手最容易翻车的错误与实际排查思路
6.1 “python was not found”与微软商店弹窗
Windows 上出现过这个提示的人不计其数:在 cmd 或 PowerShell 里输入python,结果不是进入解释器,而是弹出一条消息带你去微软商店。原因大概率是下面两种之一:
一是安装时没勾选“Add python.exe to PATH”。解决办法是重新运行安装程序,选择 Modify,然后把 PATH 那个选项勾上,安装完成后重启终端。
二是装的路径确实不在 PATH 里。你可以手动把 Python 的安装目录加进去。具体步骤:设置 → 系统 → 关于 → 高级系统设置 → 环境变量,在 Path 变量中新增两个路径——一个是 Python 安装目录本身,另一个是它的Scripts子目录(这个目录下放着pip.exe)。加完记得保存并重开终端,让新的环境变量生效。
我见过有人加了 PATH 但还是不行,这时候用where python去查,发现指向了一个不存在的路径残留。可以把所有遗留的 Python 路径都清理掉,再重新添加正确位置。
提示:如果是在 Visual Studio Code 里遇到这个问题,除了系统 PATH 没问题之外,还要留意 VS Code 右下角或者命令面板里选择的 Python 解释器是否正确。
Ctrl+Shift+P打开命令面板,输入 “Python: Select Interpreter” 手动选择。
6.2 ModuleNotFoundError:库装在哪、怎么找
ModuleNotFoundError是新手第二常见的报错。你要弄清一件事:你运行代码的解释器,跟你装库的解释器,必须是一致的。检查方法:
import sys print(sys.executable) # 输出当前解释器的完整路径然后再用同一个 python 去安装库:
python -m pip install 库名装完再运行代码,基本就能解决。
还有一个常见场景是 Anaconda 用户。如果你终端里敲python进入的是 Anaconda 的 base 环境解释器,而你用pip install装到了系统 Python 上,那 import 一样失败。遇到这种情况,用conda list查一下当前环境的包列表,或者干脆统一用python -m pip操作。
6.3 变量类型混淆引发的错误
Python 虽然是动态类型语言,但你依然逃不过类型问题。最常见的错误是把字符串拿去运算:
num = "10" print(num + 1)这行代码会报TypeError: can only concatenate str (not "int") to str。原因是num是字符串类型,字符串和整数不能直接相加。解决办法是先转类型:
num = int(num) print(num + 1)还有一个比较容易踩的坑是从 Excel、CSV 里读出的“看起来是数字”的数据其实是字符串。所以做完数据导入后,建议立刻用print(type(某列数据))检查一下,再决定要不要统一转换。这个习惯能帮你省掉大量莫名其妙的结果错误。
6.4 中文编码与文件输出乱码
前面提到过编码问题,这里我展开讲。如果你写的中文字符串输出到控制台是乱码,或者写入文件后再打开是乱码,基本都能靠“统一用 UTF-8”来解决:
with open("output.txt", "w", encoding="utf-8") as f: f.write("你好,世界")如果你从某个系统导出的文件是文本格式但没有告知编码,读的时候可以尝试encoding="utf-8",如果报UnicodeDecodeError,再换encoding="gbk"。这里有个小技巧是使用errors="ignore"参数先读一遍看内容是否正确:
with open("data.txt", "r", encoding="utf-8", errors="ignore") as f: content = f.read()但要注意errors="ignore"是“掩耳盗铃”式的解决办法,它会丢掉无法解析的字符,不建议作为正式方案,只适合先看看文件大体内容。
6.5 编辑器环境配置的最后提醒
热词里很多人搜“vscode python环境配置”和“pycharm配置python环境”,我也说一句。VS Code 里你只需要装好官方 Python 扩展,然后在命令面板里选解释器;PyCharm 里则是在 Settings → Project → Python Interpreter 里选择或者新建解释器。它们的本质都是一件事:告诉编辑器,应该用哪个 Python 解释器来运行代码。理解了这一点,不管界面怎么变你都不会慌。
7. 把基础命令串起来的一个综合小案例
学了这么多零散命令,我来用一个完整的小例子把它们串一遍。假设你有一个文本文件scores.txt,里面存着几个学生的成绩,格式是每行一个“姓名,分数”,你想统计总分和平均分,并输出到另一个文件。
import os def read_scores(filename): """读取成绩文件,返回姓名列表和分数列表""" names = [] scores = [] with open(filename, "r", encoding="utf-8") as f: for line in f: line = line.strip() # 去掉行尾换行符 if not line: # 跳过空行 continue name, score = line.split(",") names.append(name) scores.append(int(score)) return names, scores def calculate(scores): total = sum(scores) avg = total / len(scores) return total, avg def write_report(filename, total, avg, names): with open(filename, "w", encoding="utf-8") as f: f.write(f"学生人数:{len(names)}\n") f.write(f"总分:{total}\n") f.write(f"平均分:{avg:.2f}\n") # 主流程 names, scores = read_scores("scores.txt") total, avg = calculate(scores) write_report("report.txt", total, avg, names) print(f"处理完成,共 {len(names)} 人,总分 {total},平均分 {avg:.2f}")这个例子用到了文件读写、循环、字符串切割、类型转换、函数定义、格式化输出、注释这些所有基础概念,而且这些命令组合起来能解决很多真实问题。本质上,你在实际工作中写的大多数脚本,都是这个模式的变体:读数据 → 处理数据 → 输出结果。
把它跑通一遍之后,我建议你自己动手改造一下,比如改成从 Excel 读数据,就要先pip install pandas再用pd.read_excel;想画图,就要装matplotlib。热词里有人问“python画图横坐标太密集”怎么办,这就是数据处理后的可视化细节问题,等你把基础打通,这类问题自然能找到解法。基础命令不用背,多用几次就熟了。别人问你能不能写 Python,与其看你会多少条命令,不如看你能不能把这些命令像搭积木一样组合起来解决真实需求。