在人工智能与数据科学蓬勃发展的今天,Python已成为最受欢迎的编程语言之一。无论你是想进入数据分析、机器学习领域,还是希望自动化日常工作,掌握Python都是必备技能。本文为你系统整理Python基础核心知识,从最简单的环境配置到面向对象编程,带你轻松迈入编程世界的大门。无需任何编程基础,跟着本指南一步步学习,你也能写出实用的Python程序!
一、环境配置与基础操作
-
打开终端
pwd # 打印当前目录
ls # 列出文件和目录
mkdir python # 新建目录
cd python # 进入指定目录
cd .. # 返回上级目录
cd ~ # 进入用户主目录 -
运行Python
python # 运行Python解释器
-
库的下载
pip install pickle
清华源
pip install pickle -i https://pypi.tuna.tsinghua.edu.cn/simple
二、基础语法与数据类型
-
变量赋值
x = 5
a = 100
b = "Hello World"基础运算
print(5 + 3 * 2) # 输出: 11
print((5 + 3) * 2) # 输出: 16
print(5 % 2) # 输出: 1 (取余)
print(5 / 2) # 输出: 2.5 -
数据类型转换
类型转换
a = str(5) # '5'
b = int('5') # 5
c = float(5) # 5.0
d = bool(1) # Trueprint(a.dtype)
三、数据结构
-
列表 (List)
创建列表
c = [1, 2, 3, 4, 5, 6, 7]
d = ["张三", "李四", "王五"]
e = [1, 2, 3, "4", "5", d]
list = [[4,5,6,7], [3,4,5,6]]列表操作
print(d[0]) # "张三" - 索引
print(d[-1]) # "张三" - 索引
print(c[0:2]) # [1, 2] - 切片
print(c[:3])
print(c[0::2]) # [1, 3, 5, 7] - 步长切片 list[start:stop:step]
print(list[1][0])
print(list[1][:2])列表方法
c.append(8) # 添加元素
c.insert(3, 38) # 插入元素
del c[3] # 删除元素
c.reverse() # 反转列表
c.sort() # 排序
print(c.count(2)) # 计数 -
元组 (Tuple)
创建元组 - 不可变序列
f = (1, 2, 3)
-
字典 (Dictionary)
创建字典
dic = {1: "123", "name": "zhangsan", "height": 180}
字典操作
print(dic["name"]) # "zhangsan"
dic["height"] = 175 # 修改值
del dic["name"] # 删除键值对
dic["age"] = 18 # 添加新键值对 -
字符串操作
字符串基础
my_string = "thisStringIsAwesome"
字符串方法
print(my_string.upper()) # 转大写
print(my_string.lower()) # 转小写
print(my_string.count('s')) # 计数
print(my_string.replace('e', 'i')) # 替换
print(my_string.strip()) # 去除空格字符串格式化
a = 100
b = "Hello World"
print("point = %s\n"%s"" % (a, b))转义字符
print("Tab\t分隔") # Tab 分隔
print("换行\n新行") # 换行
# 新行
四、流程控制
-
条件语句
基础条件判断
num = input("please input your class number:")
if num == 1 or num == 2:
print("class room 302")
elif num == 3:
print("class room 303")
elif num == 4:
print("class room 304")
else:
print("class room 305")逻辑运算符
== 等于, != 不等于, > 大于, >= 大于等于
< 小于, <= 小于等于, and 与, or 或
-
循环语句
-
range() 函数生成一个不可变的整数序列
range(stop) # 从0开始,到stop-1结束
range(start, stop) # 从start开始,到stop-1结束
range(start, stop, step) # 从start开始,到stop-1结束,步长为step
生成 0-4 的序列
range(5) # 0, 1, 2, 3, 4
生成 2-5 的序列
range(2, 6) # 2, 3, 4, 5
生成 0-10,步长为2的序列
range(0, 11, 2) # 0, 2, 4, 6, 8, 10
生成递减序列
range(10, 0, -1) # 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
多用于for函数
# 重复执行5次
for i in range(5):
print(f"第{i+1}次循环")
# 输出:
# 第1次循环
# 第2次循环
# 第3次循环
# 第4次循环
# 第5次循环
fruits = ['apple', 'banana', 'cherry', 'date']
for i in range(len(fruits)):
print(f"索引 {i}: {fruits[i]}")
# 输出:
# 索引 0: apple
# 索引 1: banana
# 索引 2: cherry
# 索引 3: date
# for循环
for i in range(0, 5):
print("Hello World %s" % i)
# 遍历列表
h = ["a", "b", "c", "d"]
for i in h:
print(i)
# while循环
x = 1
y = 2
while x < 5 and y < 5:
x = x + 1
y = y + 1
print(x, y)
if x == 4:
break # 终止循环
-
函数
定义函数
def hi_name(yourname):
print("Hello %s" % yourname)使用函数
hi_name("zhangsan") # 输出: Hello zhangsan
带返回值的函数
def add(a, b):
return a + bc = add(5, 6) # c = 11
内建函数
print(abs(-10)) # 输出: 10
-
文件操作
import pickle
文件写入
game_data = {
"position": "N2 E3",
"pocket": ["keys", "knife"],
"money": 160
}save_file = open("save.dat", "wb")
pickle.dump(game_data, save_file)
save_file.close()文件读取
load_file = open("save.dat", "rb")
load_game_data = pickle.load(load_file)
load_file.close() -
类与面向对象编程
基类
class Animals:
def breathe(self):
print("breathing")
def move(self):
print("moving")
def eat(self):
print("eating food")继承
class Mammals(Animals):
def breastfeed(self):
print("feeding young")class Cats(Mammals):
def init(self, spots):
self.spots = spotsdef catch_mouse(self): print("catch mouse") def dance(self): self.left_foot_forward() self.left_foot_backward() def left_foot_forward(self): print("left foot forward") def left_foot_backward(self): print("left foot backward")
使用类
kitty = Cats(10)
print(kitty.spots) # 10
kitty.dance() # 调用方法
kitty.breastfeed() # 调用父类方法
kitty.move() # 调用祖父类方法 -
模块使用
导入模块
import time
import numpy as np使用模块
print(time.asctime()) # 当前时间
选择性导入
from math import pi
创建NumPy数组
my_list = [1, 2, 3, 4]
my_array = np.array(my_list)
my_2darray = np.array([[1,2,3],[4,5,6]])
my_2darray[:,0]
print(my_array.shape) # 数组维度 -
Python列表 vs NumPy数组
-
数据类型处理
列表:可以混合不同类型
mixed_list = [1, "hello", 3.14, True] # ✅ 允许
NumPy数组:自动统一类型
mixed_array = np.array([1, "hello", 3.14])
print(mixed_array) # ['1' 'hello' '3.14'] ⚠️ 全部转为字符串
print(mixed_array.dtype) # <U32 (Unicode字符串) -
数学运算差异
列表:逐元素运算需要循环
my_list = [1, 2, 3, 4]
result_list = [x * 2 for x in my_list] # [2, 4, 6, 8]NumPy数组:向量化运算
my_array = np.array([1, 2, 3, 4])
result_array = my_array * 2 # array([2, 4, 6, 8]) ✅ 直接运算 -
多维操作能力
列表:二维操作繁琐
list_2d = [[1,2,3], [4,5,6]]
print(list_2d[0][1]) # 2 - 需要双重索引NumPy数组:真正的多维数组
array_2d = np.array([[1,2,3], [4,5,6]])
print(array_2d[0, 1]) # 2 - 单次索引即可
print(array_2d.shape) # (2, 3) - 直接获取维度 -
实际性能测试
import time
import numpy as np创建大数据
large_list = list(range(1000000))
large_array = np.arange(1000000)列表运算时间
start = time.time()
result_list = [x * 2 for x in large_list]
list_time = time.time() - startNumPy运算时间
start = time.time()
result_array = large_array * 2
numpy_time = time.time() - startprint(f"列表时间: {list_time:.4f}秒")
print(f"NumPy时间: {numpy_time:.4f}秒")
print(f"NumPy比列表快 {list_time/numpy_time:.1f} 倍") -
广播机制
列表无法直接与标量进行数学运算
my_list + 5 # ❌ 报错!
NumPy支持广播
my_array = np.array([1, 2, 3])
result = my_array + 5 # array([6, 7, 8]) ✅
result = my_array * 2 # array([2, 4, 6]) ✅ -
数学函数
my_array = np.array([1, 4, 9, 16])
print(np.sqrt(my_array)) # 平方根: [1. 2. 3. 4.]
print(np.sin(my_array)) # 正弦函数
print(np.sum(my_array)) # 求和: 30
print(np.mean(my_array)) # 平均值: 7.5 -
高级索引
my_array = np.array([10, 20, 30, 40, 50])
布尔索引
print(my_array[my_array > 25]) # [30 40 50]
花式索引
print(my_array[[0, 2, 4]]) # [10 30 50]
-
相互转换
列表 → NumPy数组
my_list = [1, 2, 3, 4]
my_array = np.array(my_list)NumPy数组 → 列表
new_list = my_array.tolist()
print(type(my_list)) # <class 'list'>
print(type(my_array)) # <class 'numpy.ndarray'>
print(type(new_list)) # <class 'list'>
- 编码规范
-
使用4个空格缩进
-
变量名由字母、数字、下划线组成,不能以数字开头
-
类名首字母大写
-
使用注释说明代码功能
总结:这份基础指南涵盖了Python编程的核心概念,从基础语法到面向对象编程,为后续学习TensorFlow和数据科学打下坚实基础。