变量与运算符
1. 初识标准输出函数:
print('要打印的东西', 1)
要打印的东西 1
注:多个数据要用 ,逗号分开(逗号自带一个空格)
2. 变量:
变量是关联一个对象的符号
- 变量名的命名方法:
注:python变量名区分大小写,标识符的正则表达式:[A-Za-z][A-Za-z0-9]*
- 变量名必须是一个标识符
- 变量名必须为字母或下划线开头,后跟字母或下划线或数字
- 不能用python的关键字
python的关键字:None, True, False, is, del, if, elif, pass, not,⋯⋯⋯⋯
name = 'zhangsan' # 变量name 绑定字符串对象zhangsan
mingzi = name # 这条语言相当于变量mingzi 向变量name 问路后绑定到字符串对象zhangsan
name = 'lisi' # 变量name 改变了绑定关系,两个变量从此没有关系
name
'lisi'
mingzi
'zhangsan'
python中关联、绑定、引用的含义
python中,变量没有类型,不需要声明,每个变量在使用之前都必须赋值,变量赋值以后该变量才会被创建
python中,一个变量与一个对象相关联,关联/绑定/引用,都是指变量和一个对象的关联关系
python中变量不存储任何数据,没有任何数据类型,类型是指变量所指的内存中对象的类型
3. 基础运算符
1. 算术运算符 operator:
+ 加法
- 减法
* 乘法
/ 除法
// 地板除floordiv(python 2.3之后)
% 求余
** 幂运算
- / 除法得到的是浮点型的数,不会丢弃小数部分
8 / 2
4.0
1 / 3 #(精确到小数点后16位)
0.3333333333333333
- // 地板除是将除法得到的数去掉小数部分向下取整
7 // 3
2
3.25 // 1.5
2.0
-5 // 3
-2
- % 求余
7 % 3
1
3.25 % 1.5
0.25
- ** 幂运算
格式:x ** y # 意为x的y次方
4 ** 2
16
3.0 ** 4.0
81.0
算数运算符的优先级
同优先级自左向右
** * / % // + -
括号分组子表达式
用() 可以将表达式分组,() 内部的表达式先进行计算
混合类型自动升级:
1 + 2.14 # 整型数与浮点型数的运算,返回类型为浮点数
3.14
2. 正负号运算符:一元运算符
语法:
+ x
- y
a = 5
b = -a
b
-5
c1 = (2 - 3j)
c2 = -c1
c2
(-2+3j)
3. 赋值运算符
z = x + y # 将 a + b 的运算结果赋值为 c
y += x # 等同于y = y + x
y -= x # 等同于y = y - x
y *= x # 等同于y = y * x
y /= x # 等同于y = y / x
y //= x # 等同于y = y // x
y %= x # 等同于y = y % x
y **= x # 等同于y = y ** x
4. 比较运算符
比较运算符返回布尔类型的值 True/False
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于(<>仅用于python2中)
语法:
左表达式 < 右表达式
实数可以比较大小,复数不能比较大小
1 < 2
True
5. 布尔运算:
- 布尔"非"操作 not(取反)
对x进行布尔取非操作,如bool(x)为True,则返回False,否则返回True
语法:
not X # x表示一个值
not True
False
- 布尔"与"操作 and
优先返回假值对象(谁为假就选谁),当x的布尔值为假False时,返回x,否则返回y
语法:
x and y
- 布尔"或"操作 or
优先返回真值对象,当x为True时,返回x,否则返回y
语法:
x or y
6. 位运算:
位运算一般只对整型数进行操作; bit(位)、byte(字节)、1byte = 2bit
运算符:
& 位与
| 位或
^ 位异或
<< 左移
>> 右移
~ 求反
- & 位与
格式:表达式x & 表达式y
作用:按位操作
1、两个对应的位为1,则结果为1
2、两个对应的位只要有一个为0,则结果为0
10 & 12
8
0b1010
0b1100
--------
0b1000
& 运算可以用于判断给定整数奇偶数,因为奇数二进制的最后一位是 1,所以奇数 & 1,恒等于 1,
偶数二进制的最后一位是 0,所以偶数 & 1,恒等于 0。使用这种方法比 % 运算速度快
- | 位或
格式:表达式x | 表达式y
作用:按位操作
1、两个对应的位为0,则结果为0
2、两个对应的位只要有一个为1,则结果为1
10 | 12
14
0b1010
0b1100
--------
0b1110
- ^ 位异或
格式:表达式x ^ 表达式y
作用:按位操作
1、两个对应的位不同,则结果为1
2、两个对应的位相同,则结果为0
10 ^ 12
6
0b1010
0b1100
--------
0b0110
- ^ 运算可以用于在不使用临时变量的情况下,交换两个数字
x, y = 2, 3
x = x ^ y
y = x ^ y
x = x ^ y
# 更简单的办法
x, y = 2, 3
x, y = y, x
<<
左移运算:(左移几位相当于在原数上乘以几个2,在python 中不会溢出)
格式:表达式x << 整数表达式y
作用:将x的二进制,按位向左移动y位,低位补零
0b0110 << 1
12
0b0110 << 2
24
0b0110 << 3
48
>>
右移运算:(在不溢出的情况下,右移几位相当于在原数上除以几个2)
格式:表达式x >> 整数表达式y
作用:将x的二进制,按位向右移动y位,低位溢出丢弃
0b0110 >> 1
3
0b0110 >> 2
1
0b0110 >> 3
0
- ~ 求反
格式:~ 表达式
说明:-1 求反 0
0 求反 1
计算机的负数是用补码形式表示的
练习:输入一个正整数存于x内,用移位累加的方法求x的5倍是多少?(不允许用*号运算符)
x = int(input("请输入一个整数:"))
print((x << 2) + x)
请输入一个整数:1
5
7. 身份运算符
is:判断两个变量是否绑定同一个对象,当绑定同一个对象时返回True,否则返回False。
is not 的返回值与is的返回值相反
语法:
x is y
x is not y
a = 3000
b = 1000 + 2000
print(a is b)
print(a is not b)
b = a
print(a is b)
False
True
True
注:对于CPython 整数-5至256用于存于内存中,不会释放并一直重复使用
id() 函数用于获取对象内存地址
a = 3
b = 1+2
print(a is b)
print(id(3))
print(id(2+1))
True
4337966832
4337966832
4. 内置函数(2)
- type() 函数
内置的 type() 函数可以用来查询变量所指的对象类型
- isinstance()函数
用isinstance(变量, 数据类型),返回bool值
type() 不会认为子类是一种父类类型, isinstance() 会认为子类是一种父类类型
同名公众号: 庄AC