01.Python-变量、数据类型、运算符

风格指南

  • Python风格指南

注释

注释解释器不会去执行,直接跳过

注释的写法

  • 行注释:以井号(#)开头 可以单独行,也可以在代码后面
  • 块注释:以三个单引号或者双引号开头并结束,中间可以包裹多行内容
# 这里是行注释,机器不会运行
print("hello word")
"""
这里是块注释
可以写很多行
...
"""

注释原则

  • 复杂代码注释
  • 注释不是越多越好
  • 建立有效的沟通

变量

变量就是一个可以重复使用的量

变量的命名

  • 变量名只能包含字母、数字和下划线,变量名字可以使用字母或者下划线开头,但不可以使用数字开头。如 1_message
  • 变量名不能包含空格
  • 变量名不能使用Python关键字、保留字、函数,如print
# 查看关键字方法
import  keyword  #引入关键子模块
# 打印关键字
print(keyword.kwlist)
  • 变量名应该简短且具有描述性
  • 不建议以下划线开头命名变量,因为以下划线开头的变量具有特殊含义
  • 大小写敏感,age 和 Age不一样
  • 可以使用中文,但强烈不建议使用
  • 推荐使用posix命名规则

posix命名规则

  • 多个单词使用下划线链接
  • 单词全部小写

变量的赋值

常用赋值方法

# 将10 赋值给size
size = 10
print(size)
>>>10

给多个变量赋同一个值

size1 = size2 = size3 = 10
print(size1)
>>>10
print(size2)
>>>10
print(size3)
>>>10

一行代码给多个变量赋值

size1, size2, size3 = 10, 12, 16
print(size1)
>>>10
print(size2)
>>>12
print(size3)
>>>16

变量交换

  • 普通方式
a = 10
b = 20
c = a  # 讲a变量赋值给c, 此时c的值为10
a = b  # 讲b变量复制给a, 此时a的值为20
b = c  # 讲c变量复制给b, 此时b的值为10

通过中间变量c进行变量的交换

  • 利用python定义变量的语法实现
a, b = b, a

数据类型

  • 六种标准数据类型
    • 数字 Number
    • 字符串 Str
    • 列表 List
    • 元祖 tuper
    • 字典 dict
    • 集合 set
    • 布尔值 bool
    • None

使用字符串时注意引号匹配

数字类型Number

整数 int

没有小数部分
包含正数、复数、0

浮点数 float

带小数点的数字称为浮点数

科学计数法

科学计数法在python中的表示

a = 10e2
print(a)
>>>1000.0

复数

复数在python中的表示

python中,用j/J表示复数的虚部
a = 4+3j
b = 3j
c = (3j)

字符串 str

字符串是一系列的字符,在Python中,用引号括起来的是字符串,可以使单引号,也可以是双引号。三引号可以表示多行

字符串的表示

name =  'zhangsan'
name = "zhangsan"
name = """
zhang
san
"""

列表 list

通常用来记录一些列数据

列表的创建

  • 使用一对方括号来表示空列表: [] 或者是list()
  • 使用方括号,其中的项以逗号分隔: [a], [a, b, c]
  • 其中的项成为元素
  • 元素可以是其他的任意类型
>>> l1 = []
>>> print(l1, type(l1))
[] 
>>> l2 = list()
>>> print(l2, type(l2))
[] 
>>> l3 = [1, 2, 3]
>>> print(l3, type(l3))
[1, 2, 3] 

元组 tuple

元组是不可变序列,与列表相似,区别是其中的元素不可改变

元祖的创建

  • 使用一对圆括号来表示空元组: ()
  • 使用一个后缀的逗号来表示单元组: a, 或 (a,)
  • 使用以逗号分隔的多个项: a, b, c or (a, b, c)
  • 使用内置的 tuple(): tuple() 或 tuple(iterable)

元祖只有一个元素时,最后要加一个逗号。

>>> t1 = ()
>>> t2 = 1,
>>> t3 = (1,)
>>> t4 = 1, 2, 3
>>> t5 = tuple()
>>> 
>>> print(type(t1))
    

字典 dict

  • 字典是用于储存一组或多组的数据
  • 字典是键值对形式
  • 键的名字不能重复,否则会覆盖
  • 键必须是字符串或者数字,值可以是任何类型

字典的创建

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> a == b == c == d == e
True

布尔值

  • 布尔值用来表示真假
  • 只有两个值 Ture/False
  • 在Python中,布尔值可以当做数字使用:Ture = 1, False = 0

None

  • 表示没有,返回一个空

数据类型的检测

使用type()函数进行检测

>>> a = 10
>>> b = True
>>> c = 'hello world'
>>> d = 1.01
>>> print(a, type(a))
10 
>>> print(b, type(b))
True 
>>> print(c, type(c))
hello world 
>>> print(d, type(d))
1.01 

数据类型分类

是否可变

是否可变指内容创建后,内容是否可变

  • 可变数据类型
    • 列表
    • 字典
    • 集合
  • 不可变数据类型
    • 字符串
    • 数字
    • 元组

是否容器类

容器类型数据指此类型数据可以容纳其他数据

  • 容器类型数据
    • 字符串
    • 列表
    • 元组
    • 集合
    • 字典
  • 非容器类型数据
    • 数字
    • 布尔值

数据类型的转换

数据类型转换指的是讲一种数据类型转换为另一种数据类型,目的是解决不同数据类型之间的运算问题。

自动类型转换

  • 数字与布尔值运算会将布尔值自动转为数字
>>> n = 1
>>> b = True
>>> print(n+b)
2
  • 逻辑判断时数字会自动转为布尔值
  • 整数与浮点数运算时,整数会转为浮点数

手动类型转换

通过特定的函数,可以将一种数据类型转为另一种数据类型

函数 转换后类型 可转换类型
str() 字符串 所有类型都可以
int() 整数 纯数字字符串、布尔值、浮点数,其他容器类类型不能转
float() 浮点数 纯数字字符串、布尔值、整数
bool() 布尔值 所有类型都可以
list() 列表 字符串、数组、字典(只保留键)集合
tuple() 元组 数字类型和非容器类型不能转换、容器类型可以
dict() 字典 只有特定的列表和元组可以转,要求列表中的每个元素都是一个只包含俩个元素的列表,其中第一个元素转为字典的键,第二个为值 [[1, a], [2, b], [3, c]],元组要求类似。
set() 集合 非容器类不可以转换,容器类转换后无序、去重、字典只保留键。

使用函数转换类型

  • a 为数字类型
  • b经过str()函数将a转为字符串类型
  • c经过int()函数将b转回数字类型
>>> a = 1
>>> b = str(a)
>>> c = int(b)
>>> print(b, type(b))
1 
>>> print(c, type(c))
1 

运算符

运算符的分类

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 身份运算符

算术运算符

假设变量a = 1, b = 2

运算符 描述 实例
+ 两个对象相加 a + b >>>3
- 两个对象相减 a - b >>>-1
* 两个对象相乘或者是返回若干次的字符串 a*b >>>2
/ 除法运算 b/a >>>2
// 地板除,取整 9//2 >>>4
% 取模(取余) 9%2 >>>1
** 幂运算 a**b >>>1

注意:Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可。

>>> 1/2
0
>>> 1.0/2
0.5
>>> 1/float(2)
0.5

比较运算符

假设变量a = 1, b = 2

运算符 描述 实例
== 比较连个对象是否相等 a == b >>>False
!= 比较两个对象是否不相等 a != b >>>True
> 比较x是否大于y a > b >>>False
< 比较x是否小于y a < b >>> True
>= 返回x是否大于等于y a >= b >>>Flase
<= 返回x是否小于等于y a <= b >>>True

赋值运算符

假设变量a = 1, b = 2

运算符 描述 实例
= 简单的赋值运算 c = a + b 将a + b 的运算结果赋值给c
+= 加法赋值运算 c += a 等效与 c = c + a
-+ 减法赋值运算 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算 c /= a 等效于 c = c / a
%= 取模赋值运算 c % a 等效于 c = c % a
**= 幂赋值运算 c **= a 等效于 c = c ** a
//= 地板除赋值运算 c //= a 等效于 c = c//a

逻辑运算符

运算符 描述 实例
and "与"运算,x、y全部为True返回True,否则返回Flase True and False >>>False
or "或"运算,x、y全部为Flase返回False,否则返回True True or False >>>True
not "非"运算,取反 not False >>>True

逻辑运算存在短路问题,程序一旦确定逻辑运算结果不在进行后面的代码

# 短路案例,由于提前确定了c的值为True,程序不在往下运行,不在打印"b"
def a():
    print("a")
    return True

def b():
    print("b")
    return True

c = a() or b()
print(c)
>>> a
>>> True

成员运算符

检测一个成员是否在某个实例里面

运算符 描述 实例
in 如果在序列中找到指定的值返回True,否则返回False 1 in [1, 2, 3] >>>True
not in 如果在序列中没有找到制定的值返回True,否则返回False 1 not in [1, 2, 3] >>>False

身份运算符

运算符 描述 实例
is 判断两个变量是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not 判断两个变量是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

可以简单理解为他们指向的内存地址是否相同
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。

位运算符

按位运算符是把数字看作二进制来进行计算的

二进制转换

使用bin()函数可以讲一个数字转换为二进制数字

>>> print(bin(1), '-', bin(2), '-', bin(3))
0b1 - 0b10 - 0b11

使用int()函数可以讲一个二进制转为十进制

>>> print(int(0b1), '-', int(0b10), '-', int(0b11))
1 - 2 - 3

二进制位运算

下表中变量 a 为 60,b 为 13,二进制格式如下:

运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

运算优先级

从高到底以此为:

  • 小括号内优先级最高
  • ** 指数 (最高优先级)
  • ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
  • * / % // 乘,除,取模和取整除
  • + - 加法减法
  • >> << 右移,左移运算符
  • & 位 'AND'
  • ^ | 位运算符
  • <= < > >= 比较运算符
  • <> == != 等于运算符
  • = %= /= //= -= += *= **= 赋值运算符
  • is is not 身份运算符
  • in not in 成员运算符
  • not and or 逻辑运算符

你可能感兴趣的:(01.Python-变量、数据类型、运算符)