Python 是强类型的动态脚本语言
好多人对python到底是强语言类型还是弱语言类型存在误解,其实,是否是强类型语言只需要一句话就可以判别,
强类型:不允许不同类型相加。例如:整形+字符串会报类型错误。
动态:不使用显示数据类型声明,且确定一个变量的类型是在第一次给它赋值的时候。
脚本语言:一般是解释性语言,运行代码只需要一个解释器,不需要编辑。
强弱是对类型而言的。
强类型,你有一个值之后这个值是什么类型是确定,比如n=’1’,n的类型是确定的(字符串),因此你不能在Python做n=’3’ m=n+1运算。而弱类型就不是这样的,值的类型可以在需要的时候再去确定,比如PHP里面你可以$n=’3’; $m=$n+1,运算的时候’3’就可以当作整型来进行计算。
弱类型使用会灵活些,但有时候也会因为这种灵活而带来一些歧义,相比而已,强类型就更严谨了。
理解变量在计算机内存中的表示也非常重要。当我们写:
a = ‘ABC’
时,Python解释器干了两件事情:
在内存中创建了一个’ABC’的字符串;
在内存中创建了一个名为a的变量,并把它指向’ABC’。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据
python 基本数据类型
数字 字符串 列表 元组 字典 集合
数字 布尔型 :True false
Python的浮点型不区分单精度和双精度
python的浮点型数据在内存中占24个字节
Python原生浮点数类型只有一种,叫float,大小为24个字节(我这里Python3.6是这样,别的版本不清楚),本身就是双精度(你打个特别长的小数,最后它会给你截止到15-16位有效数字,这是双精度浮点数的典型特征),不论你是多短的浮点数都是如此
Python和别的语言不一样,每个变量都是对象,而对象里有各种杂七杂八的属性方法,所以内存占用比其他语言大得多
python序列
• 序列是一块用来存放多个值的连续内存空间。常见的序列有列表、元组、字典和集合。
• 可变与不可变特性
• 可变:列表、字典和集合
• 不可变:元组
• 有序与无序特性
• 有序:列表、元组和字典
• 无序:集合
• 上述序列结构中并不一定要求所有元素都是相同类型的
• 可以利用集合来完成去重处理
• 可以利用字典的哈希特性来完成大数据量的查找和统计的速度
• 列表推导式的功能要重点贯彻
如果希望内存占用更小,而有用单精度的需求,建议使用numpy等第三方库,可以提供对变量类型大小的控制。
数据类型的可变与不可变特性
不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种
数据类型,就称不可变数据类型。
• 可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数
据类型,就称可变数据类型。
• 不可变数据类型: 值相等内存空间地址同
• 数字
• 字符串
• 元组
• 可变数据类型 值相等内存空间地址不同
• 列表
• 字典
• 集合1
2
3
4
5import sys
x=[123,12]
y=[123,12]
print(id(x))
print(id(y))
值相等地址空间不同
python循环
1 | money=int(input("输入")) |
python格式化输出
https://www.cnblogs.com/lovejh/p/9201219.html
相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’
使用方法由两种:b.format(a)和format(a,b)。1
21 >>> print('{} {}'.format('hello','world')) # 不带字段
2 hello world
python格式化字符
1 | 格式 描述 |
print(“float占8位留2位小数:{:8.2f}——默认右对齐”.format(1192.68123))
print(“float占18位留2位小数:{:18.2f}——默认右对齐”.format(1192.68123))
print(“float占18位留2位小数:{:>18.2f}——右对齐”.format(1192.68123))
print(“float占18位留2位小数:{:<18.2f}——左对齐”.format(1192.68123))
print(“float占18位留2位小数:{:^18.2f}——居中对齐”.format(1192.68123))
print(“float留2位小数:{:.2f}——默认右对齐”.format(1192.68123))
print(“float留2位小数:{:>.2f}——右对齐”.format(1192.68123))
print(“float留2位小数:{:<.2f}——左对齐”.format(1192.68123))
print(“float留2位小数:{:<+.2f}——左对齐带符号”.format(1192.68123))
print(“float留2位小数:{:<.2%}——左对齐百分比形式”.format(0.6812345))
print(“int占8位:{:<8d}——左对齐”.format(1192))
print(“int占8位:{:0<8d}——左对齐补0”.format(1192))
print(“int占8位:{:x<8d}——左对齐补x”.format(1192))
print(“int占8位:{:中<8d}——左对齐补中”.format(1192))
print(“int占8位:{:8d}——默认右对齐”.format(1192))
print(“int占8位:{:8d}——默认右对齐”.format(1192))
print(“int占22位:{:22e}——默认右对齐科学计数法”.format(1230000))
`