主题
Python 必备知识✅
Python 简介
简介:Python 是一种高级编程语言,以其清晰的语法和强大的功能而著名。 Python 是一门强大且多用途的编程语言,它在许多领域都有广泛的应用,包括数据分析、网站开发、自动化任务等等。今天,我们的目标是让您能够在 Python 的世界里获得一席之地,掌握足够的技能,以便您能够看懂、修改、编写简单或中等难度的 Python 代码,并能处理一些自动化任务,如浏览器和应用程序的自动化操作。
现在,让我们了解一下 Python 编程语言。Python 是一门备受欢迎的高级编程语言,因其简洁、易读的语法和强大的功能而备受推崇。动态语言里面,Python、JavaScript,静态语言里面,Rust、Golang、Java。
Python 编程语言诞生于上世纪 90 年代初,由荷兰计算机程序员 Guido van Rossum 创建。Guido 的目标是设计一门易学易用的语言,以促进程序员之间的协作和代码的可读性。因此,Python 强调了代码的简洁性和可读性,这使得它成为编程初学者和专业程序员的首选之一。
简洁和易读的语法:Python 的语法非常简单直观,几乎就像在编写英语一样。这使得编写和阅读 Python 代码变得非常容易。
跨平台性:Python 是一种跨平台语言,可以在多种操作系统上运行,包括 Windows、macOS 和 Linux。
强大的标准库:Python 拥有丰富的标准库,其中包含了各种各样的模块和功能,可以帮助您完成各种任务,从文件操作到网络通信再到图形界面开发。
大量的第三方库:Python 社区开发了大量的第三方库和框架,用于各种领域,包括数据科学、Web 开发、游戏开发等。这些库可以帮助您加速开发过程。
社区支持:Python 拥有庞大而活跃的社区,您可以在各种论坛、博客和开发者社交媒体上找到丰富的学习资源和帮助。
Python 分支:
CPython CPython 是 Python 编程语言的默认且最广泛使用的实现。它是由 Python 语言创始人吉多·范罗苏姆(Guido van Rossum)主导开发的,并且是一个开源项目。 核心特征: 解释器:CPython 包含 Python 解释器,它是用 C 语言编写的。这意味着它在执行 Python 代码时,实际上是将 Python 代码转换成 C 代码,并利用 C 语言的速度优势。 标准库:CPython 附带了一个广泛的标准库,这是 Python 强大功能的一个重要来源。 扩展性:由于其用 C 语言编写,CPython 允许开发者使用 C 语言编写扩展模块,这些模块可以直接与 Python 的核心交互,提供更高效的执行速度。 使用场景: 作为 Python 官方版本,CPython 适用于几乎所有需要 Python 的场景,包括但不限于 web 开发、数据科学、机器学习、自动化等。
Jython Jython,以前称为 JPython,是 Python 语言的另一种实现,它是用 Java 编写的。 核心特征: Java 集成:Jython 的最大特点是它能够无缝集成 Java 类库。它使得 Python 脚本能够直接导入并使用 Java 类,这使得在 Java 平台上运行 Python 变得非常高效。 平台独立性:由于 Jython 是在 Java 平台上运行的,因此它继承了 Java 的平台独立性。这意味着 Jython 程序可以在任何支持 Java 的平台上运行。 性能特点:虽然 Jython 可以提供良好的与 Java 的集成,但在某些情况下,它的性能可能不如 CPython,特别是在执行纯 Python 代码时。 使用场景: Jython 适用于需要在 Java 应用程序中嵌入 Python 脚本的场景,或者需要同时使用 Python 和 Java 库的情况。 它也被用于某些特定的软件测试场景,尤其是在测试 Java 应用程序时。
IronPython 描述:IronPython 是 Python 语言的一个实现,针对 .NET 框架。它允许 Python 代码与 .NET 对象交互,并在 .NET 环境中运行。 GitHub 仓库:IronPython/IronPython3
PyPy 描述:PyPy 是一个 Python 解释器,其特点是使用 JIT(即时编译)技术,以提高 Python 代码的执行速度。PyPy 致力于提供比 CPython 更快的执行速度。 GitHub 仓库:pypy/pypy
MicroPython 描述:MicroPython 是 Python 3 的精简实现,旨在微控制器和嵌入式系统中运行。它使得 Python 编程可以在硬件和物联网设备上使用。 GitHub 仓库:micropython/micropython
Brython 描述:Brython 是一种实现,旨在使 Python 代码能够在浏览器中运行,类似于 JavaScript。Brython 通过将 Python 代码转换为 JavaScript 来实现这一目标。 GitHub 仓库:brython-dev/brython
这些分支各有特色,针对不同的应用领域和执行环境。例如,IronPython 适用于需要在 .NET 环境中集成 Python 的场景,而 PyPy 则是为了提高执行效率。MicroPython 适合在资源受限的嵌入式系统中使用,Brython 则让 Python 能够在 web 浏览器中运行。
应用场景
Python 的灵活性和广泛的库生态系统使其在各个领域都有出色的应用,以下是一些示例:
Web 开发:使用框架如 Django 和 Flask,您可以构建强大的网站和 Web 应用程序。
数据科学和机器学习:Python 在数据分析、机器学习和人工智能领域广泛应用,有许多库如 NumPy、Pandas、Scikit-Learn 和 TensorFlow 可供使用。
自动化任务:Python 可以用于处理自动化任务,如自动化测试、网站爬虫和自动化办公任务。
游戏开发:通过 Pygame 等库,Python 也可用于简单的游戏开发。
Python 是一门适用范围广泛且令人愉快的编程语言,无论您是初学者还是有一定编程经验的人,都能从中受益匪浅。
Python 虚拟环境
Python 的安装。安装过程比较简单,从官网下载 windows 版本,双击安装,勾选 add python to path,这样我们就可以在命令行中使用 python。
Windows 11 的话,还可以通过应用商店安装 Python,也是一个按钮的事,很便捷。
在 Python 开发中非常重要的最佳实践,那就是使用虚拟环境(virtualenv)。虚拟环境是一种强大的工具,可以帮助我们更好地管理 Python 项目,确保项目之间的独立性,以及有效地管理依赖项。
为什么需要虚拟环境?
Python 拥有众多的第三方库和依赖项,不同项目可能需要不同版本的库或依赖项。如果不使用虚拟环境,这些依赖项可能会互相干扰,导致不稳定的代码。虚拟环境的出现解决了这个问题,它允许我们为每个项目创建一个独立的 Python 环境,使得项目之间的依赖关系得以隔离。
虚拟环境的优点: 隔离性:每个虚拟环境都是相互隔离的,这意味着您可以为每个项目创建一个独立的 Python 环境,避免了不同项目之间的冲突。 版本控制:您可以轻松地控制 Python 的版本,以及每个项目所需的依赖项的版本。这确保了您的代码在不同环境中都能正常运行。 清晰的项目结构:虚拟环境使得项目结构更加清晰。您可以轻松查看项目的依赖项,以及在项目中使用的 Python 版本。 如何使用虚拟环境?
使用虚拟环境非常简单。您只需要在项目文件夹中创建一个虚拟环境,
一个使用标准库的创建虚拟环境的方法:
python -m venv env1 就可以创建一个名称为 env1 的虚拟环境。 激活虚拟环境:
激活 Python 虚拟环境在 Windows 和 Linux 下使用的命令略有不同。以下是在这两个操作系统上激活虚拟环境的命令:
在 Windows 下激活虚拟环境:
打开命令提示符 (Command Prompt) 或 PowerShell。
导航到存储虚拟环境的目录。假设虚拟环境位于名为
myenv的文件夹中,并且该文件夹位于您的用户文件夹中(例如,C:\Users\YourUsername),您可以使用以下命令进入虚拟环境:
bat
C:\Users\YourUsername\myenv\Scripts\activate这会激活虚拟环境,您将看到虚拟环境名称出现在命令提示符或 PowerShell 的左侧,表示您已成功进入虚拟环境。
在 Linux 下激活虚拟环境
打开终端。
导航到存储虚拟环境的目录。假设虚拟环境位于名为
myenv的文件夹中,您可以使用以下命令进入虚拟环境:
source /path/to/myenv/bin/activate或者,如果您的虚拟环境位于当前目录中,可以使用相对路径:
source ./myenv/bin/activate这会激活虚拟环境,您将看到虚拟环境名称出现在终端的左侧,表示您已成功进入虚拟环境。
要退出虚拟环境,无论是在 Windows 还是 Linux 中,都可以使用以下命令:
deactivate这将使您退出虚拟环境并返回到全局 Python 环境。请注意,虚拟环境只在激活时对当前终端会话有效,关闭终端后虚拟环境将不再处于活动状态。
一旦激活,您可以在该环境中安装项目所需的依赖项。这确保了您的项目与全局 Python 环境保持隔离,并且不会影响其他项目。
Pyhton 的函数
1. 函数基础
- 定义函数:使用
def关键字定义函数,后跟函数名和圆括号。
python
def my_function():
print("Hello from a function")- 调用函数:通过写出函数名和圆括号来调用函数。
python
my_function()- 参数:函数可以接受参数,参数是在调用函数时传递给函数的值。
python
def my_function(username):
print(f"Hello, {username}")- 返回值:使用
return语句从函数返回值。
python
def sum(a, b):
return a + b2. 高级函数概念
- 默认参数:可以为函数的参数提供默认值。
python
def my_function(country = "Norway"):
print("I am from " + country)- 关键字参数:调用函数时,可以使用参数的名字来为它们赋值。
python
my_function(country="Sweden")- 可变参数:使用
*args和**kwargs接受可变数量的参数。
python
def function(*args, **kwargs):
print(args, kwargs)- Lambda 函数:是一个小型匿名函数。
python
x = lambda a : a + 10
print(x(5))Python 的面向对象编程(OOP)
1. 基础概念
- 类和对象:Python 是一种面向对象的编程语言。类是用于创建对象的蓝图。
python
class MyClass:
x = 5- 创建对象:创建类的实例称为对象。
python
p1 = MyClass()
print(p1.x)2. 类的构造函数
__init__()函数:用于在创建对象时初始化属性。
python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age3. 继承
- 继承:允许我们定义继承另一个类的所有方法和属性的类。
python
class Student(Person):
pass4. 封装
- 封装:限制对对象中某些组件的访问。
python
class Computer:
def __init__(self):
self.__maxprice = 900
def sell(self):
print(f"Selling Price: {self.__maxprice}")5. 多态
- 多态:不同类的对象可以使用相同的方法名称,而这些方法可以以不同方式执行。
多态(Polymorphism)的基本概念
多态是面向对象编程中的一个核心概念。它允许我们以统一的接口使用不同的数据类型。在多态中,同一个接口可以被不同的对象以不同方式实现。这意味着在运行时,根据对象的数据类型,可以决定调用哪个实现。
多态的优点
- 提高灵活性:可以使用同一个接口与不同的数据类型交互。
- 增强可扩展性:在不修改现有代码的情况下,容易添加新的类(数据类型)。
多态的实现方式
在 Python 中,多态通常是通过继承和方法重写来实现的。当子类继承父类时,可以重写父类的方法,提供特定于子类的实现。
示例:多态的实现
假设我们有一个基类Animal和两个派生类Dog和Cat。每个类都有一个make_sound方法,但是实现方式不同。
步骤 1: 定义基类和派生类
python
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"步骤 2: 使用多态
python
# 定义一个函数,它接受一个Animal类型的对象
def animal_sound(animal):
print(animal.make_sound())
# 创建Dog和Cat的对象
dog = Dog()
cat = Cat()
# 调用函数
animal_sound(dog) # 输出 "Woof!"
animal_sound(cat) # 输出 "Meow!"在这个例子中,animal_sound函数接受一个Animal类型的对象,并调用其make_sound方法。根据传入的对象类型(Dog或Cat),调用相应类的make_sound方法。这就是多态的体现:同一接口(make_sound方法),根据对象的不同,有不同的行为。
这种方式使得我们可以在不知道对象具体类型的情况下,编写可以操作这些对象的函数,增加了代码的灵活性和可扩展性。
常见工具网站
- https://github.com/vinta/awesome-python
- https://github.com/jobbole/awesome-python-cn
- https://github.com/RecharLee/awesome-python-cn
学习资源推荐
很多人初学者,问我有没有学习 Python 的资料的时候,我都会给他如下资料:
1、《小白的 Python 新手教程》廖雪峰
廖雪峰的 Python 系列教程中文,免费,零起点,完整示例,基于最新的 Python 3 版本,写的很清晰,内容也很全面。
网址: https://www.liaoxuefeng.com/wiki/1016959663602400
2、《父与子的编程之旅:与小卡特一起学 Python》
这是一本面向孩子们的书,不过只要想学习计算机编程,任何人都可以读这本书。
3、《About Python - 100 天从新手到大师》
这个系列推荐的朋友很多,内容很全面,超多 Stars
https://github.com/jackfrued/Python-100-Days
https://github.com/jackfrued/Python-Core-50-Courses
练习题
问题 1: 列表去重
描述: 实现一个函数 remove_duplicates ,它接受一个列表并返回一个新列表, 该列表包含原列表中的唯一元素,且保持原列表元素的顺序不变。
python
def remove_duplicates(lst):
# 你的代码测试用例:
python
print(remove_duplicates([1, 2, 2, 3, 4, 4, 4])) # 应输出 [1, 2, 3, 4]
print(remove_duplicates(['a', 'b', 'b', 'a', 'c', 'd', 'c'])) # 应输出 ['a'
print(remove_duplicates([])) # 应输出 []问题 2: 斐波那契数列
描述: 实现一个函数 fibonacci ,它接受一个正整数 n 作为输入,并返回斐波 那契数列的第 n 项。
python
def fibonacci(n):
# 你的代码测试用例:
python
print(fibonacci(5)) # 应输出 5
print(fibonacci(10)) # 应输出 55
print(fibonacci(1)) # 应输出 1问题 3: 字符串压缩
描述: 实现一个函数 compress_string ,它将字符串中连续的重复字符压缩为一个字符和这个字符重复的次数。例如,输入 'aaaabbbccdaa' 应该返回 'a4b3c2d1a2' 。
python
def compress_string(s):
# 你的代码测试用例:
python
print(compress_string("aaaabbbccdaa")) # 应输出 'a4b3c2d1a2'
print(compress_string("abc")) # 应输出 'a1b1c1'
print(compress_string("")) # 应输出 ''问题 4: 查找列表中的最大数
描述: 实现一个函数 find_max ,返回给定数字列表中的最大数。不要使用内置的 max() 函数。
python
def find_max(lst):
# 你的代码测试用例:
python
print(find_max([1, 3, 2, 8, 5])) # 应输出 8
print(find_max([-3, -1, -7])) # 应输出 -1
print(find_max([10, 10, 10])) # 应输出 10问题 5: 简单的类继承
描述: 定义一个名为 Vehicle 的基类,具有属性 name 和 max_speed ,以及 一 个 display_info 方 法 。 然后定义一个名为 Car 的 子 类 , 它继承 Vehicle ,添加一个 gear 属性,并重写 display_info 方法以显示所有属 性。
python
class Vehicle:
# 你的代码
class Car(Vehicle):
# 你的代码测试用例:
python
v1 = Vehicle("Bike", 20)
v1.display_info() # 应输出 "Vehicle Name: Bike, Max Speed: 20"
car1 = Car("Ford", 120, 5)
car1.display_info() # 应输出 "Vehicle Name: Ford, Max Speed: 120, Gears: 5"
car2 = Car("Tesla", 150, 6)
car2.display_info() # 应输出 "Vehicle Name: Tesla, Max Speed: 150, Gears: 6"