1.初识python
文章目录
- 1.python背景知识
- 2.python优缺点
- 3.为什么要学习python
大家好,我是晓星航。今天为大家带来的是初识python 相关的讲解!😀
1.python背景知识
我们学习python需要做的事情:
1.python 环境搭建
2.python 基础语法
3.python 代码案例
Python 是一种高级的、通用型编程语言,它有着丰富的背景知识。
一、起源与发展
- 诞生背景
- Python 由荷兰人 Guido van Rossum 在 1989 年圣诞节期间开始编写,最初是作为 ABC 语言的替代品。ABC 语言是一种教学用的编程语言,但 Guido 认为它存在一些局限性,比如不够开放和灵活,不能很好地用于实际的系统开发。
- 他希望创造一种语言,能够在保持代码可读性的同时,具备强大的功能,于是 Python 诞生了。它的名字来源于 Guido 喜爱的英国喜剧团体 Monty Python,并不是来自于蟒蛇这种动物。
- 发展历程
- 在早期,Python 主要在学术和科研领域得到应用。由于其简单易学的特点,它很快在一些高校和研究机构中传播开来。
- 随着互联网的兴起,Python 开始在网络编程、脚本编写等领域崭露头角。它的标准库中提供了丰富的网络编程模块,如
socket模块,可以方便地实现网络通信。 - 2000 年后,Python 在数据处理和人工智能领域大放异彩。像 NumPy、Pandas 等数据处理库以及 TensorFlow、PyTorch 等深度学习框架的出现,使得 Python 成为数据科学家和人工智能工程师的首选语言之一。
二、设计理念与特点
- 设计理念
- Python 强调代码的可读性和简洁性。它采用了一种简洁而优雅的语法,例如使用缩进来表示代码块,而不是像其他语言(如 C++、Java)那样使用大括号。这种设计使得 Python 代码看起来更加清晰、直观,易于理解和维护。
- 同时,Python 追求一种 “做一件事情有且只有一种最好的方法” 的理念,这使得 Python 的代码风格相对统一,有利于团队协作开发。
- 特点
- 简单易学:Python 的语法简单,接近自然语言。例如,一个简单的 “Hello, World!” 程序在 Python 中只需要一行代码
print("Hello, World!"),对于初学者来说很容易上手。 - 跨平台性:Python 可以在多种操作系统上运行,包括 Windows、Mac OS、Linux 等。这是因为 Python 解释器是跨平台的,编写好的 Python 代码在不同的操作系统上只需稍作调整(通常是路径相关的内容)或者无需调整就可以运行。
- 丰富的库和框架:Python 拥有庞大的标准库,涵盖了从文件处理、网络通信、数据处理到图形用户界面等各个方面。例如,
os库可以方便地进行操作系统相关的操作,如文件和目录的管理;urllib库用于网络请求。除了标准库,还有大量的第三方库,像用于网页开发的 Django 和 Flask,用于数据分析的 NumPy 和 Pandas,以及用于机器学习的 Scikit - learn 和 TensorFlow 等。 - 面向对象和面向过程编程支持:Python 既支持面向对象编程(OOP),也支持面向过程编程。在面向对象编程方面,它具有类、对象、继承、多态等特性。例如,可以定义一个
Person类,包含name和age等属性,以及introduce等方法来表示人的行为。同时,在一些简单的脚本编写场景中,也可以使用面向过程的方式,如按照顺序编写一系列函数来完成任务。 - 动态类型系统:Python 是一种动态类型语言,这意味着在定义变量时不需要声明变量的类型。例如,可以先写
a = 1,这里a是整数类型,然后又可以写a = "Hello",此时a变成了字符串类型。这种灵活性使得代码编写更加快捷,但也需要开发者在编写代码时更加注意变量类型的变化可能带来的问题。
- 简单易学:Python 的语法简单,接近自然语言。例如,一个简单的 “Hello, World!” 程序在 Python 中只需要一行代码
2.python优缺点
优点:
-
易于学习和阅读
-
Python 的语法简洁明了,接近自然语言,对于初学者来说很容易理解。例如,打印 “Hello, World!” 在 Python 中只需要一行代码
print("Hello, World!"),而在一些其他语言中可能需要更多的语法结构来实现相同的功能。 -
它使用缩进来表示代码块,这种方式使得代码结构清晰,一目了然。比如在定义一个函数时:
def add_numbers(a, b):return a + b
- 这种缩进式的代码风格使得代码的逻辑关系非常直观,便于阅读和维护。
- 跨平台性
- Python 程序可以在多种操作系统上运行,如 Windows、Mac OS、Linux 等。这是因为 Python 有针对不同操作系统的解释器,只要代码中没有涉及特定操作系统的底层操作(如果有,可以通过一些条件判断和对应的库来处理),就可以在不同平台上顺利运行。
- 例如,一个简单的文件读取和处理的 Python 脚本,在 Windows 系统上开发完成后,只要文件路径等细节在其他操作系统上进行适当调整,就可以直接在 Mac OS 或 Linux 系统上运行。
- 丰富的库和框架
- Python 拥有庞大的标准库,涵盖了众多功能领域。例如,
os库用于操作系统相关操作,如文件和目录的管理、进程控制等;datetime库用于处理日期和时间相关的事务。 - 除了标准库,还有大量的第三方库。在数据科学领域,有 NumPy 用于高效的数值计算,Pandas 用于数据处理和分析,Matplotlib 用于数据可视化;在网络编程领域,有 Tornado、Flask 和 Django 等用于开发 Web 应用程序;在人工智能领域,有 TensorFlow、PyTorch 等用于机器学习和深度学习。这些库和框架极大地提高了开发效率,使开发者能够快速实现复杂的功能。
- Python 拥有庞大的标准库,涵盖了众多功能领域。例如,
- 面向对象和面向过程编程支持
- Python 支持面向对象编程(OOP),它具有类、对象、继承、多态等特性。例如,定义一个
Car类来表示汽车:
- Python 支持面向对象编程(OOP),它具有类、对象、继承、多态等特性。例如,定义一个
class Car:def __init__(self, brand, model):self.brand = brandself.model = modeldef drive(self):print(f"{self.brand} {self.model} is driving.")
- 这样可以方便地创建汽车对象并调用其方法。同时,Python 也支持面向过程编程,对于一些简单的任务或脚本,开发者可以按照步骤编写一系列函数来完成任务,这种灵活性使得 Python 可以适应不同的编程风格和场景。
- 动态类型系统
- 在 Python 中,变量不需要预先声明类型,变量的类型是根据赋值来确定的。例如,可以先写
x = 1,此时x是整数类型,然后再写x = "Hello",此时x就变成了字符串类型。 - 这种动态类型系统使得代码编写更加灵活和快速,开发者可以更自由地处理变量。但同时也需要注意,由于类型可以随意改变,可能会导致一些潜在的错误,比如在进行数学运算时,如果变量类型意外地变成了非数字类型,就可能会出现错误。
- 在 Python 中,变量不需要预先声明类型,变量的类型是根据赋值来确定的。例如,可以先写
- 开发效率高
- 由于 Python 的简单语法、丰富的库和动态类型系统,使得开发过程中可以快速地实现想法。例如,在开发一个简单的 Web 应用程序时,使用 Flask 框架可以在短时间内搭建起一个基本的应用架构。
- 对于数据处理和分析任务,使用 Pandas 和 NumPy 等库可以快速地读取、处理和分析数据,而不需要像在一些低级语言中那样编写大量复杂的代码来实现相同的功能。
缺点:
- 执行速度相对较慢
- 与 C、C++ 等编译型语言相比,Python 的执行速度较慢。这是因为 Python 是解释型语言,代码在运行时需要逐行解释执行,而编译型语言是先将代码编译成机器语言,执行效率更高。
- 例如,在进行大量的数值计算时,同样的算法用 C 语言实现可能比 Python 快很多。不过,在很多实际应用场景中,可以通过一些优化措施来缓解这个问题,比如使用 Python 的一些高性能库(如 NumPy,它的底层是用 C 语言实现的),或者将一些对性能要求极高的部分用 C 或 C++ 等语言编写,然后通过 Python 调用。
- 全局解释器锁(GIL)限制多线程性能
- Python 的全局解释器锁(GIL)在一定程度上限制了多线程的性能。在 CPython(Python 最常用的解释器)中,GIL 确保在任何时刻只有一个线程在执行 Python 字节码。
- 这意味着在多线程编程中,当多个线程同时访问共享数据时,由于 GIL 的存在,实际上并不能真正地并行执行,而是在多个线程之间进行切换,这种切换会带来一定的开销。不过,对于 I/O 密集型任务(如网络通信、文件读取等),多线程仍然可以提高效率,因为在等待 I/O 操作完成的过程中,线程可以让出 GIL,让其他线程执行。
- 代码加密困难
- Python 是一种解释型语言,其代码是明文形式的,这使得代码的加密比较困难。不像编译型语言,编译后的二进制文件很难被反编译,Python 代码很容易被查看和修改。
- 虽然有一些工具可以对 Python 代码进行混淆或加密,但这些方法都有一定的局限性,而且可能会影响代码的运行效率或者可维护性。
- 动态类型可能导致潜在错误
- 由于 Python 的动态类型系统,变量的类型可以随意改变,这可能会导致一些不易察觉的错误。例如,在一个函数中,如果期望接收一个整数参数,但实际传入了一个字符串,可能会导致函数内部的运算出现错误。
- 为了避免这种错误,开发者需要在编写代码时格外小心,并且在必要时进行类型检查,这增加了开发过程中的一些复杂性。不过,一些新的 Python 特性(如类型提示)可以在一定程度上帮助解决这个问题。
3.为什么要学习python
一、在数据科学和分析领域的优势
- 数据处理能力强
- Python 拥有丰富的库,如 Pandas。Pandas 提供了高效的数据结构,如 DataFrame(数据框),可以方便地对各种类型的数据进行读取、清洗、转换和分析。例如,在处理一个包含销售记录的 CSV 文件时,只需几行代码就可以将文件读入 DataFrame,然后轻松地进行数据筛选、排序和统计计算。
- 对于缺失数据的处理,Pandas 也提供了多种灵活的方法,比如可以通过
dropna()函数删除包含缺失值的行或列,或者使用fillna()函数用特定的值(如均值、中位数等)填充缺失值。
- 数据可视化方便
- 配合 Matplotlib 和 Seaborn 等可视化库,Python 能够创建高质量的图表和可视化效果。Matplotlib 是一个基础的绘图库,它可以绘制各种类型的图表,如折线图、柱状图、散点图等。例如,在分析股票价格走势时,可以使用 Matplotlib 绘制出股票价格随时间变化的折线图,直观地展示价格波动情况。
- Seaborn 是基于 Matplotlib 的高级可视化库,它提供了更美观的图表样式和更方便的统计可视化功能。例如,在分析不同类别数据的分布关系时,Seaborn 的
pairplot函数可以轻松地绘制出变量之间的两两关系图,帮助用户快速发现数据中的规律和潜在关系。
- 机器学习和深度学习的支持
- Python 是机器学习和深度学习领域最常用的语言之一。有许多强大的库,如 Scikit - learn 用于传统机器学习算法,包括分类(如决策树、支持向量机)、回归(如线性回归、岭回归)和聚类(如 K - Means 聚类)等算法。例如,在构建一个预测客户是否会购买某种产品的模型时,可以使用 Scikit - learn 中的逻辑回归算法进行训练和预测。
- 在深度学习方面,TensorFlow 和 PyTorch 是最受欢迎的框架。它们提供了构建神经网络的工具,从简单的多层感知机到复杂的卷积神经网络(CNN)和循环神经网络(RNN)。这些框架可以用于图像识别、自然语言处理等众多复杂任务。例如,利用 TensorFlow 构建一个图像分类模型,可以对猫狗等动物的图片进行分类。
二、在软件开发和自动化领域的作用
- 跨平台兼容性好
- Python 代码可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。这使得开发人员可以编写一次代码,在不同的平台上部署。例如,一个用于文件备份的脚本,只要在不同的操作系统上安装了 Python 环境,就可以直接运行,无需对代码进行大量的修改。
- 脚本编写便捷
- Python 的语法简洁明了,非常适合编写各种脚本。比如系统管理脚本,用于自动化服务器的部署、配置和监控。可以通过 Python 脚本自动安装软件包、配置网络参数、检查系统资源使用情况等。例如,在自动化测试领域,使用 Python 编写测试脚本,可以模拟用户的操作,对软件的功能进行自动化测试,提高测试效率。
- Web 开发的可行性
- 有许多 Python 的 Web 框架,如 Django 和 Flask。Django 是一个功能强大的全栈 Web 框架,它提供了内置的数据库管理、用户认证、表单处理等功能。例如,使用 Django 可以快速开发一个功能齐全的电商网站,包括商品展示、购物车、订单处理等功能。
- Flask 是一个轻量级的 Web 框架,它更灵活,适合用于构建小型的 Web 应用或 API。例如,可以使用 Flask 构建一个简单的博客网站或者一个提供数据查询服务的 API。
三、在其他领域的广泛应用
- 学术研究中的应用
- 在科学计算领域,Python 可以帮助研究人员解决复杂的数学问题。例如,在物理学中计算量子力学中的波函数,或者在天文学中进行星系演化的模拟。NumPy 是 Python 中用于科学计算的基础库,它提供了高效的多维数组对象和相关的数学函数。通过 NumPy 可以方便地进行矩阵运算、数值积分等计算。
- 在人文社科领域,Python 也有应用。例如,在文本挖掘中,使用 Python 可以对大量的文本资料(如学术论文、新闻报道等)进行词频统计、主题分析等操作,帮助研究人员发现文本中的潜在模式和主题。
- 游戏开发中的辅助作用
- 虽然 Python 不是主要的游戏开发语言,但在游戏开发的一些环节中非常有用。例如,在游戏的脚本编写方面,用于控制游戏中的非玩家角色(NPC)的行为逻辑。可以使用 Python 编写 NPC 的决策树,决定它们在不同情况下的行为,如攻击、逃跑、巡逻等。
- 在游戏工具开发中,Python 也可以发挥作用。比如开发一个用于游戏资源管理的工具,对游戏中的图片、音频、模型等资源进行整理、转换和优化。
python在这么多领域都有广泛的运用,可见python是一门很重要的语言工具。
感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘
相关文章:
1.初识python
文章目录 1.python背景知识2.python优缺点3.为什么要学习python 大家好,我是晓星航。今天为大家带来的是初识python 相关的讲解!😀 1.python背景知识 我们学习python需要做的事情: 1.python 环境搭建 2.python 基础语法 3.pyth…...
【密码学】ZUC祖冲之算法
一、ZUC算法简介 ZUC算法(祖冲之算法)是中国自主研发的一种流密码算法,2011年被3GPP批准成为4G国际标准,主要用于无线通信的加密和完整性保护。ZUC算法在逻辑上采用三层结构设计,包括线性反馈移位寄存器(L…...
Python面试常见问题及答案8
一、基础部分 问题1: 解释Python中的切片(slicing)操作在列表、字符串上是如何工作的? 答案: 在列表和字符串中,切片操作可以获取其中的一部分元素。切片的语法是[start:stop:step]。 对于列表࿰…...
ASP.net Core EntityFramework Code EF code 汇总
Entity FrameWork EF 总结 EF Core EF Core 如果实体模型很多,全部放在 上下文中的 OnModelCreating(ModelBuilder modelBuilder) 不太好维护 可以把实体模型 分离出去,每个类创建一个实体模型 public class BookConfiguration :IEntityT…...
u3d动画系统五【StateMachineBehaviour类】
一.StateMachineBehaviour概述 状态机行为是一类特殊脚本。与将常规 Unity 脚本 (MonoBehaviour) 附加到单个游戏对象类似,您可以将 StateMachineBehaviour 脚本附加到状态机中的单个状态。因此可编写一些将在状态机进入、退出或保持在特定状态时执行的代码。这意味…...
IS-IS协议
IS-IS协议介绍 IS-IS(Intermediate System to Intermediate System)协议是一种链路状态的内部网关协议(IGP),用于在同一个自治系统(Autonomous System, AS)内部的路由器之间交换路由信息。IS-I…...
使用C++实现RSA加密解密
一,RSA简介。 RSA,一种非对称加密方式。是目前为止最有影响力的加密算法之一,而且是第一个同时应用于加密和数字签名的算法。 其原理为:两个大素数相乘容易,但是若想将两个大素数相乘的积再分解为两个原始的素数很难…...
C++归并与快速
快排 #include<bits/stdc.h> #include<algorithm> using namespace std; void f(int,int); void cl(int,int,int); void q(int,int); int a[211]; int n; int main(){cin>>n;for(int i0;i<n;i){cin>>a[i];}q(0,n-1);for(int i0;i<n;i){cout<…...
金蝶云苍穹踩过的坑(慢慢更新)
IDEA不能用最新版,不然搜不到金蝶的插件。 我用的是2024.1.7/2023.1.7 IDEA里增加金蝶插件库的地址也变了,现在是 https://tool.kingdee.com/kddt/idea-updatePlugins.xml 金蝶云苍穹部署在服务器 MAC本地IDEA调试的时候,登录N次能成功一次…...
AndroidStudio——安卓项目结构与文件介绍
一、AndroidStudio界面 一个安卓项目界面主要由以下几部分组成: 1.菜单栏:位于顶部,基本的各项菜单操作 2.项目结构:通常位于左侧,展示当前项目的目录结构 3.编辑窗口:通常位于中间,可以用于编…...
华为自反ACL实验
一、实验背景 做这个实验的原因是最近公司里上了三台小程序服务器,由于三台服务器的端口都映射出去了,领导要求A网段的三台服务器不能访问内网B,C网段,同时B、C网段内网用户可以访问A段的94、95、96服务器; 也就是PC4\…...
yml和xml分别代表什么
YML 和 XML 是两种不同的数据序列化格式,它们在软件开发和数据交换中有着广泛的应用: YAML (YAML Ain’t Markup Language): YAML 是一种用于数据序列化的人类可读语言。它被设计为易于阅读和编写,特别适合于配置文件。YAML 使用缩进来表示数…...
Qt多线程编程
在Qt中,多线程编程是一个常见的需求,特别是当你需要执行耗时的后台任务而不希望阻塞用户界面时。多线程编程它允许应用程序同时执行多个任务,从而提高性能和响应速度。Qt提供了一套完善的多线程支持,包括线程类(QThrea…...
springboot438校园志愿者管理系统(论文+源码)_kaic
摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统校园志愿者管理系统信息管理难度大,容错率低&…...
PostgreSQL 常用运维SQL整理
一、查询并杀会话 -- 查询会话 select pid,usename,client_addr,client_port,query_start,query,wait_event from pg_stat_activity; -- 杀会话 select pg_terminate_backend(pid号); -- 使用如下命令自动生成杀会话语句 select datid,datname,pid,usesysid,usename,applicat…...
Debezium Oracle CTAS 解析器实现:基于 ANTLR 的 CREATE TABLE AS SELECT 语句解析
Debezium Oracle CTAS 解析器实现:基于 ANTLR 的 CREATE TABLE AS SELECT 语句解析 本文详细介绍了 Debezium Oracle 连接器中如何解析 CREATE TABLE AS SELECT (CTAS) 语句,通过具体的实现代码帮助读者理解 ANTLR 监听器在复杂 SQL 解析中的应用。 文章目录 Debezium Oracle…...
从零开始学docker(五)-可用的docker镜像
最近docker镜像都不能访问,目前亲测可用的docker镜像可用,并拉取mysql测试完成。 [缺点] docker search 查不到镜像的索引列表,只能手动查询索引目录(解决方案在最后)。 linux服务器vim打开镜像文件daemon.json vim /e…...
力扣——322. 零钱兑换
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...
.Net_比对Json文件是否一致
简介 该方法用于比较两个Json文件是否完全一致,仅考虑内容若两个文件中的内容只是顺序不一致,内容是一样的,那么也代表这两个文件是相等的 实现代码 调用 using CompareJsonFiles;Console.WriteLine(" 输入信息 ");Console.WriteL…...
科研笔记:ARR 与 ACL rolling
1 ARR 介绍 ARR 提供 评审服务 —— 仅限评审 —— 对于提交的论文。评审不会针对特定会议/场所,但评审标准与传统会议的主会场长文或短文提交要求相同(如 ACL 或其他由 ACL 主办的重要会议) 2 提交论文进行 ARR 评审 提交截止日期 每两个…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
