欢迎来到PyTorch深度学习教程系列!在本系列中,我们将从零开始学习如何使用PyTorch进行深度学习开发。本篇是系列的第一篇,我们将快速掌握Python编程基础,为后续的深度学习学习打下坚实的基础。
对于深度学习环境配置及pytorch的下载安装可以用我写的博客:
2025最新深度学习pytorch完整配置:conda/jupyter/vscode-CSDN博客
在后面的实践中会使用jupyter或者vscode,大家可以提前用这篇教程配置好!
快速掌握,核心在于快:把这些都运行一遍基本上是对python有了非常全面的认识了。
目录
1.数据类型
数字(Numbers)
字符串 (str)
布尔值 (bool)
2.数据结构:组织你的数据
列表 (Lists)
元组 (Tuples)
字典 (Dictionaries)
集合 (Sets)
选择合适的数据结构
3.操作数据结构
访问元素
修改元素
添加和删除元素
迭代元素
4.控制流
条件语句
循环
break 和 continue 语句
常见问题和最佳实践
5.函数
定义函数
参数和实参
返回值
作用域和全局变量
递归函数
匿名函数(Lambda 函数)
6.面向对象编程
理解对象和类
关键 OOP 概念
创建对象
继承
多态
OOP 的好处
挑战和最佳实践
7.结语
1.数据类型
可以把数据类型看作Python程序的构建块。它们定义了你可以存储和操作的信息类型。理解这些基本数据类型对于有效的数据处理至关重要。
数字(Numbers)
整数 (int):没有小数点的整数,例如 -2, 0, 5。
浮点数 (float):有小数点的数字,例如 3.14, -2.5。
复数 (complex):具有实部和虚部的数字,例如 2+3j。
python">x = 10 # 整数 (int)
y = 3.14 # 浮点数 (float)
z = 2 + 3j # 复数 (complex)
字符串 (str)
字符串是字符的序列,用单引号或双引号括起来。
python">name = "Alice" # 定义一个字符串
greeting = 'Hello, world!' # 另一个字符串示例
布尔值 (bool)
布尔值表示真或假,只有两个值:True 和 False。
python">is_adult = True # 布尔值 True
is_raining = False # 布尔值 False
2.数据结构:组织你的数据
数据结构是存储数据集合的容器。Python提供了几种内置的数据结构。
列表 (Lists)
列表是有序的项目集合,可变(可以更改)。
python">fruits = ["apple", "banana", "cherry"] # 定义一个列表
元组 (Tuples)
元组是有序的项目集合,不可变(不能更改)。
python">colors = ("red", "green", "blue") # 定义一个元组
字典 (Dictionaries)
字典是无序的键值对集合。
python">person = {"name": "Alice", "age": 30, "city": "New York"} # 定义一个字典
集合 (Sets)
集合是无序的唯一元素集合。
python">numbers = {2, 3, 5, 7} # 定义一个集合
选择合适的数据结构
选择数据结构取决于具体任务。
- 列表:当你需要存储可以修改的有序项目集合时使用。
- 元组:当你需要存储不能修改的有序项目集合时使用。
- 字典:当你需要存储键值对以便高效查找时使用。
- 集合:当你需要存储唯一元素并执行集合操作时使用。
3.操作数据结构
Python提供了多种方法和操作来处理数据结构。
访问元素
- 列表和元组:使用索引访问元素。
- 字典:使用键访问值。
python">print(fruits[0]) # 输出 "apple"
print(person["name"]) # 输出 "Alice"
修改元素
- 列表和字典:可以修改元素。
python">fruits[1] = "orange" # 修改列表中的元素
person["age"] = 31 # 修改字典中的值
添加和删除元素
- 列表:使用
append()
、insert()
添加元素,使用remove()
、pop()
删除元素。 - 集合:使用
add()
添加元素,使用remove()
或discard()
删除元素。 - 字典:使用新的键值对添加元素,使用
pop()
删除元素。
python">fruits.append("grape") # 在列表末尾添加元素
numbers.add(11) # 在集合中添加元素
del person["city"] # 从字典中删除键值对
迭代元素
使用循环遍历数据结构中的元素。
python">for fruit in fruits:print(fruit) # 遍历列表并打印每个元素for key, value in person.items():print(key, ":", value) # 遍历字典并打印键值对
4.控制流
条件语句
条件语句允许程序根据条件的真假来执行不同的代码块。
-
if 语句:如果条件为真,执行代码块。
python">age = 25
if age >= 18:print("你已经成年了。")
- if-else 语句:如果条件为真,执行一段代码;否则,执行另一段代码。
python">age = 17
if age >= 18:print("你已经成年了。")
else:print("你还是未成年人。")
- elif 语句:用于检查多个条件。
python">score = 85
if score >= 90:print("优秀!")
elif score >= 80:print("很好!")
else:print("需要改进。")
循环
循环允许程序重复执行某段代码。
-
for 循环:遍历序列(如列表、元组、字符串等)。
python">fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)
- while 循环:只要条件为真,就重复执行代码块。
python">count = 0
while count < 5:print(count)count += 1
break 和 continue 语句
- break:终止循环。
- continue:跳过当前迭代,继续下一次迭代。
python">numbers = [1, 2, 3, 4, 5]
for number in numbers:if number == 3:breakprint(number)
常见问题和最佳实践
缩进:Python 使用缩进来定义代码块,通常使用 4 个空格。
无限循环:使用 while 循环时,确保条件最终会变为假。
清晰性:使用有意义的变量名和注释,提高代码可读性。
嵌套循环:避免过多嵌套,保持代码可维护性。
5.函数
函数是程序中的小程序,用于封装特定任务,使代码更有序、可重用且易于理解。
定义函数
使用 def
关键字定义函数,后跟函数名、括号内的参数和冒号。函数体需要缩进。
python">def greet(name):"""向某人问好。"""print("你好,", name, "!")
参数和实参
- 参数:函数定义中定义的变量。
- 实参:调用函数时传递的值。
python">def add(x, y):"""加法函数。"""return x + yresult = add(3, 4) # 调用函数并传递实参
print(result) # 输出:7
返回值
函数可以使用 return
语句返回值。
python">def square(number):"""返回一个数的平方。"""return number * numbersquared_value = square(5)
print(squared_value) # 输出:25
作用域和全局变量
- 局部变量:在函数内定义的变量。
- 全局变量:在函数外定义的变量。
python">global_variable = 10def my_function():local_variable = 5print(global_variable) # 访问全局变量# print(local_variable) # 在作用域外访问局部变量会引发错误my_function()
递归函数
函数可以调用自身,形成递归函数。
python">def factorial(n):"""计算非负整数的阶乘。"""if n == 0:return 1else:return n * factorial(n - 1)
匿名函数(Lambda 函数)
使用 lambda
关键字定义匿名函数。
python">double = lambda x: x * 2
result = double(5)
print(result) # 输出:10
通过掌握函数,你可以编写更清晰、高效且易于维护的 Python 代码。
6.面向对象编程
面向对象编程(OOP)是一种编程范式,围绕“对象”的概念旋转。它是一种强大的方法,用于建模现实世界中的实体及其交互。
理解对象和类
- 对象:类的实例,表示现实世界的实体,具有属性(数据)和行为(方法)。
- 类:创建对象的蓝图,定义其属性和方法。
python">class Dog:def __init__(self, name, breed):self.name = nameself.breed = breeddef bark(self):print(f"{self.name} 汪汪叫!")
关键 OOP 概念
- 封装:将数据(属性)和操作数据的方法捆绑在一个单元(对象)中。
- 继承:创建新类(子类)继承现有类(父类)的属性和方法。
- 多态:不同类型的对象可以像同一类型一样被对待。
- 抽象:关注重要特征,隐藏实现细节。
创建对象
要创建对象,你需要实例化一个类。
python">my_dog = Dog("Buddy", "Golden Retriever")
my_dog.bark() # 输出:Buddy 汪汪叫!
继承
python">class Mammal:def __init__(self, name):self.name = namedef breathe(self):print(f"{self.name} 正在呼吸。")class Cat(Mammal):def purr(self):print(f"{self.name} 在咕噜咕噜叫。")class Dog(Mammal):def bark(self):print(f"{self.name} 正在汪汪叫。")
多态
python">def make_sound(animal):animal.make_sound()cat = Cat("Whiskers")
dog = Dog("Buddy")make_sound(cat) # 输出:Whiskers 在咕噜咕噜叫。
make_sound(dog) # 输出:Buddy 正在汪汪叫。
OOP 的好处
- 代码复用性:继承促进代码复用。
- 模块化:对象是自包含单元,使代码更易于管理。
- 封装:保护数据免受意外修改。
- 多态:使代码更灵活和可扩展。
挑战和最佳实践
- 过度工程化:避免创建不必要的类。
- 代码可读性:编写清晰简洁的代码,使用有意义的名称。
- 测试:彻底测试你的面向对象代码。
通过理解和应用 OOP 原则,你可以创建更复杂且易于维护的 Python 程序。
7.结语
这样很快的就把python的整个框架学完了,当然,这个只供入门,熟能生巧是很重要的!
下次我们会深入一点,当然,你想直接开始深度学习,这很快了!