2018-11-22

基本数据类型

int

创建对象方式

创建对象的两种方式

int a =1
int a = int(1)

实际调用的方法
__init__()

拓展

base

直接把字符串解析为数字,跟10的效果一样
int("11",0)
以二进制的形式解析字符串
int("11",2)

__call__

对象实例化时调用的方法

class Dog:
    def __init__(self):
        print("dog coming")
    def __call__(self):
        print("i'm invoked")
        
dog = Dog()  #dog coming
dog()   #i'm invoked
int类型长度

2位二进制表示的最大数是2^2 -1 ,因为第三位的数是2^2次方
最大数除以2,32位表示最大正数是2^32-1
正负表示-2^31 ~ 2^31-0.5(估计是四舍五入,直接减1算了)
32位表示范围是-2^31 ~ 2^31-1
64位表示范围是-2^63 ~ 2^63-1

近似于无限

a = int(2**64)
print(a)

#18446744073709551616

内存分析

引用对象,用的一块内存
n1=2 n2=n1

-5~257

如果很多数都是2
n1=2 n2=2...n1000=2每块用的内存不同,浪费
python优化,这个区间的数n1000n1的内存空间一样
内存地址通过id(i)验证

a = int(1)
c = int(1)
b = int(345)
print(id(a),id(c),id(b))
#140406456890528 140406456890528 140406437991216

str

两种创建方式

st = "abc" st = str("abc")

参数

字符与字节

一个字节,是8位;一个中文三个字节,可以用最多两位16进制表示
2**8 -1 == 16**2 -1

如果是utf-8编码的,就以字符(默认三个字节)取出

st = "好人"
#st = st.encode("gbk")
for i in st:
    print(i)

#好
#人

如果是其他编码(如GBK)的,就每次两个字节取出


st = "好人"
st = st.encode("gbk")
for i in st:
    print(i)

#186
#195
#200
#203
互相转换

字符转字节

st = "好人"
b = bytes(st,encoding="utf-8")
print(b)

#b'\xe5\xa5\xbd\xe4\xba\xba'

字节转字符

st = "好人"
b = bytes(st,encoding="utf-8")
name = str(b,encoding="utf-8")
print(name)
#好人

两台服务器互相发送消息都是通过字节发送

list

两种创建方式

li = [1,2] li=list()

参数

st = "好人"
li = list(st)

m = {"firstname":"好","lastname":"人"}
li2 = list(m)
print(li) # ['好', '人']
#默认只iterate字典的keys
print(li2) # ['firstname', 'lastname']

方法拾遗

清空
clear

li = [1,2]
li.clear()
print(li)
#[]

扩展
extend

li = [1,2]
li2 = [3,4]
li.extend(li2)
print(li)

#[1, 2, 3, 4]

翻转
reverse

li = [1,2]
li.reverse()
print(li)
#[2, 1]

插入
insert

li = [1,2]
li.insert(0,4)
print(li)
#[4, 1, 2]

猜你喜欢

转载自www.cnblogs.com/yovya/p/10004396.html
今日推荐