定义变量时,不需要定义类型,即动态语言特性
a = [1,2,3]
b = a
a[0] = '1' #a[0]相当于[1,2,3][0]='1
print b
['1', 2, 3]
a = 1
b = a
a = 3
print b
1
int str tuple元组(不可改变)值类型 list set dict(可变)引用类型,所以不同
把type当作变量 的一些问题
type = 1
type (1) #'int' object is not callable
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-b09e034f1380> in <module>()
1 type = 1
----> 2 type (1)
TypeError: 'int' object is not callable
a = 'hello'
a = a + 'python'
print a#不可改变 为何却能运算,因为新的字符串,不是改变原字符串
hellopython
#eg
b = 'hello'
id (b)
75393304L
b = b + 'python'
id (b)
82362160L
元组tuple与列表list的区别
a = [1,2,3]
id(a)
75848072L
hex(id(a))
'0x4855988L'
a[0]='1'
id(a)
75848072L
id未发生变化
a = (1,2,3)
a[0]='1'#不可改变,元组
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-5828056e5c1b> in <module>()
1 a = (1,2,3)
----> 2 a[0]='1'
TypeError: 'tuple' object does not support item assignment
b = [1,2,3]
b.append(4)
print(b)
[1, 2, 3, 4]
c=(1,2,3)
c.append(4)#与上作对比
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-14-e9fcc9da48a4> in <module>()
1 c=(1,2,3)
----> 2 c.append(4)
AttributeError: 'tuple' object has no attribute 'append'
a=(1,2,3,[1,2,4])#如何访问4?
a[3][2]='3'
a[3][2]
'3'
a
(1, 2, 3, [1, 2, '3'])
运算符
算术运算、赋值、比较
3/2
1
思维导图
#python没有自增自减
c++
File "<ipython-input-10-39edec1449c4>", line 2
c++
^
SyntaxError: invalid syntax
#ascll 用ord()
ord('a')
97
'a'>'b'
False
ord('b')
98
'abc'<'abd'#每一个字符一一比较
True
'acd'<'abe'
False
[1,2,3]<[1,2,4]
True
(1,2,3)<(1,3,2)
True
ord('0')
48
逻辑运算
True and True
True
True and False
False
True or False
True
not True
False
[1] or []
[1]
[] or [1]
[1]
'1' and ''
''
'' and '1'
''
1 and 0
0
0 and 1
0
1 and 2#都表示True 但是计算顺序使然
2
2 and 1
1
0 or 1
1
1 or 0
1
1 or 2
1
2 or 1
2
成员运算符 in /not in
判断a 是否在[]列表中
a = 1
a in [1,2,3,4,5]
True
元组 列表 集合 字典
字典的成员关系运算
b='a'
b in {'c':1}
False
b = 1
b in {'c':1}
False
b = 'c'
b in {'c':1}
True
身份运算
a = 1
b =1.0
a == b
True
a is b#身份运算,内存地址是否相同
False
#例子比较 元组 集合
a ={1,2,3}
b ={2,1,3}
a == b
True
a is b
False
对象的三个特征: 值 身份 类型
a = 'hello'
type(a) == int
False
#专门用来判断类型的运算符
isinstance(a,str)
True
isinstance(a,int)
False
#另一个用法,a 是否是元组中的类型中的一种,返回, 是
isinstance(a,(int,str,float))
True
type #不能判断对象的子对象
位运算符:都是对二进制数进行运算,把数字!当做!二进制数进行运算
a = 2#二进制为 10
b = 3# 11
a & b#每一位进行比较是否都为1,否则结果为0
# 1 0
# & 1 1
# = 1 0
2
a = 2
b = 3
a | b#每一位只要有一个1,则结果为1
# 1 0
# | 1 1
# = 1 1
3
&# 按位与
|# 按位或
~# 按位取反
<<# 左移动
>># 右移动