美文网首页
python的变量 类型和存储

python的变量 类型和存储

作者: 胖太_91bf | 来源:发表于2017-11-18 18:45 被阅读0次

    表达式(创建处理对象) => 语句 => 模块 => 程序

    变量

    创建: 第一次赋值时生成,

    规则:

    -1包含字母数字下划线
    -2 只能以字母下划线开头
    -3 不能有空格
    -4 避免python关键字和函数名
    -5 简短且有描述性
    -6 区分1 I 0 o

    类型: 变量无类型约束, 类型取决于关联对象

    共享引用: 多个变量引用一个对象

    -判断字面量是否相等: ==
    -判断地址是否相同: is
    -输出内存地址: id()
    -在python内存中预留了0到256的int数据, 当声明变量引用这些数字的时候, 他们都指向同一片内存,但是超过256, 则不能指向同一片内存

    import sys
    # 某对象被调用的次数
    sys.getrefcount()
    # 数据长度的方法python内置
    len()
    

    对象类型

    核心数据类型: 数据类型之间的转换 str(), list()

    1数字:

    特性:
    1声明 赋值 使用
    2支持表达式
    3显示: '{0:.2f}'.format(3.3333)
    4比较
    5相除 / 整型 相除会忽略浮点, 整型和浮点之间想除会议精度高的为准 例如:

      print(10 / 4 ) 
      结果为2, 其实是2.5 只是省略的浮点
    

    // 则会强制转换成整数, 整除结果即便是带浮点都是一半


    屏幕快照 2017-11-19 下午5.06.10.png

    math模块:
    -math.floor(): 向下取整3.X取 3, -3.X取 -3
    -math.trunc(): 向 0 去整, 3.X取 3, -3.X取 -3
    round(): 四舍五入全局模块
    -int : 无限精度, 只受限于内存与计算机配置
    十六进制: 0x 使用hex()方法查询十六进制字面量
    八进制: 0o 使用oct()方法查询八进制字面量
    二进制: 0b 使用bin()方法查询二进制字面量
    -float
    -Decimal:from decimal import Decimal , 一个模块可以提高浮点型的精度方法
    -Fraction

    2字符串(str):

    特性:
    1'{num}'占位符, 可以用format()方法(格式化字符串)替换, 参数可以是数字字符串变量,有几个占位符, format()就有几个参数,
    2.双引号包单引号, " ' ", 单引号里边有单引号需要转义符 \ , ' ' '
    3转义符:
    换行 \n
    退格 \b
    tab键 \t
    4忽略转义符,原始字符串r' '
    5三引号(""" ... """):用来在函数中写注释
    基本操作: (字符串方法)
    1 len()字符串长度
    2 可以进行 加法(字符串之间)+ 和乘法(乘以int用于复制字符串)* 的运算
    3 选取片段str[0:4], 截区索引0到4之间的字符不包括后边的4,str[-1]:选取最后一个,str[:]选取所有字符, str[::2]隔一个字符选一个字符,str[::-1] 翻转字符串
    4 ord('c')字符转阿斯克码 chr(55)阿斯克码转字符
    5 字符串有replace('旧','新')方法, 但不会改变原变量, 需要重新赋值
    6 str.startswith('http://')方法, 是否 以 ' ' 开头, 返回bool
    7 str.endswith()方法, 是否以 ' ' 结尾, 返回bool
    8 str.find(), 判断某个字符是否存在, 返回索引下标,没找到返回-1,相当于js中的indexOf()
    9 格式化, .format()方法![屏幕快照 2017-11-19 下午7.02.53.png]
    (https://img.haomeiwen.com/i8497957/7077219324010a42.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    10 '分隔符'.join(list): 以''里的分隔符将列表链接为字符串(字符串的split('分隔符')可以将字符串分割成数组, 以' '里的字符串为基准)

    3列表(list):

    -相当于js中的数组len()获得长度, list[]获取数据
    -list支持原位修改, list[0] = '修改后'
    特性:
    1 任意对象的有序集合
    2 通过索引下标访问元素
    3 可变长度
    4 可变序列, 可以原位改变
    列表方法:
    1 len(): 列表长度
    2 可以进行 +(连接两个list)
    3 通过list()构造函数构造出list,如果是 字符串则会把字符串上的每一个函数字符作为list的一个元素
    4 用 in 关键字去检测某个元素是否存在于list中
    5 .append(), 在list后边添加元素参数是一个元素 2 代表开二次方, 后边是3代表开3次方
    6 list的推演 [ i
    2 for i in list ] : 将list里边的数开平方后, 重新放在新数组里
    7 通过[1:2]的方式截取list的某段数据,(还是不包含后边的)
    8 list的乘法 * 是复制里边的元素, 并不是复制list
    9 .extend(), 在list后面添加元素, 参数是list, 不同于append(), extend()可以添加一个list
    10 .sort(), 从小到大排序
    11 .reverse(),倒序
    12 .pop(), 删除list的最后一个元素, 返回值为删除的这个元素
    13 del(l[0]) 删除某个元素, 是全局方法,
    14 .index(), 通过元素, 查找其下标索引,参数是list元素
    15 .count(), 查看某元素出现次数,,参数是list元素
    16 .copy(), 赋值list列表返回一个list的复制版本

    # 因为list是引用类型, 并且可以原位改变so,
    l1 = [1,2,2,23,4];
    l2 = l1;
    这样赋值,  当l2改变的时候, l1也会跟着改变, 这个特性有些时候是需要的, 当不需要时, 有两种解决方案:
    l2 = l1[:] 和
    l3 = l1.copy()
    

    4字典表(dict):

    -相当于js中的json,key可以使变量,不可以用.去访问数据, get(key, [value])获取索引的value(如果没有此key,可以有第二个可选参数,作为默认value)和 dict[]方式,
    特性:
    支持原位改变
    dict的key必须是不支持原位改变的元素, 可以使字符串和元祖
    支持嵌套
    声明方式:
    d = dist(name='kay',do='love',lover:'snowin')
    dict方法:
    1 .get();第一个参数为dict的key, 第二个参数为一个value,当key没有对应的val时候,可以返回, 若key有val则忽略第二个参数
    2 .update(),参数哦为一个dist, 可以合并两个dist
    3 .pop(key),删除某个key的value,并返回这个被删除的value
    4 .keys(), 将dict的key统计到一个类list中不支持排序
    5 .values(), 将dict的value统计到一个类list中,不支持排序
    6 .items(), 将dict的各组key value整合成一个tuple为元素的数组
    7 dict的排序1,sorted(d.keys()) 并循环, 2 list(d.keys()).sort() 并循环

    5元祖(tuple):

    -类似于list, 但包裹在()中
    特性:
    任意对象的有序集合
    通过下标访问
    属于"不可变"类型
    长度固定, 任意类型,任意嵌套
    t = (40)无法生成元祖类型, 需要这么写: t = (40,)
    元祖之间可以 +
    方法:
    .index(val);检索下标
    .count(val), 统计某个元素的数量
    namedtuple:
    引入模块:from collections import namedtuple
    yg = namedtuple('yg',['name','age','gongzi']);'name'的值就是'yg'
    kay = yg('kay',age=30,gongzi=99999);

    6文件(file):

    全局方法:file = open('文件名', mode)来读取本地文件,
    mode(str)包含: r:打开文件, w:写入文件, a: 写入不替换(添加), b: 二进制文件, +: 可读写
    方法:
      read():读取所有的内容
      readline(): 读取第一行的内容
      readlines(): 读取所有行的内容, 集合为一个数组
      close(): 关闭文档
    

    pickle模块存取python对象: .dump(data, file)方法存入python对象为二进制, .load(file)方法, 读取并还原python对象
    with open('XXX.txt') as f;
    for line in f.readlines()
    print(line)
    这种方式, 在跳出缩进以后, 就会自动关闭文档, 不用再写.close()

    7集合(set):

    序列: 
        可变序列: list
         不可变序列: str , tuple ,字节数组
    映射: 字典表 dict
    集合:
    

    8布尔(Boolean): bool其实就是int类型可以进行运算 屏幕快照 2017-11-19 下午6.33.31.png

    -True: 就是 1 ,
    -False: 就是 0

    9空(none):

    10程序单元:

    -函数(function)
    -模块
    -类(class)

    11其他.

    相关文章

      网友评论

          本文标题:python的变量 类型和存储

          本文链接:https://www.haomeiwen.com/subject/ltzevxtx.html