变量 -> 名字
定义一个变量: A = [1, 2, 3, 4, 5, 6] B = [1, 2, 3] 赋值
然后运算: A*3 + B + A
变量名最好有意义 而不是简单的 abcd 命名可读性要强
变量:避免写很长的数据
变量的命名规则
1.变量名只能使用数字、字母、下划线
2.系统保留关键值不能用在变量名 (网上查)
3.最好不要采用内建函数名 (防止功能被覆盖)
4.变量名区分大小写
5.变量本身是没有类型的,类型通过赋值的类型确定 (其他静态语言有)(动态语言最大特性)
6.变量名首字符不能是数字
值类型和引用类型
int、str、tuple 值类型
list、set、dict 引用类型
个人理解就是:
int、str、tuple等类型数据不可变,改变赋值的时候,新建内存空间。
list、set、dict 等类型数据可变,改变赋值的时候,扩展内存空间。
区别:
id 函数 显示某个变量在内存中的地址
b = ”hello"
id(b)
b=b + "python"
id(b)
内存地址改变,新建内存空间
可变类型的查看地址同理
列表的可变和元组的不可变
a = [1, 2, 3]
id(a) # 用16进制表示好一点 hex
a[0] = '1'
id(a) # 没改变
对列表可采用的操作:append、insert、pop
以上操作元组都不能用,元组内嵌列表能用,但是那时的列表id并未改变,而元组依旧未变。
# id 不变,对应tuple元素未改变
a = (1, 2, 3, [1, 2, 3, 4])
id(a), id(a[3])
a[3].append(5)
id(a), id(a[3])
tuple:有利于代码稳定性。能用尽量用。
运算符号
list_object * 3 代表将list每个元素依次重复3次追加给原list
算数运算符
+ - * / // % **
1.算数运算符
2.赋值运算符 -= += *=
3.比较运算符 > <
4.逻辑运算符 and or not
5.成员运算符 in
- 身份运算符 is
7.位运算符 & | ^ ~
(具体的另外一篇文章有)
赋值运算符
算数运算符基础上加个等号
概念:
c = 1
c = c + 1
等价于
c += 1
以此类推
重要点在赋值
比较(关系)运算符
关键点在于运算结果返回布尔值
数字、字符串、布尔类型都能比较
不止是数值才能做比较运算
注意运算优先级,比较优先级大于赋值
b = 1
b += b >= 1 -> b >= 1 True -> 1
字符串也能进行,单个字符比较ascii码大小。多个字符的字符串逐个比较,直到比较出大小。
列表、元组、字典、集合也是逐个比较,直到比较出大小
逻辑运算符
and(且) or(或) not(非)
and 第一个为真,则返回第一个,否则返回第二个。
。。。
操作类型和返回值都是布尔类型。
False: 0, "", [], (), {}, set(())
具体查看另一篇文章。
成员运算符 in not in
用来判断一个元素是否在一组元素内,返回值依旧是布尔类型。
身份运算符 is is not
返回结果也是布尔值
重点在比较内存地址是否相等。采用 id 函数
对象的三个特征:值, 身份, 类型
判断类型 type(a) == int, 或者 isinstance(a, int) int可以用包含多种类型的tuple代替
位运算符
& 按位与运算
| 按位或运算
^ 按位异或运算符
~ 按位取反运算符
<< 左移运算符
>> 右移运算符
把数字转换成二进制数进行计算。结果转换为对应进制