首页 > 编程语言 > 详细

关于 Python 基础

时间:2020-09-26 09:17:14      阅读:46      评论:0      收藏:0      [点我收藏+]

Python 入门

字面量和变量

  • 字面量就是一个一个的值,比如:1,2,3,4,5,6,‘HELLO’字面量所表示的意思就是它的字面的值,在程序中可以直接使用字面量
  • 变量(variable)变量可以用来保存字面量,并且变量中保存的字面量是不定的 变量本身没有任何意思,它会根据不同的字面量表示不同的意思

数据类型

数据类型指的就是变量的值得类型,也就是可以为变量赋哪些值

  • 数值
    • 整型
      • 布尔值
    • 浮点型
    • 复数
  • 字符串
  • 空值

对象(object)

  • Python是一门面向对象的语言
  • 一切皆对象!
  • 程序运行当中,所有的数据都是存储到内存当中然后再运行的!
  • 对象就是内存中专门用来存储指定数据的一块区域
  • 对象实际上就是一个容器,专门用来存储数据

对象的结构

每个对象中都要保存三种数据

  • id (标识)
    • id 用来标识对象的唯一性,每一个对象都有唯一的 id
    • 对象的 id 就相当于人的身份证号一样
    • 可以通过 id() 函数来查看对象的 id
    • id 是由解析器生成的,在 CPython 中,id 就是对象的内存地址
    • 对象一旦创建,则它的 id 永远不能再改变
  • type(类型)
    • 类型用来标识当前对象所属的类型
    • 比如:intstrfloatbool ...
    • 类型决定了对象有哪些功能
    • 通过 type() 函数来查看对象的类型
    • Python 是一门强类型的语言,对象一旦创建类型便不能修改
  • value(值)
    • 值就是对象中存储的具体的数据
    • 对于有些对象值是可以改变的
    • 对象分成两大类:可变对象 不可变对象
      • 可变对象的值可以改变
      • 不可变对象的值不能改变,之前学习的对象都是不可变对象

变量和对象

  • 对象并没有直接存储到变量中,在 Python 中变量更像是给对象起了一个别名
  • 变量中存储的不是对象的值,而是对象的 id(内存地址),当我们使用变量时,实际上就是在通过对象 id 在查找对象
  • 变量中保存的对象,只有在为变量重新赋值时才会改变
  • 变量和变量之间是相互独立的,修改一个变量不会影响另一个变量

类型转换

  • 所谓的类型转换,将一个类型的对象转换为其他对象
  • 类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象

序列

列表(list

  • 列表是 Python 中的一个对象
  • 对象(object)就是内存中专门用来存储数据的一块区域
  • 之前我们学习的对象,像数值,它只能保存一个单一的数据
  • 列表中可以保存多个有序的数据
  • 列表是用来存储对象的对象
  • 列表的使用:

序列(sequence

  • 序列是 Python 中最基本的一种数据结构
  • 数据结构指计算机中数据存储的方式
  • 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
  • 序列的分类:
    • 可变序列(序列中的元素可以改变):
      • 列表(list
    • 不可变序列(序列中的元素不能改变):
      • 字符串(str
      • 元组(tuple

可变对象

  • 每个对象中都保存了三个数据:
    • id(标识)
    • type(类型)
    • value(值)
  • 列表就是一个可变对象
  • a[0] = 10 (改对象)
    • 这个操作是在通过变量去修改对象的值
    • 这种操作不会改变变量所指向的对象
    • 当我们去修改对象时,如果有其他变量也指向了该对象,则修改也会在其他的变量中体现
  • a = [4,5,6] (改变量)
    • 这个操作是在给变量重新赋值
    • 这种操作会改变变量所指向的对象
    • 为一个变量重新赋值时,不会影响其他的变量
  • 一般只有在为变量赋值时才是修改变量,其余的都是修改对象

字典(dict

  • 字典属于一种新的数据结构,称为映射mapping
  • 字典的作用和列表类似,都是用来存储对象的容器
  • 列表存储数据的性能很好,但是查询数据的性能的很差
  • 在字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速的查找到指定的元素
  • 在查询元素时,字典的效率是非常快的
  • 在字典中可以保存多个对象,每个对象都会有一个唯一的名字
    • 这个唯一的名字,我们称其为键(key),通过 key 可以快速的查询 value
    • 这个对象,我们称其为值(value)
    • 所以字典,我们也称为叫做键值对(key-value)结构
    • 每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)

集合(set

  • 集合和列表非常相似
  • 不同点:
    • 集合中只能存储不可变对象
    • 集合中存储的对象是无序(不是按照元素的插入顺序保存)
    • 集合中不能出现重复的元素

函数

函数简介(function

  • 函数也是一个对象
  • 对象是内存中专门用来存储数据的一块区域
  • 函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次的调用
  • 创建函数:
def 函数名([形参1,形参2,...形参n]) :
    代码块
  • 函数名必须要符号标识符的规范(可以包含字母、数字、下划线、但是不能以数字开头)
  • 函数中保存的代码不会立即执行,需要调用函数代码才会执行
  • 调用函数:函数对象()
  • 定义函数一般都是要实现某种功能的

函数的参数

  • 在定义函数时,可以在函数名后的 () 中定义数量不等的形参,多个形参之间使用 , 隔开
  • 形参(形式参数),定义形参就相当于在函数内部声明了变量,但是并不赋值
  • 实参(实际参数)
    • 如果函数定义时,指定了形参,那么在调用函数时也必须传递实参,实参将会赋值给对应的形参,简单来说,有几个形参就得传几个实参

函数式编程

  • 在 Python 中,函数是一等对象
  • 一等对象一般都会具有如下特点:
    • 对象是在运行时创建的
    • 能赋值给变量或作为数据结构中的元素
    • 能作为参数传递
    • 能作为返回值返回
  • 高阶函数
    • 高阶函数至少要符合以下两个特点中的一个
      • 接收一个或多个函数作为参数
      • 将函数作为返回值返回
  • 装饰器

对象(object)

  • 对象是内存中专门用来存储数据的一块区域。
  • 对象中可以存放各种数据(比如:数字、布尔值、代码)
  • 对象由三部分组成:
    • 对象的标识(id)
    • 对象的类型(type)
    • 对象的值(value)

类(class)

  • 我们目前所学习的对象都是 Python 内置的对象
  • 但是内置对象并不能满足所有的需求,所以我们在开发中经常需要自定义一些对象
  • 类,简单理解它就相当于一个图纸。在程序中我们需要根据类来创建对象
  • 类就是对象的图纸!
  • 我们也称对象是类的实例(instance)
  • 如果多个对象是通过一个类创建的,我们称这些对象是一类对象
  • int()float()bool()str()list()dict() .... 这些都是类
  • a = int(10) 创建一个 int 类的实例 等价于 a = 10
  • 我们自定义的类都需要使用大写字母开头,使用大驼峰命名法(帕斯卡命名法)来对类命名
  • 类也是一个对象!
  • 类就是一个用来创建对象的对象!
  • 类是 type 类型的对象,定义类实际上就是定义了一个 type 类型的对象

类的定义

  • 类和对象都是对现实生活中的事物或程序中的内容的抽象
  • 实际上所有的事物都由两部分构成:
    • 数据(属性)
    • 行为(方法)
  • 在类的代码块中,我们可以定义变量函数,变量会成为该类实例的公共属性,所有的该类实例都可以通过 对象.属性名 的形式访问;函数会成为该类实例的公共方法,所有该类实例都可以通过 对象.方法名() 的形式调用方法
    • 注意:方法调用时,第一个参数由解析器自动传递,所以定义方法时,至少要定义一个形参!
  • 实例为什么能访问到类中的属性和方法:类中定义的属性和方法都是公共的,任何该类实例都可以访问
    • 属性和方法查找的流程
      • 当我们调用一个对象的属性时,解析器会先在当前对象中寻找是否含有该属性,
        • 如果有,则直接返回当前的对象的属性值,
        • 如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值,
        • 如果类对象中依然没有,则报错!
    • 类对象和实例对象中都可以保存属性(方法)
      • 如果这个属性(方法)是所有的实例共享的,则应该将其保存到类对象中
      • 如果这个属性(方法)是某个实例独有,则应该保存到实例对象中
        • 一般情况下,属性保存到实例对象中,而方法需要保存到类对象中

创建对象的流程

p1 = Person() 的运行流程

  • 创建一个变量
  • 在内存中创建一个新对象
  • __init__(self) 方法执行
  • 将对象的 id 赋值给变量

类的基本结构

class 类名([父类]) :
    公共的属性... 

    # 对象的初始化方法
    def __init__(self,...):
        ...

    # 其他的方法
    def method_1(self,...):
        ...
    def method_2(self,...):
        ...
    ...

异常和文件

异常

  • 程序在运行过程当中,不可避免的会出现一些错误,比如:
    • 使用了没有赋值过的变量
    • 使用了不存在的索引
    • 除0
    • ...
  • 这些错误在程序中,我们称其为异常。
  • 程序运行过程中,一旦出现异常将会导致程序立即终止,异常以后的代码全部都不会执行!

处理异常

程序运行时出现异常,目的并不是让我们的程序直接终止!

Python是希望在出现异常时,我们可以编写代码来对异常进行处理!

try:
    代码块(可能出现错误的语句)
except 异常类型 as 异常名:
    代码块(出现错误以后的处理方式)
else:
    代码块(没出错时要执行的语句)    
finally:
    代码块(该代码块总会执行)
  • try 是必须的 else 语句有没有都行
  • except 和 finally 至少有一个
  • 可以将可能出错的代码放入到 try 语句,这样如果代码没有错误,则会正常执行,如果出现错误,则会执行 expect 子句中的代码,这样我们就可以通过代码来处理异常,避免因为一个异常导致整个程序的终止

异常的传播(抛出异常)

  • 当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播,
    • 如果函数中没有对异常进行处理,则异常会继续向函数调用处传播,
    • 如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播
    • 直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息
  • 当程序运行过程中出现异常以后,所有的异常信息会被保存一个专门的异常对象中
    • 而异常传播时,实际上就是异常对象抛给了调用处
    • 比如:ZeroDivisionError 类的对象专门用来表示除 0 的异常
      • NameError 类的对象专门用来处理变量错误的异常
      • ....
  • 在Python为我们提供了多个异常对象

抛出异常

可以使用 raise 语句来抛出异常,raise 语句后需要跟一个 异常类异常的实例

文件(File)

  • 通过 Python 程序来对计算机中的各种文件进行增删改查的操作
  • I/O(Input / Output)
  • 操作文件的步骤:
    • 打开文件
    • 对文件进行各种操作(读、写),然后保存
    • 关闭文件

关于 Python 基础

原文:https://www.cnblogs.com/geekfx/p/13733158.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!