python的变量 类型和存储

2017-11-18  本文已影响0人  胖太_91bf

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

变量

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

规则:

-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其他.

上一篇下一篇

猜你喜欢

热点阅读