• 1.3、python内置类型(0529)


    python的内置对象类型以及支持的运算

    python对象的相关术语

    python程序中保存的所有数据都是围绕对象这个概念展开的

    程序中存储的所有数据都是对象

    每个对象都有一个身份、一个类型和一个

    • 例如:school="MaGe Linux" 会以"MaGe Linux"创建一个字符串对象,其身份是指向它在内存中所处位置的指针(其在内存中的地址),而school就是引用这个具体位置的名称

    对象的类型也称对象的类别,用于描述对象的内部表示及它支持的方法和操作

    创建特定类型的对象时,有时也将该对象称为该类型的实例

    实例被创建后,其身份和类型就不可改变

    • 如对象值是可修改的,则称为可变对象
    • 如果对象的值不可修改,则成为不可变对象

    如果某个对象包含对其它对象的引用,则将其称为容器

    大多数对象都拥有大量特有的数据类型和方法

    • 属性:与对象相关的值
    • 方法:被调用时将在对象上执行某些操作的函数
    • 使用点(.)运算符可以访问属性和方法

    建议使用内置类型

    身份就是对象在内存中的存储位置(即id)

    任何对象都是由所谓类实例化而来

    class:通常在自定义类型时使用

    type:内置变量

    instance:实例化

    类:数据和方法

    数据:变量

    方法:函数

    类:实例化成对象

    CA:类

    IA:实例化对象

    IB:实例化对象

    IA和IB中的数据都是从类继承过来的,如果直接继承,IA和IB的数据就一样了?

    因此数据并不从类中来,而是在实例化对象时,从其他方式赋值得来的。


    对象的身份和类型

    python内置函数id()可返回一个对象的身份,即该对象在内存中的位置

    • is运算符用于比较两个对象的身份
    • type()用于返回一个对象的类型
    • 对象类型本身也是一个对象,称为对象的类
    • 该对象的定义是唯一的,且对于某类型的所有实例都是相同的
    • 所有类型对象都有一个指定的名称,可用于执行类型检查,如list、dict

    两个对象的比较:

    1. 值比较:对象中的数据是否相同

    2. 身份比较:两个变量名引用的是否为同一对象

    3. 类型比较:两个对象的类型是否相同

     


    python核心数据类型

      

    核心数据类型

    数字:int,long(长整型),float,complex,bool

    字符:str,unicode

    列表:list

    字典:dict

    元组:tuple

    文件:file

    其他类型:集合(set),冻结(不可变)集合frozenset,类类型,空(None)

     

    其他文件类工具:管道(pipes),先进先出管道(fifos),sockets

    python中处理的每一样东西都是对象,一旦创建了对象,就完成了和某些操作的集合的绑定,它所支持的操作也就确定下来了。

    python属于动态类型的语言,但对于变量类型本身来讲,python属于强类型的,只要类型不匹配,就返回异常。

    类型转换:

    str(),repr()和format()     //类型的显式转换,用于实现将非字符串转换成字符串

    at():          将非字符型数据转换为字符

    str():         做对象序列化的结果,强制转换

    repr():      做精确转换,不转换元对象

    format():  利用自己指定的特定格式,将其转换成字符串

    int():        转换成整数

    float():     转换成浮点型

     

     

    list(s):           将字串s转换成列表

    tuple(s):        将字串s转换成元组

    set(s):           将字串s转换为集合

    frozenset(s): 将字串s转换为不可变集合

    dict(d):          根据指定的键值对创建字典,其中d必须是(key,value)的元组序列,字典本身也没有顺序

    list       将字串s转换成列表

    tuple    将字串s转换成元组

    set     将字串s转换为集合

     

    dict    根据指定的键值对创建字典,其中 d 必须是(key,value)的元组序列,字典本身也没有顺序

     

    chr(x): 将整数转换为字符

    ord(x): 将字符转换为整数值

    hex(x):将整数转换成16进制字符

    bin(x): 将整数转换成2进制字符

    oct(x): 将整数转换成8进制字符

     

    chr(x)

    hex(x)

    bin(x)

     


    数字类型:

    python的数字字面量类型:布尔型,整数,浮点型,负数(字面量:看到什么就是什么)

    布尔型(首字母大写)

    • True:1
    • False:0

    数字类型为不可变类型

     

    math模块可以实现算术的高级运算


    数字类型操作

    • python使用5种数字类型:布尔型、整型、长整形、浮点型和复数,所有数字类型均为不可变类型
    • 数字操作 

    • 比较运算

                 


    序列类型

    • 序列概念

    • 列表和元组这两种数据类型是最常被用到的序列,python内建序列有六种,除了刚刚有说过的两种类型之外,还有字符串、Unicode字符串、buffer对象和最后一种xrange对象,这几种都是不常使用的。
    • 序列表示索引为非负整数的有序对象集合,包括字符串、列表和元组 
    • 字符串是字符的
    • 列表和元组是任意python对象的序列
    • 字符和元组属于不可变序列,而列表则支持插入、删除和替换元素
    • 所有序列都支持迭代

    序列类型:

    • 字符类型

    字符串字面量:把文本放入单引号、双引号或三引号中,这三种 语义没有区别、前后要一致、单双引号必须在同一行,三引号可以跨行定义

    python2中字符串字面量对应于8位字符或面向字节的数据,因此它们无法完全支持国际字符集(unicode),

    如果要使用unicode编码,则在字符之前使用字符u进行标识,如u“mageedu”(python3则不需要加u)

     

    • 文档字符串

    模块、类或函数的第一条语句是一个字符串的话,该字符串就成为文档字符串,可以使用__doc__属性来引用

    printName.__doc__              //引用函数对象,函数对象的名称和调用函数是两码事(函数本身也是作为对象存在于内存中的)

    printName().__doc__           //调用函数

    ():表示调用运算符,只有可调用的对象才能支持调用运算,但是可调用的对象可以不调用它,而是引用对象

    • 运算符:

    索引运算符:[i]          可以使用负数,即倒着取值

    切片运算符:[i:j]         对于切片运算,切片后的结果会生成为新对象(字符串不支持直接修改,切片的过程就是取出子串,放在内存当中,就会生成新的内存对象)

    扩展切片:[i:j:stride]    srtide是指定步长的

    注意:切片后的结果会生成一个新对象


    适用于所有序列的操作和方法

    s[i]:   索引运算符 

    s[i:j]: 为切片运算符

    s[i:j:stride]:为扩展切片运算符

    min(s)和max(s)只适用于能够对元素排序的序列

    sum(s)只适用于数字序列

     


    适用于可变序列的操作


    适用于字符串的操作

    python2提供两种字符串对象类型

    • 字节字符串:字节(8bit数据)序列
    • Unicode字符串:Unicode字符(16bit数据)序列
    • python可以使用32bit整数保存Unicode字符,但此为可选特性

    capitalize  和    index

    join

    replace

     

    strip      help(str.strip)    //获取帮助

  • 相关阅读:
    【LeetCode】147. Insertion Sort List
    【LeetCode】64. Minimum Path Sum
    【LeetCode】7. Reverse Integer
    【LeetCode】107. Binary Tree Level Order Traversal II (2 solutions)
    【LeetCode】114. Distinct Subsequences
    【LeetCode】35. Search Insert Position (2 solutions)
    为什么easyui的datagrid里getSelections还有getChecked只能获取一行值呢?
    IE兼容模式下 SCRIPT1028: 缺少标识符、字符串或数字
    修改easyui的easyloader的默认css目录路径
    如何在Visual Studio的查找功能中使用正则表达式?
  • 原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9318233.html
Copyright © 2020-2023  润新知