Python基础知识点全解析:从入门到精通

Python基础知识点合集——全网最细、最全!

引言

Python 作为一门简洁、高效、跨平台的高级编程语言,凭借其“代码即文档”的特性和丰富的第三方库,成为了数据分析、人工智能、Web开发、自动化运维等领域的首选语言。本文将从零基础出发,系统性梳理 Python 核心基础知识点,覆盖环境搭建、语法规则、数据类型、流程控制、函数、面向对象等全维度内容,帮助初学者快速构建知识体系。


一、Python 环境搭建与入门

1.1 安装 Python

  • 官网下载:访问 Python 官网,根据系统(Windows/macOS/Linux)下载对应版本(建议选择 3.7+ 以上稳定版)。
  • 验证安装:安装完成后,打开终端(Windows用CMD/PowerShell,macOS/Linux用Terminal),输入 python --versionpython3 --version,若输出版本号(如 Python 3.11.3)则安装成功。

1.2 开发工具选择

  • 新手友好型
    • IDLE:Python 自带的轻量级集成开发环境(适合写小脚本)。
    • VS Code:微软开源编辑器,安装 Python 插件后支持代码高亮、调试、自动补全(推荐)。
    • PyCharm:JetBrains 出品的专业 IDE,社区版免费(适合项目开发)。

1.3 第一个 Python 程序

在任意编辑器中输入以下代码,保存为 hello.py,通过终端运行 python hello.py

# 这是一行注释(用 # 开头)
print("Hello, Python!")  # 输出语句

输出结果:

Hello, Python!

二、变量与数据类型

2.1 变量的本质与命名规则

  • 变量:内存中存储数据的“容器”,通过变量名访问数据。
  • 命名规则
    • 只能包含字母、数字、下划线(_),且不能以数字开头(如 age_1 合法,1_age 不合法)。
    • 区分大小写(Namename 是不同变量)。
    • 不能使用 Python 关键字(如 iffordef 等,可用 help('keywords') 查看所有关键字)。
    • 建议遵循小写+下划线命名法(如 user_name),类名用大驼峰(如 StudentInfo)。

2.2 基础数据类型

Python 内置 6 种基础数据类型,可通过 type() 函数查看变量类型。

类型描述示例
整数(int)无小数部分的数字,支持任意大整数(无溢出问题)5, -3, 0, 1000
浮点数(float)带小数部分的数字,本质是双精度浮点数(可能存在精度误差)3.14, -2.5, 0.0
布尔值(bool)逻辑值,仅 True(真)或 False(假)True, False
字符串(str)用单引号(' ')、双引号(" ")或三引号(''' '''/""" """)包裹的文本'hello', "Python", '''多行文本'''
空值(None)表示“无值”,用于初始化或占位x = None
复数(complex)由实部和虚部组成的数(虚部用 jJ 表示)3+4j, 5-2j

2.3 字符串进阶操作

字符串是 Python 中最常用的数据类型之一,支持丰富的内置方法:

2.3.1 字符串拼接与格式化
  • 拼接:用 + 连接(仅字符串类型可拼接),或用 f-string(Python 3.6+ 推荐)。

    name = "张三"
    age = 20
    # 方式1:+ 拼接(需转换非字符串类型)
    info = "姓名:" + name + ",年龄:" + str(age)
    # 方式2:f-string(自动转换类型)
    info = f"姓名:{name},年龄:{age}"
    
  • 格式化:用 % 占位符(旧语法)或 str.format()(通用语法)。

    # % 格式化
    print("圆周率:%.2f" % 3.14159)  # 输出:圆周率:3.14
    # str.format()
    print("姓名:{},分数:{}".format("李四", 95))  # 输出:姓名:李四,分数:95
    
2.3.2 字符串常用方法
方法功能描述示例
len(s)返回字符串长度len("abc") → 3
s.upper()转为大写"hello".upper() → “HELLO”
s.lower()转为小写"WORLD".lower() → “world”
s.strip()去除首尾空格(lstrip() 去左空格,rstrip() 去右空格)" test ".strip() → “test”
s.split(sep)按分隔符 sep 分割字符串,返回列表"a,b,c".split(",")["a","b","c"]
s.replace(old, new)替换字符串中的 oldnew"apple".replace("a", "A") → “Apple”
s.startswith(prefix)判断是否以 prefix 开头"hello".startswith("he") → True
s.endswith(suffix)判断是否以 suffix 结尾"hello".endswith("lo") → True

三、运算符与表达式

3.1 算术运算符

用于数值计算,支持整数、浮点数、复数。

运算符描述示例结果
+加法5 + 38
-减法7 - 25
*乘法4 * 624
/除法(浮点)10 / 33.333…
//整除(取整)10 // 33
%取余10 % 31
**幂运算2 ** 38

3.2 比较运算符

返回布尔值(True/False),用于条件判断。

运算符描述示例结果
==等于5 == 3False
!=不等于5 != 3True
>大于5 > 3True
<小于5 < 3False
>=大于等于5 >= 3True
<=小于等于5 <= 3False

3.3 逻辑运算符

用于组合多个条件,返回布尔值。

运算符描述示例结果
and逻辑与(全真为真)(5 > 3) and (2 < 4)True
or逻辑或(有真为真)(5 < 3) or (2 > 4)False
not逻辑非(取反)not (5 == 3)True

3.4 成员运算符与身份运算符

  • 成员运算符(判断元素是否在序列中):

    • in:存在返回 True(如 "a" in "abc"True)。
    • not in:不存在返回 True(如 "d" not in "abc"True)。
  • 身份运算符(判断是否为同一对象):

    • is:内存地址相同返回 True(如 a is b)。
    • is not:内存地址不同返回 True(如 a is not b)。

四、流程控制:条件与循环

4.1 条件语句(if-elif-else)

根据条件判断执行不同代码块,支持嵌套。

score = 85
if score >= 90:
    print("优秀")
elif score >= 80:  # elif 是 else if 的缩写
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

4.2 循环语句

4.2.1 for 循环

遍历可迭代对象(如列表、字符串、字典等),语法:

# 遍历列表
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
    print(fruit)

# 遍历字符串
for char in "Python":
    print(char)  # 输出 P y t h o n

# 遍历字典(默认遍历键)
person = {"name": "张三", "age": 20}
for key in person:
    print(key, person[key])  # 输出 name 张三; age 20
4.2.2 while 循环

当条件为真时重复执行代码块,语法:

count = 0
while count < 5:
    print(f"当前计数:{count}")
    count += 1  # 等价于 count = count + 1

4.3 循环控制语句

  • break:终止当前循环,跳出循环体。
  • continue:跳过当前循环剩余代码,进入下一次循环。
  • else:循环正常结束后执行(若因 break 终止则不执行)。
# 示例:寻找第一个偶数
numbers = [1, 3, 5, 7, 8, 9]
for num in numbers:
    if num % 2 == 0:
        print(f"找到偶数:{num}")
        break
else:
    print("未找到偶数")  # 若循环未被 break 则执行

五、函数:代码复用的核心

5.1 函数定义与调用

函数是封装好的、可重复使用的代码块,语法:

def 函数名(参数1, 参数2=默认值):
    """函数文档字符串(说明功能、参数、返回值)"""
    代码块
    return 返回值  # 可选,无 return 则返回 None

5.2 参数类型

Python 支持多种参数类型,灵活适应不同场景:

5.2.1 位置参数(必传)

调用时必须按顺序传递的参数:

def add(a, b):
    return a + b
add(3, 5)  # 输出 8
5.2.2 默认参数(可选)

参数有默认值,调用时可省略:

def greet(name, msg="早上好"):
    print(f"{name}{msg}!")
greet("张三")  # 输出 张三,早上好!
greet("李四", "晚上好")  # 输出 李四,晚上好!
5.2.3 可变参数(*args)

接收任意数量的位置参数,存储为元组:

def sum_numbers(*args):
    total = 0
    for num in args:
        total += num
    return total
sum_numbers(1, 2, 3, 4)  # 输出 10
5.2.4 关键字参数(**kwargs)

接收任意数量的键值对参数,存储为字典:

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
print_info(name="张三", age=20, city="北京")
# 输出:
# name: 张三
# age: 20
# city: 北京

5.3 lambda 表达式(匿名函数)

用于快速定义简单函数,语法:lambda 参数: 表达式

# 普通函数
def square(x):
    return x ** 2

# lambda 等价写法
square = lambda x: x ** 2
print(square(5))  # 输出 25

六、数据结构:列表、元组、字典、集合

6.1 列表(list):有序可变容器

列表是 Python 中最常用的数据结构,用 [] 定义,支持任意类型元素。

6.1.1 列表基本操作
操作示例结果
索引访问nums = [1, 2, 3]; nums[0]1
切片([start:end:step]nums[1:3][2, 3]
修改元素nums[0] = 10nums 变为 [10, 2, 3]
添加元素(末尾)nums.append(4)nums 变为 [10, 2, 3, 4]
插入元素(指定位置)nums.insert(1, 9)nums 变为 [10, 9, 2, 3, 4]
删除元素(按值)nums.remove(9)nums 变为 [10, 2, 3, 4]
删除元素(按索引)nums.pop(0)nums 变为 [2, 3, 4]
排序nums.sort()nums 变为 [2, 3, 4]
反转nums.reverse()nums 变为 [4, 3, 2]
6.1.2 列表推导式:高效生成列表

用简洁语法生成列表,语法:[表达式 for 变量 in 可迭代对象 if 条件]

# 生成 0-9 的平方列表
squares = [x**2 for x in range(10)]  # [0, 1, 4, 9, ..., 81]

# 筛选偶数的平方
even_squares = [x**2 for x in range(10) if x % 2 == 0]  # [0, 4, 16, 36, 64]

6.2 元组(tuple):有序不可变容器

元组用 () 定义(可省略括号),元素不可修改(保护数据安全)。

t = (1, "a", True)
# t[0] = 2  # 报错:TypeError: 'tuple' object does not support item assignment

6.3 字典(dict):键值对映射

字典用 {} 定义,键(key)必须唯一且不可变(如字符串、数字、元组),值(value)可为任意类型。

6.3.1 字典基本操作
操作示例结果
访问值person = {"name": "张三"}; person["name"]"张三"
添加/修改键值对person["age"] = 20person 变为 {"name": "张三", "age": 20}
删除键值对del person["age"]person 变为 {"name": "张三"}
获取所有键person.keys()dict_keys(['name'])
获取所有值person.values()dict_values(['张三'])
获取所有键值对person.items()dict_items([('name', '张三')])
6.3.2 字典推导式

类似列表推导式,语法:{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}

# 生成字母与其ASCII码的字典
ascii_dict = {char: ord(char) for char in "abc"}  # {'a':97, 'b':98, 'c':99}

6.4 集合(set):无序唯一元素容器

集合用 {} 定义(空集合需用 set()),元素唯一(自动去重),支持交集、并集等操作。

s1 = {1, 2, 3}
s2 = {2, 3, 4}

# 交集(同时存在的元素)
print(s1 & s2)  # {2, 3}

# 并集(所有元素)
print(s1 | s2)  # {1, 2, 3, 4}

# 差集(s1有但s2没有的元素)
print(s1 - s2)  # {1}

七、异常处理:让程序更健壮

7.1 异常捕获(try-except)

try-except 捕获并处理可能出现的错误,避免程序崩溃。

try:
    num = int(input("请输入一个整数:"))
    print(f"输入的数是:{num}")
except ValueError:  # 捕获类型错误(输入非整数时触发)
    print("输入无效,请输入整数!")

7.2 多异常捕获与 finally 子句

  • except 可指定多个异常类型(用元组包裹)。
  • finally 子句:无论是否发生异常,都会执行(常用于资源释放)。
try:
    f = open("test.txt", "r")
    content = f.read()
    print(content)
except (FileNotFoundError, PermissionError) as e:  # 捕获文件不存在或无权限异常
    print(f"错误:{e}")
finally:
    if 'f' in locals():  # 检查文件是否已打开
        f.close()  # 确保关闭文件

7.3 自定义异常

通过继承 Exception 类创建自定义异常,提升代码可读性。

class AgeError(Exception):
    def __init__(self, message):
        super().__init__(message)

def check_age(age):
    if age < 0:
        raise AgeError("年龄不能为负数!")  # 抛出异常
    elif age > 150:
        raise AgeError("年龄不合理!")

try:
    check_age(-5)
except AgeError as e:
    print(e)  # 输出:年龄不能为负数!

八、模块与包:代码组织的艺术

8.1 模块(Module)

模块是一个 .py 文件,包含函数、类、变量等,可通过 import 导入复用。

8.1.1 导入模块的方式
# 方式1:导入整个模块(需用 模块名.函数 调用)
import math
print(math.sqrt(16))  # 输出 4.0

# 方式2:导入指定函数/变量(直接调用)
from math import sqrt
print(sqrt(16))  # 输出 4.0

# 方式3:重命名模块(简化调用)
import numpy as np
arr = np.array([1, 2, 3])  # 用 np 代替 numpy

8.2 包(Package)

包是包含多个模块的文件夹,需在文件夹中创建 __init__.py 文件(可空,标识为包)。

my_package/
├── __init__.py
├── module1.py
└── module2.py

8.3 模块搜索路径

Python 导入模块时,会按以下顺序搜索路径:

  1. 当前目录。
  2. 环境变量 PYTHONPATH 中的路径。
  3. Python 安装的默认库路径(如 site-packages)。

九、文件操作:数据的持久化

9.1 文件打开模式

open(file, mode) 打开文件,mode 决定读写方式:

模式描述
r只读(默认),文件不存在报错
w只写(覆盖原有内容),文件不存在则创建
a追加写(不覆盖原有内容),文件不存在则创建
r+读写(从开头开始)
w+读写(覆盖原有内容)
a+读写(追加到末尾)
b二进制模式(如 rb 读二进制,wb 写二进制)

9.2 文件读写示例

# 写入文件(覆盖模式)
with open("demo.txt", "w", encoding="utf-8") as f:  # with 自动关闭文件
    f.write("Hello\n")  # 写入字符串
    f.write("Python\n")

# 读取文件(逐行读取)
with open("demo.txt", "r", encoding="utf-8") as f:
    for line in f:  # 逐行读取(内存友好)
        print(line.strip())  # 输出 Hello; Python

十、面向对象编程(OOP)

10.1 类与对象

  • 类(Class):定义对象的属性和方法(模板)。
  • 对象(Object):类的实例(具体实例化的个体)。
class Person:
    # 类属性(所有实例共享)
    species = "人类"

    # 构造方法(初始化实例属性)
    def __init__(self, name, age):
        self.name = name  # 实例属性
        self.age = age

    # 实例方法
    def introduce(self):
        print(f"我是{self.name}{self.age}岁,属于{self.species}。")

# 创建对象(实例化)
p1 = Person("张三", 20)
p1.introduce()  # 输出:我是张三,20岁,属于人类。

10.2 继承与多态

  • 继承:子类继承父类的属性和方法(避免重复代码)。
  • 多态:子类重写父类方法,实现不同行为。
# 父类(基类)
class Animal:
    def speak(self):
        raise NotImplementedError("子类必须实现speak方法")

# 子类(派生类)
class Dog(Animal):
    def speak(self):
        print("汪汪!")

class Cat(Animal):
    def speak(self):
        print("喵喵!")

# 多态示例
def animal_speak(animal):
    animal.speak()

dog = Dog()
cat = Cat()
animal_speak(dog)  # 输出:汪汪!
animal_speak(cat)  # 输出:喵喵!

10.3 封装与访问控制

  • 私有属性/方法:用双下划线 __ 开头,仅类内部可访问(外部访问会报错)。
  • 保护属性/方法:用单下划线 _ 开头(约定俗成,提示外部不要直接访问)。
class Account:
    def __init__(self, balance):
        self.__balance = balance  # 私有属性(余额)

    def get_balance(self):
        return self.__balance  # 公有方法访问私有属性

acc = Account(1000)
# print(acc.__balance)  # 报错:AttributeError(外部无法直接访问)
print(acc.get_balance())  # 输出:1000

十一、总结与学习建议

本文覆盖了 Python 从环境搭建到面向对象的全基础知识点,但“纸上得来终觉浅”,建议:

  1. 多敲代码:每学一个知识点,立刻动手编写示例并调试。
  2. 参与项目:从简单的小项目(如学生信息管理系统)开始,实践中巩固知识。
  3. 阅读文档:熟练后多查阅 Python 官方文档,学习标准库和第三方库的使用。

Python 的魅力在于其简洁与强大,愿你在编程之路上越走越远!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值