第2章封面

数据分析师不写大型软件,但每天要写几百段小代码:试一个想法、看一眼数据、验证一个猜想。这就要求开发环境必须丝滑。第 2 章讲两件事:IPython/Jupyter 这个驾驶舱怎么开,以及 Python 语言的交通规则。

🚀 IPython:比普通 Python 强在哪?

终端敲 ipython,你看到的提示符从 >>> 变成 In [1]:——从此你的代码有了编号记忆。最日常的三个加速器:

① Tab 补全。敲 an_ 按 Tab,自动列出 an_applean_example;对象后按 Tab 能列出所有属性和方法。这个习惯能把「拼错函数名」这类低级错误从你的人生里抹掉。

② 内省(Introspection):问号是你的百科全书:

b = [1, 2, 3]
b?          # 显示对象的类型、内容、docstring
print?      # 显示函数签名 + 文档
b.append??  # 两个问号直接看源码(如果是 Python 写的)

%run 与魔法命令%run ipython_script_test.py 把脚本跑进当前命名空间,变量直接可用。所有魔法命令都以 % 开头,几个最常用的:

命令 作用
%timeit statement 重复执行测平均耗时(后面测 NumPy 性能全靠它)
%time statement 单次执行计时
%pwd / %ls 直接用 shell 命令
%magic / %lsmagic 查看全部魔法命令

④ Jupyter Notebook:浏览器里的「文学编程」环境,代码块(cell)+ Markdown 笔记 + 内嵌图表,jupyter notebook 一敲就起。中断卡死的内核用 Kernel 菜单或 Ctrl+C,推荐的工作流是:小 cell 写、随手 Shift+Enter 跑、结果立刻看

📏 语言语义:四条交通规则

缩进即语法。Python 用 4 空格缩进表达代码块,没有大括号。这不是风格偏好,是语法本身:

for x in array:
    if x < 0:
        print("负数")
    else:
        print("非负数")

一切皆对象。数字、字符串、函数、模块——每个值背后都是一个对象,带属性和方法。a.attr 读属性、a.method() 调方法,通用于万物。

变量是标签,不是盒子。这是 Python 最容易被误解的一点:赋值是给对象贴引用,不是把值拷进变量:

a = [1, 2, 3]
b = a          # b 和 a 指向同一个列表!
b.append(4)
a              # [1, 2, 3, 4] —— a 也变了

⚠️ 所以传参、赋值都要留个心眼:想独立一份就显式 list(a)a.copy()

动态引用 + 强类型。变量不用声明类型(动态),但 1 + "1" 会直接报错(强),不会偷偷帮你转。需要时显式转换:str(1)int("5")

🔢 标量类型:数字、字符串与 None

ival = 12345678      # int:任意精度,不怕溢出
fval = 4.5e-5        # float:双精度浮点
s = "数据分析"       # str:Unicode 字符串
s.upper()            # 方法返回新对象(字符串不可变)
None                 # 空值占位,函数默认返回值

字符串三连击必须会:format 格式化、切片、转义:

"{0:.2f} 元, {1} 件".format(3.14159, 5)   # '3.14 元, 5 件'
s = "abcdef"
s[1:4]               # 'bcd',左闭右开
s[::-1]              # 'fedcba',反向

时间类型书里一笔带过但很重要:datetime.datetime.now(),后面第 11 章时间序列会全面展开。

🔀 控制流:if / for / while 速览

# 三元表达式:一行 if
x = 5
"正" if x > 0 else "非正"

# for 遍历任意可迭代对象
for i, v in enumerate(["a", "b"]):   # 同时要下标和值
    print(i, v)

a, b = 0, 1       # 多重赋值
a, b = b, a + b   # 不用临时变量交换(Python 名场面)

range(n) 生成整数序列(惰性、省内存),配合 list(range(0, 20, 2))[0, 2, 4, ..., 18]break 跳出循环、continue 跳过本轮、pass 占位什么都不做——三板斧齐了。

📌 本章小结:IPython 的 Tab 补全和 ? 内省每天用;%timeit 是性能测量的标尺;变量是引用不是盒子(b = a 之后改 b 会影响 a);缩进即语法、一切皆对象;字符串不可变,方法返回新对象。