02. 变量与数据类型

Posted juno3550

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02. 变量与数据类型相关的知识,希望对你有一定的参考价值。

1. 变量与数据类型

1.1 什么是变量

1.2 Python中的命名规范

1.3 数据类型

1.3 可变类型与不可变类型

2. Python中的“引用”概念

3. 常用的数据类型转换

 

1. 变量与数据类型

1.1 什么是变量

在Python中,存储一个数据,需要一个叫做变量的东西。

程序就是用来处理数据的,而变量就是用来存储数据的。

1 num1 = 100  # num1就是一个变量,好比一个菜篮子
2 
3 num2 = 87  # num2也是一个变量
4 
5 result = num1 + num2  # 把num1和num2这两个"菜篮子"中的数据进行累加,然后放到result变量中

 

1.2 Python中的命名规范

什么是标识符?

  • 标识符是开发人员在程序中自定义的一些符号和名称,如变量名 、函数名等。
  • 标示符由字母、下划线和数字组成,且数字不能开头

命名规范

  1. 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog

  2. 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName

  3. 程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如send_buf

 

1.3 数据类型

在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要开发者主动地声明它的类型,系统就会自动识别。

想一想,我们应该让变量占用多大的空间,保存什么样的数据?

在程序中,为了更充分地利用内存空间以及更有效率地管理内存,数据是有不同的类型的,如下所示:

  1. Numbers(数值)
    1. int(有符号整型)
    2. long(python2有,而3没有)
    3. float(浮点型)
    4. complex(复数)
  2. Boolean(布尔)
    1. True
    2. False
  3. String(字符串)
  4. List(列表)
  5. Tuple(元组)
  6. Dictionary(字典)
  7. Set(集合)

 

可以使用type(变量名),来查看变量的类型:

 1 >>> a = 1
 2 >>> type(a)
 3 <class int>
 4 >>> b = 1.0
 5 >>> type(b)
 6 <class float>
 7 >>> c = 1+1j
 8 >>> type(c)
 9 <class complex>
10 >>> d = True
11 >>> type(True)
12 <class bool>
13 >>> e = [1, 2, b]
14 >>> type(e)
15 <class list>
16 >>> f = (1, 2, b)
17 >>> type(f)
18 <class tuple>
19 >>> g = {1: a, "b": 2}
20 >>> type(g)
21 <class dict>
22 >>> h = {1, a, 2}
23 >>> type(h)
24 <class set>

 

1.4 可变类型与不可变类型

不可变类型,即其值不可改变(当变量的值发生改变时,其引用的内存地址也发生改变):

  • 数值
  • 字符串
  • 元组

可变类型,即其值可以改变(当变量的值发生改变时,其引用的内存地址不发生改变):

  • 列表
  • 字典
  • 集合
 1 >>> a = 1
 2 >>> id(a)
 3 1349380016
 4 >>> a = 2  # 此时已改变了引用的内存地址
 5 >>> id(a)
 6 1349380032
 7 >>>
 8 >>> a = "a"
 9 >>> id(a)
10 15288384
11 >>> a = "b"  # 此时已改变了引用的内存地址
12 >>> id(a)
13 15320000
14 >>>
15 >>> a = [1, 2]
16 >>> id(a)
17 51719336
18 >>> a[0] = 2  # 此时是在原有内存地址上进行修改
19 >>> a
20 [2, 2]
21 >>> id(a)
22 51719336

 

2. Python中的“引用”概念

在 python 中,值是靠引用来传递的,如下图所示:

技术图片

  • 在C语言中,变量a和变量b均各自保存着100的值;
  • 而在python中,变量a和变量b引用的是同一份(即100这个值的)内存地址。

 

可以用 id() 函数来判断两个变量是否为同一个值的引用,可以将 id 值理解为那块内存地址标示。

示例1:不可变类型的引用

 1  1 >>> a = 1
 2  2 >>> b = 1
 3  3 >>> id(a)
 4  4 1349380016
 5  5 >>> id(b)  
 6  6 1349380016  # 两个变量的id值相同
 7  7 >>> a = 2
 8  8 >>> id(a)  
 9  9 1349380032  # 变量a的id值已改变
10 10 >>> id(b)  
11 11 1349380016  # 变量b的id值未变

示例2:可变类型的引用

 1 >>> a = [1, 2]
 2 >>> b = a
 3 >>> id(a)
 4 51719368
 5 >>> id(b)
 6 51719368
 7 >>> a.append(3)
 8 >>> a
 9 [1, 2, 3]
10 >>> id(a)
11 51719368
12 >>> id(b)
13 51719368  # 变量a和变量b的id值始终一致

 

3. 常用的数据类型转换

函数说明
int(x) 将x转换为一个整数
long(x) 将x转换为一个长整数
float(x) 将x转换到一个浮点数
complex(real) 创建一个复数
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(seq) seq:要转换为列表的元组或字符串
dict(x) 将对象如(a=1, b=2, c=3)转换为一个字典
set(x) 将对象x转换为一个无序不重复的元素集合
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

示例1:

 1 >>> int("100")
 2 100
 3 >>> float(100)
 4 100.0
 5 >>> str(100.0)
 6 100.0
 7 >>> complex(100)
 8 (100+0j)
 9 >>> repr([1, 2, 3])
10 [1, 2, 3]
11 >>> eval("1+1")
12 2

 示例2:tuple()

1 >>> tuple([1, 2, 3])
2 (1, 2, 3)
3 >>> tuple("www")  # 拆分每个字符
4 (w, w, w)
5 >>> tuple({1: 2, "a": 2})  # 仅返回字典的键
6 (1, a)
7 >>> tuple((1, 2 ,3))
8 (1, 2, 3)

 示例3:list()

 1 >>> dict()  
 2 {}
 3 >>> 
 4 >>> dict({1: 2, 2: 3})  # 传一个字典
 5 {1: 2, 2: 3}
 6 >>>   
 7 >>> dict(one=2, two=3)  # 传关键字(等号前只能是字母)
 8 {one: 2, two: 3}
 9 >>> 
10 >>> dict([(1, 2), ("a", 2)])  # 传包含一个或多个元组的列表
11 {1: 2, a: 2}
12 >>> 
13 >>> dict(zip(["one", "two"], [1, 2]))  # 传zip函数
14 {one: 1, two: 2}

 示例4:set()

 1 >>> set("aabc")  # 传字符串
 2 {a, c, b}
 3 >>> 
 4 >>> set([1, 1, "a"])  # 传列表
 5 {1, a}
 6 >>> 
 7 >>> set((1, 2, 2))  # 传元组
 8 {1, 2}
 9 >>> 
10 >>> set({1, 2, 2})  # 传集合
11 {1, 2}
12 >>> 
13 >>> set({1:2, 2:3})  # 传字典,仅返回键
14 {1, 2}

 

以上是关于02. 变量与数据类型的主要内容,如果未能解决你的问题,请参考以下文章

02.数据类型常量与变量

实验二:数据类型与运算符 2基本语法与变量实训

Java基础02—变量运算符和数据类型转换

Java基础02—变量运算符和数据类型转换

阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第7节 内部类_15_类作为成员变量类型

变量 returnValue 包含的数据类型和数据值是啥? [复制]