变量
A=[1,2,3,4,5,6]
=是一个赋值符号
变量名称尽量有意义,命名可读性要强,编程习惯
变量名首字不能是数字(可以是字母和下划线)
系统关键字(保留关键字),不可以用
橙色是保留关键字,紫色是易错关键字,不建议使用。
黑色可以使用,变量名区分大小写
变量没有类型限制
a=1
a=‘1’
a=(1,2,3)
一直变化(动态语言特性)
程序示例:
输入为:
a=1
b=a
a=3
print(b)
输出为:
1
输入为:
a=[1,2,3,4]
b=a
a[0]=‘1’
print(a)
print(b)
输出为:
[‘1’,2,3,4]
[‘1’,2,3,4]
int str tuple 是值类型 可变
list set dict 是引用类型 不可变
值类型是指向一个赋值,把变量指向一个数字
引用类型是原本系统的地址,更改
hellopython
输入为:
b=‘hello’
b=b+‘python’
id(b) <地址是一个hex十六进制,但现在输出为十进制>
输出为:
一个数字
输入为:
id(b)
输出为:
另一个数字
注意:‘python’[0]=‘o’ 不可行
list增加元素的方法是,元组不可以追加元素
b=[1,2,3]
b.append(4)
print(b)
[1,2,3,4]
为了维护代码的稳定性,不可变数值能用元组就用元组,编程习惯
访问元组内部list的元素
程序示例:
输入为:
a=(1,2,3,[1,2,4])
print(a[3])
输出为:
[1,2,4]
输入为:
print(a[3][2])
输出为:
4
输入为:
a=(1,2,3,[1,2,[‘a’,‘b’,‘c’]])
print(a[3][2][2])
输出为:
c
元组内部的list内的元素可以改变
运算符
变量等于更改系统内部数值
程序示例:
输入为:
a=‘hello’
a=a+‘python’
print(a)
输出为:
算数运算符
2**4 2的4次方
赋值运算符
c=1
c=c+1
和
c+=1
相同
算数运算符和赋值运算符的区别是,会改变变量值
比较(关系)运算符
返回一个bool值
程序示例:
输入为:
1==1
输出为:
True
True=1 False=0
在字母比较中,比较的是一个ascll码
但字符串并不是一个ascll码,会把每一个字母做比较
逻辑运算符
操作bool返回结果也是bool
1 and 1 =>True
‘a’ and ‘b’ =>‘b’
‘a’ or ‘b’ =>‘a’
not ‘a’ =>False
int和float 0是False 非0是True
字符串 空字符串是False 否则是True
list tuple set dict 空的是False 否则是True
and的返回规律
and是运算两个数值对比,因此
发现一真一假,就会返回假的值。
发现两个同为真的话,就会返回后面的值。
发现两个同为假的话,就会返回前面的值。
or的返回规律
or是运算两个数值一个为真就可以结束运算,因此
发现一真一假,就会返回真的值。
发现两个同为真的话,就会返回前面的值。
发现两个同为假的话,就会返回后面的值。
成员运算符
返回值是bool
a =1
a in [1,2,3,4,5] =>True
a not in [1,2,3,4,5] =>False
list tuple set string 都可以
dict 针对key的运算
b=‘a’
b in {‘c’:1} =>False
b=1
b in {‘c’:1} =>False
b=‘c’
b in {‘c’:1} =>True
身份运算符
返回值是bool
a=1
b=2
a is b =>False
a=‘hello’
b=‘world’
a is b =>False
c=‘hello’
a is c =>True
is 和==
== 是值是否相等
is是比较身份是否相等,比较内存地址id()在内存中的位置
a=(1,2,3)
b=(2,1,3)
a== b =>False
a is b =>False
a=[1,2,3]
b=[2,1,3]
a== b =>False
a is b =>False
a={1,2,3}
b={2,1,3}
a== b =>True
a is b =>False
类型的判断type
值(value判断方式==),身份(id判断方式is)和类型(type判断方式isinstance())是对象的三个特征
isinstance(a,str) a是否为str
isinstance(a,(int,str,float)) a是否为类型中的任意一个
位运算符
都把值先转换成二进制再进行运算
& 按位与
a=2 =>0b10
b=3 =>0b11
a&b =>2
<a&b =>0and1 =>0(个位),1and1 =>1(十位)
得到结果就是10(二进制)得到十进制2>
位运算不支持list tuple dict str
位运算支持set和数字类型
运算符优先级(图片仅做参考)
not and or之间的优先级关系
not>and>or