Python基础知识总结

目录

一、Python3 概述:为什么学 Python?

二、第一步:查看 Python 版本

三、第一个 Python 程序:Hello World!

1. 基础用法

四、输入与输出:和用户交互

1. input()获取用户输入

2. 什么是变量?

五、Python 数据类型:变量的 “身份标识”

1. 内置数据类型总览

2. 查看数据类型:type()函数

六、Python 运算符:实现数据计算与逻辑判断

1. 算术运算符(数学计算)

2. 比较运算符(判断大小 / 相等)

3. 逻辑运算符(组合条件)

4. 赋值运算符(给变量赋值)

5. 运算符优先级(避免逻辑错误)

七、Python 集合:存储多个数据的 “容器”

1. 列表(List):可变有序,允许重复

基础操作代码:

2. 元组(Tuple):不可变有序,允许重复

​编辑基础操作代码:

3. 集合(Set):可变无序,无重复

​编辑基础操作代码:

4. 字典(Dictionary):可变无序,键值对映射

基础操作代码:

八、条件判断:让程序 “做选择”

代码示例:根据年龄判断录取结果

关键注意点:

九、循环:让程序 “重复做”

1. while 循环:条件为真就执行

2. for 循环:遍历序列(更常用)

3. break 与 continue(控制循环)

十、函数:减少重复代码,提高复用性

1. 定义与调用函数

2. 函数参数类型

3. 递归函数:自己调用自己

十一、Lambda 函数:简洁的匿名函数

语法与示例

十二、类与对象:面向对象编程基础

1. 创建类与对象

2. 继承:子类复用父类功能

十三、补充:损失值、梯度下降与模型选择

1. 损失值与梯度下降

2. 为什么决策树 / 随机森林不用梯度下降?

总结

一、Python3 概述:为什么学 Python?

Python 由 “龟叔” Guido van Rossum 在 1989 年圣诞节期间编写,初衷是打发无聊时光,却意外成为如今最流行的编程语言之一。它与 C 语言(贴近硬件、追求运行速度)不同,是高层次的解释型、交互式、面向对象脚本语言,核心特点如下:

  • 解释型:无需编译,直接运行代码(类似 PHP、Perl);
  • 交互式:可在>>>提示符后直接执行代码,即时看到结果;
  • 面向对象:支持代码封装在对象中,符合现代编程思想;
  • 高可读性:用英文关键字替代复杂标点,语法结构清晰,对初学者友好。

二、第一步:查看 Python 版本

在开始编写代码前,先确认本地 Python 版本。Windows 系统打开 cmd(Win+R输入cmd),执行以下命令:

# 方法1:简洁版本

python -V

# 方法2:完整版本

python --version

确保是 Python3.x 版本(Python2 已停止维护)。

三、第一个 Python 程序:Hello World!

学习任何语言,第一个程序几乎都是 “打印 Hello World”。Python 中用print()内置函数实现,它是最常用的内置函数之一,可直接打印对象。

1. 基础用法

# 1. 打印单个字符串

print("Hello World!") # 输出:Hello World!

# 2. 打印多个字符串(逗号分隔,自动加空格)

print("The quick brown fox", "jumps over", "the lazy dog") # 输出:The quick brown fox jumps over the lazy dog

# 3. 打印整数或计算结果

print(300) # 输出:300

print(100 + 200) # 输出:300

print("100 + 200 =", 100 + 200) # 输出:100 + 200 = 300

四、输入与输出:和用户交互

除了打印内容,Python 还支持通过input()获取用户输入,再用变量存储。

1. input()获取用户输入

# 提示用户输入名字,并存入name变量

name = input("请输入你的名字:")

# 打印欢迎信息

print("Hello,", name)

运行后,终端会显示 “请输入你的名字:”,输入后按回车,会输出Hello, 你的名字。

2. 什么是变量?

变量就像 “容器”,可存储不同类型的数据(字符串、数字等)。比如数学中正方形的边长a:

  • 若a=2,面积是a*a=4;
  • 若a=3.5,面积是a*a=12.25。

在 Python 中,name就是存储字符串的变量,age可存储整数,非常灵活。

五、Python 数据类型:变量的 “身份标识”

变量能存储不同类型的数据,Python 默认有多种内置数据类型,不同类型支持不同操作。

1. 内置数据类型总览

数据类型分类

具体类型

说明

文本类型

str

字符串(如 "Hello"、"Python")

数值类型

int

整数(如 42、-10、0)

float

浮点数(如 3.14、-0.001、2.0)

complex

复数(如 1+2j,实部 + 虚部,多用于科学计算)

序列类型

list

可变有序序列(如 [1, 2, "apple"],支持增删改)

tuple

不可变有序序列(如 (1, 2, "banana"),创建后无法修改)

range

不可变整数序列(如 range(5) 等价于 [0,1,2,3,4])

映射类型

dict

键值对映射(如 {"name": "Alice", "age": 25},通过键找值)

集合类型

set

可变无序不重复集合(如 {1, 2, 3},自动去重)

frozenset

不可变无序不重复集合(如 frozenset([1,2]),创建后无法修改)

布尔类型

bool

逻辑值(仅 True 或 False,用于条件判断)

2. 查看数据类型:type()函数

用type()可快速判断变量的数据类型:

# 定义不同类型的变量

x1 = "Python" # str

x2 = 2024 # int

x3 = 3.14 # float

x4 = [1,2,3] # list

# 查看类型

print(type(x1)) # 输出:<class 'str'>

print(type(x3)) # 输出:<class 'float'>

print(type(x4)) # 输出:<class 'list'>

六、Python 运算符:实现数据计算与逻辑判断

运算符是 Python 处理数据的 “工具”,按功能可分为 7 大类,我们结合代码理解核心用法。

1. 算术运算符(数学计算)

运算符

名称

示例

结果

说明

+

加法

5+3

8

数字相加 / 字符串拼接

-

减法

10-2

8

数字相减

*

乘法

4*3

12

数字相乘 / 序列重复(如"a"*3)

/

除法

15/4

3.75

结果必为浮点数

//

整除

15//4

3

向下取整(忽略小数)

%

取模

15%4

3

返回余数(常用於判断奇偶)

**

幂运算

2**3

8

计算指数(2 的 3 次方)

代码示例

print(15 // 4) # 输出:3(整除)

print(15 % 4) # 输出:3(取模)

print("Py" * 3) # 输出:PyPyPy(字符串重复)

2. 比较运算符(判断大小 / 相等)

运算符

名称

示例

结果

==

等于

5==3

False

!=

不等于

5!=3

True

>

大于

5>3

True

<

小于

5<3

False

>=

大于等于

5>=5

True

<=

小于等于

5<=3

False

代码示例

age = 18

print(age >= 18) # 输出:True(用于条件判断)

3. 逻辑运算符(组合条件)

运算符

名称

示例

结果

说明

and

逻辑与

True and False

False

全为真才是真

or

逻辑或

True or False

True

一个为真就是真

not

逻辑非

not True

False

取反

代码示例

score = 85

# 判断分数是否在60~100之间

print(score >= 60 and score <= 100) # 输出:True

4. 赋值运算符(给变量赋值)

最常用的是=,还有简化写法(如+=、*=):

x = 5 # 基础赋值:x=5

x += 3 # 等价于x = x+3 → x=8

x *= 2 # 等价于x = x*2 → x=16

print(x) # 输出:16

5. 运算符优先级(避免逻辑错误)

优先级从高到低(关键记住前 3 个):

  1. 括号 ()(优先计算括号内);
  2. 幂运算 **;
  3. 乘除模 *、/、%、//;
  4. 加减 +、-。

示例

# 括号改变优先级

print(2 + 3 * 4) # 输出:14(先乘后加)

print((2 + 3) * 4)# 输出:20(先加后乘)

七、Python 集合:存储多个数据的 “容器”

Python 有 4 种核心集合类型:列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary),各有特点,适用场景不同。

1. 列表(List):可变有序,允许重复

用[]定义,是最常用的集合类型,支持增删改查。

基础操作代码:

 1. 创建列表(可混合类型)

fruits = ["apple", "banana", "cherry", 5, 3.14]

print(fruits)  输出:['apple', 'banana', 'cherry', 5, 3.14]

 2. 访问元素(索引从0开始,负索引从末尾算)

print(fruits[1])  输出:banana(第2个元素)

print(fruits[-1])  输出:3.14(最后1个元素)

 3. 切片(获取范围元素)

print(fruits[1:3])  输出:['banana', 'cherry'](从索引1到2,不包含3)

 4. 修改元素

fruits[0] = "mango"

print(fruits)  输出:['mango', 'banana', 'cherry', 5, 3.14]

 5. 添加元素

fruits.append("orange")  末尾添加

fruits.insert(2, "grape") 索引2处添加

print(fruits)  输出:['mango', 'banana', 'grape', 'cherry', 5, 3.14, 'orange']

 6. 删除元素

fruits.remove("banana")  删除指定值

fruits.pop()  删除末尾元素

del fruits[0]  删除指定索引

print(fruits)  输出:['grape', 'cherry', 5, 3.14]

 7. 遍历列表

for fruit in fruits:

print(fruit)  依次打印每个元素

2. 元组(Tuple):不可变有序,允许重复

用()定义,一旦创建无法修改(“只读” 列表),适合存储不希望被修改的数据。

基础操作代码:

 1. 创建元组(单个元素需加逗号,否则视为普通变量)

t1 = ("apple", "banana", "cherry")

t2 = ("apple",) # 正确:单个元素的元组

t3 = ("apple") # 错误:类型是str

 2. 访问元素(和列表一致)

print(t1[1]) # 输出:banana

 3. 不可修改(以下代码会报错)

 t1[0] = "mango" # TypeError: 'tuple' object does not support item assignment

 4. 间接修改:转列表→修改→转元组

t_list = list(t1)

t_list[0] = "mango"

t1 = tuple(t_list)

print(t1) # 输出:('mango', 'banana', 'cherry')

3. 集合(Set):可变无序,无重复

用{}定义,自动去重,适合判断元素是否存在、去重等场景。

基础操作代码:

# 1. 创建集合(自动去重)

s = {"apple", "banana", "cherry", "apple"}

print(s) # 输出:{'apple', 'banana', 'cherry'}(无序,去重)

# 2. 检查元素是否存在

print("banana" in s) # 输出:True

# 3. 添加元素

s.add("orange") # 单个添加

s.update({"grape", "mango"}) # 多个添加

print(s) # 输出:{'apple', 'banana', 'cherry', 'orange', 'grape', 'mango'}

# 4. 删除元素(remove不存在会报错,discard不会)

s.remove("banana")

s.discard("pear") # 无pear,不报错

print(s) # 输出:{'apple', 'cherry', 'orange', 'grape', 'mango'}

4. 字典(Dictionary):可变无序,键值对映射

用{key: value}定义,通过 “键” 快速查找 “值”,键唯一,值可重复,是存储结构化数据的首选。

基础操作代码:

# 1. 创建字典

person = {

"name": "Alice",

"age": 25,

"city": "Beijing"

}

print(person) # 输出:{'name': 'Alice', 'age': 25, 'city': 'Beijing'}

# 2. 访问值(通过键名或get())

print(person["name"]) # 输出:Alice

print(person.get("age"))# 输出:25

# 3. 修改值

person["age"] = 26

print(person) # 输出:{'name': 'Alice', 'age': 26, 'city': 'Beijing'}

# 4. 添加键值对

person["job"] = "Engineer"

print(person) # 输出:{'name': 'Alice', 'age': 26, 'city': 'Beijing', 'job': 'Engineer'}

# 5. 遍历字典(键、值、键值对)

for key in person:

print(key) # 打印所有键:name, age, city, job

for value in person.values():

print(value) # 打印所有值:Alice, 26, Beijing, Engineer

for key, value in person.items():

print(f"{key}: {value}") # 打印键值对

八、条件判断:让程序 “做选择”

计算机能自动化任务,核心是能做条件判断。Python 用if、elif、else实现,语法依赖缩进(4 个空格)。

代码示例:根据年龄判断录取结果

# 获取用户输入的年龄(注意:input()返回str,需转int)

age = int(input("请输入你的年龄:"))

# 条件判断

if age >= 18:

print("录取成功") # 年龄≥18,执行这里

elif age < 0:

print("输入有误,请输入正确年龄") # 年龄<0,执行这里

else:

print("录取失败") # 其他情况(0≤年龄<18),执行这里

关键注意点:

  • 条件后必须加冒号 :;
  • 缩进决定代码块归属(同一缩进是同一代码块);
  • if 从上往下判断,满足一个条件后,后续elif/else不再执行。

九、循环:让程序 “重复做”

当需要重复执行某段代码时,用循环效率更高。Python 有while和for两种循环。

1. while 循环:条件为真就执行

# 示例1:打印1~6

i = 1

while i < 7:

print(i)

i += 1 # 必须更新变量,否则无限循环

# 输出:1 2 3 4 5 6

# 示例2:密码验证(直到输入正确)

password = ""

while password != "123456":

password = input("请输入密码:")

print("密码正确!")

2. for 循环:遍历序列(更常用)

# 示例1:遍历列表

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:

print(fruit) # 输出:apple banana cherry

# 示例2:遍历字符串

for char in "Python":

print(char) # 输出:P y t h o n

# 示例3:用range()生成序列(range(起始, 结束, 步长))

for i in range(0, 10, 2):

print(i) # 输出:0 2 4 6 8(步长2,不包含10)

# 示例4:嵌套循环(adj和fruits的所有组合)

adj = ["red", "big", "tasty"]

for a in adj:

for f in fruits:

print(a, f) # 输出:red apple, red banana... tasty cherry

3. break 与 continue(控制循环)

  • break:立即退出循环;
  • continue:跳过当前迭代,进入下一次。
# break示例:i=3时退出

i = 1

while i < 7:

print(i)

if i == 3:

break

i += 1

# 输出:1 2 3

# continue示例:跳过i=3

i = 0

while i < 7:

i += 1

if i == 3:

continue

print(i)

# 输出:1 2 4 5 6 7

十、函数:减少重复代码,提高复用性

当一段代码需要多次使用时,封装成函数是最佳选择。比如计算圆的面积,无需每次写πr²,调用函数即可。

1. 定义与调用函数

用def关键字定义函数,语法:def 函数名(参数): 函数体 return 返回值。

# 示例1:计算圆的面积(用numpy的π,需先安装:pip install numpy)

import numpy as np

def circle_area(r):

"""计算圆的面积(r:半径)"""

return np.pi * r ** 2 # 返回面积

# 调用函数

area1 = circle_area(2) # 半径2

area2 = circle_area(5) # 半径5

print(f"半径2的圆面积:{area1:.2f}") # 输出:12.57

print(f"半径5的圆面积:{area2:.2f}") # 输出:78.54

# 示例2:返回多个值(实际返回元组,可拆解)

def move(x, y, step):

"""计算移动后的坐标(x,y:初始坐标,step:步长)"""

nx = x + step

ny = y + step

return nx, ny # 返回两个值

# 拆解返回值

new_x, new_y = move(10, 20, 5)

print(new_x, new_y) # 输出:15 25

2. 函数参数类型

Python 函数参数灵活,支持多种类型:

  • 位置参数:按顺序传递(如circle_area(r)中的r);
  • 默认参数:给参数设默认值,调用时可省略(如def power(x, n=2):,n默认 2);
  • 可变参数:参数个数可变,用*表示(如def calc(*numbers):,可传任意个数字);
  • 关键字参数:用**表示,接收键值对(如def person(name, age, **kw):,可传city="Beijing")。

3. 递归函数:自己调用自己

递归函数是在函数内部调用自身,适合解决有 “重复子问题” 的场景(如阶乘、斐波那契数列)。

# 示例:计算n的阶乘(n! = 1×2×3×...×n)

def fact(n):

if n == 1: # 终止条件(避免无限递归)

return 1

return n * fact(n-1) # 递归调用

print(fact(5)) # 输出:120(5! = 5×4×3×2×1)

十一、Lambda 函数:简洁的匿名函数

Lambda 是 “匿名函数”,语法简洁,仅能写一个表达式,适合临时使用的简单函数。

语法与示例

# 语法:lambda 参数: 表达式(自动返回结果)

# 示例1:计算a+10

add10 = lambda a: a + 10

print(add10(5)) # 输出:15

# 示例2:计算a*b

multiply = lambda a, b: a * b

print(multiply(3, 4)) # 输出:12

# 示例3:作为其他函数的参数(常用场景)

def my_func(n):

return lambda a: a * n # 返回Lambda函数

# 创建“翻倍”和“三倍”函数

double = my_func(2)

triple = my_func(3)

print(double(10)) # 输出:20(10×2)

print(triple(10)) # 输出:30(10×3)

十二、类与对象:面向对象编程基础

Python 是面向对象语言,“类(Class)” 是对象的 “蓝图”,“对象” 是类的实例(比如 “Person” 是类,“Alice” 是对象)。

1. 创建类与对象

# 1. 定义类(用class关键字)

class Person:

# __init__():构造方法,创建对象时自动执行(初始化属性)

def __init__(self, name, age):

self.name = name # self:当前对象的引用,必写

self.age = age

# 定义对象方法

def say_hello(self):

print(f"Hello, 我是{self.name},今年{self.age}岁")

# 2. 创建对象(实例化类)

p1 = Person("Alice", 25)

p2 = Person("Bob", 30)

# 3. 访问对象属性

print(p1.name) # 输出:Alice

print(p2.age) # 输出:30

# 4. 调用对象方法

p1.say_hello() # 输出:Hello, 我是Alice,今年25岁

p2.say_hello() # 输出:Hello, 我是Bob,今年30岁

2. 继承:子类复用父类功能

继承允许子类(派生类)继承父类(基类)的属性和方法,减少重复代码。

# 1. 父类:Person

class Person:

def __init__(self, fname, lname):

self.firstname = fname

self.lastname = lname

def print_name(self):

print(f"{self.firstname} {self.lastname}")

# 2. 子类:Student(继承Person)

class Student(Person):

# 重写__init__(),并调用父类__init__(保留父类功能)

def __init__(self, fname, lname, graduation_year):

super().__init__(fname, lname) # super():引用父类

self.grad_year = graduation_year # 子类新增属性

# 子类新增方法

def welcome(self):

print(f"欢迎{self.firstname} {self.lastname},{self.grad_year}届学生")

# 3. 创建子类对象

s1 = Student("Elon", "Musk", 2024)

# 4. 调用父类方法和子类方法

s1.print_name() # 继承父类方法:输出Elon Musk

s1.welcome() # 子类方法:输出欢迎Elon Musk,2024届学生

十三、补充:损失值、梯度下降与模型选择

最后补充一点机器学习相关的基础概念,帮助理解 Python 在数据分析中的应用:

1. 损失值与梯度下降

  • 损失值:模型预测值与实际值的差距(如均方误差 MSE),损失值越小,模型越准;
  • 梯度下降:通过 “沿损失函数下降最快的方向” 调整模型参数,直到损失值最小(找到最优解),适用于线性回归、神经网络等参数连续、损失可微的模型。

2. 为什么决策树 / 随机森林不用梯度下降?

核心差异在模型本质

  • 梯度下降:依赖 “连续参数” 微调;
  • 决策树 / 随机森林:基于 “离散分裂规则”(如判断年龄 > 18),训练核心是 “搜索最优分裂规则”,无连续参数可调整,因此无需梯度下降。

总结

这篇文章覆盖了 Python3 的核心语法:从基础的变量、数据类型,到运算符、集合、条件判断、循环,再到函数、Lambda、类与对象,最后补充了机器学习基础概念。后续可以深入学习数据分析、爬虫、机器学习等方向~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值