Python学习笔记1:使用入门

第一章 问答环节

为什么使用Python

  • 软件质量:Python更注重可读性、一致性和软件质量。
  • 提高开发者效率:简洁的语法、动态类型、无需编译、内置工具包等特性大大提高开发效率。
  • 程序的可移植性:Python程序几乎可以不做任何修改就运行在所有主流计算机平台上。
  • 标准库的支持:Python内置众多预编译并可移植的功能模块。
  • 组件集成:Python脚本可通过灵活的集成机制轻松地与应用程序的其他部分进行通信。Python代码可以调用C和C++的库,也可以被C和C++所调用,可以与Java组件集成,可以与COM和.NET等框架进行通信。
  • 享受乐趣:简单易用使得Python编程成为一种乐趣而非重复劳动。

Python的缺点:慢

  • 目前Python的标准实现方式是将源代码的语句编译为字节码的形式,之后再将字节码解释运行。
  • Python已经过很多次优化,在处理某个文件或构建一个GUI界面等任务时,Python代码会立即发送至Python解释器内部已经编译过的C代码,以提高效率。
  • Python开发效率带来的效益往往比执行速度带来的损失更重要。
  • 在需要更快执行速度的工作领域,可以通过分离一部分需要优化速度的代码,将其转换为编译好的扩展,并在整个系统中使用Python脚本将这部分扩展连接起来。典型例子:NumPy,它采用双语言混编策略,将Python变为一个高效并简单易用的科学计算编程工具。

谁在使用Python

  • YouTube
  • NASA
  • 豆瓣
  • 知乎

使用Python可以做些什么

  • 系统编程
  • GUI编程
  • Internet编程
  • 组件集成:Python可以通过C/C++系统进行扩展,并能够嵌套C/C++系统的特性,使其成为一种万能胶水语言,可以脚本化处理其他系统和组件的行为。
  • 数据库编程
  • 快速原型:对于Python程序来说,使用Python或C编写的组件看起来都是一样的,所以可以利用Python做系统原型设计,之后再将组件移植到C/C++等编译语言上。
  • 数值计算和科学计算编程
  • 游戏、图像、人工智能、XML、机器人等

Python如何获得支持

  • Python拥有一个庞大且活跃的开发社区。
  • Python开发者使用一个源代码控制系统在线协同地工作(git?)。修改遵从一个正式PEP(Python Enhancement Proposal)协议并且必须经过Python的扩展回归测试系统。
  • 一个非正式的组织PSF(Python Software Foundation,Python软件基金会)负责组织会议并处理知识产权的问题。
  • 世界各地举办了大量的Python会议,O’Reilly的OSCON和PSF的PyCon是其中最大的会议。

Python有哪些技术上的优点

面向对象

  • Python是一门面向对象语言
  • Python的OOP特性使它可以对C++、Java和C#的类型进行子类的定制。
  • Python既支持面向对象变成也支持面向过程变成。

免费

  • Python的使用和分发是完全免费的。
  • 如果你愿意,甚至可以销售它的源代码。

可移植

  • Python的标准实现是有可移植的ANSI C编写的,可以在目前所有主流平台上编译和运行。

功能强大

  • 动态类型:Python在运行过程中随时跟踪对象的类型,不需要在代码中进行复杂的类型和大小的声明。
  • 自动内存管理:Python自动进行对象分配,并在对象不再使用时对其进行销毁(垃圾回收)。
  • 大型程序支持:Python包含模块、类和异常等工具,允许你使用OOP重用和定制代码。
  • 内置对象支持:Python提供了常用的数据结构作为语言基本的组成部分。
  • 内置工具:Python自带了许多强大的标准工具。
  • 库工具:Python预置了许多预编码的库工具。
  • 第三方工具

可混合

Python可以以多种方式与其他语言编写的组件“粘接”在一起,例如Python的C语言API可以让Python灵活地调用C程序。

简单易用

  • 简单
  • 小巧
  • 灵活

简单易学

  • 简单的核心语法

Python和其他语言比较起来怎么样

  • 比Tcl强大
  • 比Perl更简洁的语法和更简单的设计
  • 比Java更简单、更易于使用
  • 比C++更简单、更易于使用,但通常不与C++竞争
  • 比Visual Basic更强大也更具跨平台特性
  • 比PHP更易懂且用途更广
  • 比Ruby更加成熟

第2章 Python如何运行程序

Python解释器简介

  • 安装到机器上的Python包含2个最小组件:解释器 和 支持的
  • 解释器 是一种让Python程序(脚本、源文件、字节码)运行起来的程序。
  • 根据不同情况,解释器可采用C实现或Java实现等。

程序执行

程序员视角

  • 一个Python程序就是一个包含Python语句的文本文件。
  • Python从头至尾按照顺序一个接一个地运行文件中的语句。
  • Python文件是以.py作为其扩展名。

Python的视角

  1. 字节码编译
  2. Python虚拟机解释运行字节码
字节码编译
  • 当程序执行时,Python内部会先将源代码编译成与平台无关的字节码形式。
  • 必须纯文本的源代码,字节码的运行速度要快得多。
  • 如果Python有写入权限,那么它将把程序的字节码保存为以.pyc为扩展名的文件。
  • 如果在上次运行程序之后没有对源代码进行修改,则下次运行时,Python将会跳过字节码编译过程直接加载.pyc文件;反之,如果修改了源代码,下次运行时Python会首先重新编译字节码。
Python虚拟机(PVM)

一旦程序编译为字节码,之后的字节码发送到Python虚拟机上来执行。

执行模块的变体

Python实现的替代者

  • CPython
  • Jython
  • IronPython
  • PyPy
  • Stackless Python

执行优化工具

CPython、Jython和IronPython都是通过同样的方式实现Python语言的,即通过把源代码编译为字节码,然后在适合的虚拟机上执行这些字节码。
然而,其他的系统,如Psyco及时编译器(JIT)和Shedskin C++转换器,则试着优化基本执行模块。

冻结二进制文件

通过一些第三方工具,将Python程序转换为可执行程序

深度学习机器学习一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值