Python 是当下最受欢迎的编程语言之一。无论是数据分析、人工智能、Web 开发还是自动化运维,Python 都能轻松胜任。它语法简洁、上手快,被很多人称为"最接近自然语言的编程语言"。
不过,万事开头难。很多刚接触 Python 的朋友常在环境安装这一步就卡住了——该装哪个版本?Conda 又是什么?pip 换源怎么搞?
别急,本文正是为这样的时刻准备的。从环境搭建到写出第一行代码,再到掌握核心数据类型,读完这篇,你就能迈出 Python 学习的第一步。
刚开始学 Python,最简单的做法是去 python.org[1] 下载官方安装包。但随着学习深入,你可能会同时接触多个项目——一个项目用 Python 3.9,另一个用 3.11,依赖包也各不相同。这时候,虚拟环境管理就变得至关重要。
推荐使用 Miniconda——它是 Anaconda 的精简版,只包含 conda 包管理器和 Python,体积小、够用且灵活。
如果你还不熟悉 Conda 和 VSCode 的搭配使用,可以先阅读本专栏的另一篇:📄《基于VSCode的Python环境开发》,里面详细介绍了完整的开发环境搭建流程。
风吹屁屁凉,公众号:羽您码上聊基于VSCode的Python环境开发
# 创建目录并下载安装脚本mkdir -p ~/miniconda3wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh# 静默安装bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3# 清理安装脚本rm ~/miniconda3/miniconda.sh# 初始化 conda(自动配置 shell)~/miniconda3/bin/conda initsource ~/.bashrc前往 清华大学镜像站[2] 下载 Windows 版安装包(推荐国内镜像,速度快),双击 .exe 文件按指引安装即可,全程勾选默认选项。
提示:清华大学镜像站是国内最稳定的开源软件镜像之一,不仅是 Miniconda,后续 pip 安装各类包也可以用它加速——下文会详细说明。
# 创建名为 myproject、Python 版本为 3.10 的虚拟环境conda create -n myproject python=3.10 -y# 激活环境conda activate myproject# 查看当前所有环境conda env list# 退出当前环境conda deactivate激活后,终端提示符前会出现 (myproject),表示当前已进入该虚拟环境。养成每个项目独立建环境的习惯,能避免日后无数依赖冲突的坑。
默认情况下,pip 从国外 PyPI 服务器下载包,速度可能只有几十 KB/s。换成国内镜像源后,速度能稳定跑到宽带上限。
推荐使用 清华大学 PyPI 镜像:
# 先升级 pip 到最新版本python -m pip install --upgrade pip# 设为默认源(一劳永逸)pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple如果只想临时使用(不改变全局设置):
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 包名更多镜像站信息参见:清华大学镜像站帮助页[3]。
环境装好了,是时候跟 Python 打个招呼了。
在终端中直接输入 python(或 python3),你就进入了 Python 的交互式解释器(REPL)。在这里可以逐行输入代码并立即看到结果,非常适合做快速实验:
>>> print("Hello, Python!")Hello, Python!>>> 1 + 2 * 37>>> "Hello" + " " + "World"'Hello World'>>> exit() # 退出解释器前三行已经让你感受到了 Python 的简洁:不用写 main 函数,不用编译,一行代码就是一行效果。
交互式解释器适合随手实验,但真正的程序还是要写成文件。创建一个 hello.py:
#!/usr/bin/env python3# -*- coding: utf-8 -*-def greet(name): """向指定的人打招呼""" return f"你好,{name}!欢迎来到 Python 的世界。"if __name__ == "__main__": user = input("请输入你的名字:") print(greet(user))然后在终端运行:
python hello.py你会看到提示 "请输入你的名字:",输入后就能得到个性化的问候。短短几行代码,已经包含了函数定义、字符串格式化、用户输入和条件判断——这些我们后面都会详细展开。
在深入数据类型之前,先记住几条 Python 的基础规则:
| 缩进即语法 | if True: | |
| 大小写敏感 | nameName 是两个完全不同的变量 | |
注释用# | # | # 这是注释 |
| 动态类型 | x = 42int x |
数据类型是任何编程语言的基石。Python 的内置数据类型设计得既强大又直观,我们来逐一认识。
Python 支持三种数值类型:
# 整数(int)—— 没有大小限制,想多大就多大age = 25population = 14_0000_0000 # 可以用下划线分隔,更易读# 浮点数(float)—— 即小数pi = 3.14159price = 19.99# 复数(complex)—— 科学计算中偶尔用到c = 3 + 4j# 基本运算print(10 + 3) # 加法 → 13print(10 - 3) # 减法 → 7print(10 * 3) # 乘法 → 30print(10 / 3) # 除法 → 3.3333...print(10 // 3) # 整除 → 3print(10 % 3) # 取余 → 1print(10 ** 3) # 幂运算 → 1000字符串是 Python 中使用频率最高的类型之一,用单引号或双引号包裹均可:
# 创建字符串s1 = 'Hello's2 = "世界"# 拼接greeting = s1 + ", " + s2 + "!" # "Hello, 世界!"# f-string(Python 3.6+,最推荐的格式化方式)name = "小明"score = 95print(f"{name}的成绩是{score}分") # 小明 的成绩是 95 分# 常用操作s = " Python入门 "print(s.strip()) # 去首尾空格 → "Python入门"print(s.upper()) # 全大写 → " PYTHON入门 "print(s.replace("入门", "精通")) # 替换 → " Python精通 "print(len(s)) # 长度 → 12# 切片(获取子串)text = "Hello Python"print(text[0:5]) # "Hello"print(text[6:]) # "Python"print(text[::-1]) # 反转 → "nohtyP olleH"f-string 是 Python 最优雅的字符串格式化方式,比
%和.format()更直观,建议初学者从一开始就只用这一种。
列表是 Python 中最重要的容器类型,有序、可修改、元素可重复:
# 创建列表fruits = ["苹果", "香蕉", "橘子"]numbers = [1, 2, 3, 4, 5]mixed = [1, "hello", 3.14, True] # 列表可以混搭不同类型# 索引和切片(从 0 开始计数)print(fruits[0]) # "苹果"print(fruits[-1]) # "橘子"(负数索引从末尾开始)print(fruits[0:2]) # ["苹果", "香蕉"]# 常用操作fruits.append("葡萄") # 末尾追加 → ["苹果", "香蕉", "橘子", "葡萄"]fruits.insert(1, "草莓") # 指定位置插入fruits.remove("香蕉") # 按值删除popped = fruits.pop() # 弹出末尾元素fruits.sort() # 排序# 列表推导式(Python 的一大特色)squares = [x ** 2 for x in range(1, 6)] # [1, 4, 9, 16, 25]evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]列表推导式是 Python 独有的简洁语法,能将多行循环浓缩为一行,既好读又好写。
元组和列表很像,但创建后不可修改(不可变类型):
# 创建元组(用圆括号)point = (3, 4)rgb = (255, 128, 0)# 单元素元组要注意加逗号single = (42,) # 正确——这是一个元组not_tuple = (42) # 错误——这只是整数 42# 解包(unpacking)x, y = point # x = 3, y = 4r, g, b = rgb # 分别赋值# 什么时候用元组?# → 当你希望数据不被意外修改时,比如坐标、配置常量、函数多返回值def min_max(numbers): return min(numbers), max(numbers) # 返回的其实就是一个元组字典是键值对(key-value)的集合,查找速度极快(底层是哈希表):
# 创建字典student = { "name": "小明", "age": 20, "score": 95}# 访问print(student["name"]) # "小明"print(student.get("grade", "未知")) # 安全访问,不存在返回默认值# 增删改student["grade"] = "A" # 新增键值对student["age"] = 21 # 修改del student["score"] # 删除# 遍历for key, value in student.items(): print(f"{key}: {value}")# 字典推导式square_dict = {x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, 3:9, 4:16}集合是无序、不重复的元素集合,常用于去重和集合运算:
# 创建集合tags = {"Python", "编程", "入门"}nums = {1, 2, 3, 3, 2, 1} # 自动去重 → {1, 2, 3}# 集合运算a = {1, 2, 3, 4}b = {3, 4, 5, 6}print(a | b) # 并集 → {1, 2, 3, 4, 5, 6}print(a & b) # 交集 → {3, 4}print(a - b) # 差集 → {1, 2}print(a ^ b) # 对称差集 → {1, 2, 5, 6}# 去重妙用duplicates = [1, 2, 2, 3, 3, 3, 4]unique = list(set(duplicates)) # [1, 2, 3, 4]# 布尔值只有两个:True 和 False(首字母大写)is_active = Trueis_empty = False# 比较运算print(10 > 5) # Trueprint(10 == 5) # Falseprint("abc" == "abc") # True# 逻辑运算print(True and False) # Falseprint(True or False) # Trueprint(not True) # False# None —— 表示"什么都没有"result = Noneif result is None: print("还没有结果")不同类型之间可以灵活转换:
int("42") # 字符串 → 整数:42float("3.14") # 字符串 → 浮点数:3.14str(100) # 数字 → 字符串:"100"list("abc") # 字符串 → 列表:['a', 'b', 'c']tuple([1, 2, 3]) # 列表 → 元组:(1, 2, 3)set([1, 1, 2]) # 列表 → 集合:{1, 2}bool(0) # 0 → Falsebool("hello") # 非空字符串 → True423.14, 3+4j | |||
"hello" | |||
[1, 2, 3] | |||
(1, 2, 3) | |||
{"a": 1, "b": 2} | |||
{1, 2, 3} | |||
TrueFalse |
光看不练假把式。试试下面几道小题,检验一下学习成果:
input() 让用户输入一个数字,判断它是奇数还是偶数并输出结果。"hello world python" 按空格分割成列表,再把每个单词首字母大写后拼回字符串。参考答案会在下一篇中给出,也欢迎把你的答案发到公众号后台,我会逐一查看。
本文从零开始,带你完成了三件事:
下一篇,我们将进入流程控制(条件判断与循环)和函数的世界,让你的代码真正"活"起来。保持关注,我们不见不散!
本文首发于微信公众号「羽您码上聊」,欢迎关注获取更多技术内容。
[1] python.org: https://www.python.org[2] 清华大学镜像站: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/[3] 清华大学镜像站帮助页: https://mirrors.tuna.tsinghua.edu.cn/help/pypi/