变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。
基于变量的数据类型,解释器会分配制定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
变量赋值
Python中的变量赋值不需要声明类型。
每个变量在内存中的创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后才会被创建。
= 用来给变量赋值,= 运算符左边是变量名,右边是存储在变量中的值,例如:
1 2 3 4 5 6 | #!/usr/bin/python
#-*- coding:UTF-8 -*-
counter = 100 #整形变量赋值
pi = 3.14 #浮点型变量赋值
name = "张三" #字符型变量赋值
|
多个变量赋值
Python允许你同时为多个相同类型变量赋同一个值:
a = b =c = 1
你也可以为多个不同类型变量赋多个值:
a, b ,c = 1, 3.14, "张三"
Python标准数据类型
在内存中存储的数据可以有多种类型,Python定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准数据类型:
- Numbers(数字)
- String (字符串)
- List(列表)
- Tuple(元组)
-
Dictionary(字典)
-
Python数字
Python支持四种不同的数字类型:
-
int (整型)
-
long (长整型|也可以代表八进制和十六进制)
长整型也可以用小写“L”,但是还是建议使用大写“L",避免与数字1混淆
-
float (浮点型)
-
complex (复数)
复数由实数部分和虚数部分组成,可以用a+bj,或者complex(a, b)表示,复数的实数部a和虚数部bj都是浮点型
-
Python字符串
字符串或串(String)是由数字,字母,下划线组成的一串字符,它是编程语言中表示文本的数据类型
Python的字符串列表有2种取值顺序:
-
从左到右索引默认从0开始,最大范围是字符串长度减1
-
从右到左索引默认从-1开始,最大范围是字符串开头
###### 字符串的截取、连接和重复操作
变量名[头下标:尾下标]
标识从变量中截取从头下标到尾下标(包括头下标不包含尾下标)之间的字符,示例:
s = 'ohelloworld!'
s[1:5]的结果为hello
+加号运算符用于字符串连接运算;*星号运算符用于重复操作,示例:
``` #!/usr/bin/python #-- coding: UTF-8 --
str = 'Hello World!'
print str #输出完整字符串 print str[0] #输出字符串中的第一个字符 print str[2:5] #输出字符串中第三个至第五个之间的字符串 print str[2:] #输出从第三个字符开始的字符串 print str * 2 #输出字符串2次 print str + "TEST" #输出连接的字符串 ```
以上示例输出结果:
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
-
Python列表
List(列表)是Python中使用最频繁的数据类型。
List可以完成大多数集合类的数据结构实现。它支持字符、数字、字符串甚至可以抱汗列表(即嵌套)。
列表用[]标识,是Python最通用的复合数据类型
###### 列表的截取、连接和重复操作
变量名[头下标:尾下标]
标识从变量中截取从头下标到尾下标(包括头下标不包含尾下标)之间的内容
+加号运算符用于列表连接运算;*星号运算符用于重复操作,示例:
``` #!/usr/bin/python #-- coding: UTF-8 --
list = ['jack', '123', '3.14', 'rose', '70.2'] tinylist = [123, 'rose']
print list # 输出完整列表 print list[0] # 输出列表的第一个元素 print list[1:3] # 输出列表的第二个至第三个元素 print list[2:] # 输出列表从第二个开始至末尾的所有元素 print tinylist * 2 # 输出列表两次 print list + tinylist # 输出组合的列表 ```
以上示例输出结果:
['jack', '123', '3.14', 'rose', '70.2']
jack
['123', '3.14']
['3.14', 'rose', '70.2']
[123, 'rose',123, 'rose']
['jack', '123', '3.14', 'rose', '70.2', 123, 'rose']
-
Python元组
元组用()标识,内部元素用逗号隔开。元组不能二次赋值,相当于只读列表。
元组也可以进行切片,连接等操作:
``` #!/usr/bin/python # -- coding: UTF-8 --
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john')
print tuple # 输出完整元组 print tuple[0] # 输出元组的第一个元素 print tuple[1:3] # 输出第二个至第三个的元素 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素 print tinytuple * 2 # 输出元组两次 print tuple + tinytuple # 打印组合的元组 ```
以上示例输出结果:
('runoob', 786, 2.23, 'john', 70.2)
runoob
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
元组不允许重新赋值操作,而列表是允许重新赋值的:
``` #!/usr/bin/python # -- coding: UTF-8 --
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) list = [ 'runoob', 786 , 2.23, 'john', 70.2 ] tuple[2] = 1000 # 元组中重新赋值是非法的 list[2] = 1000 # 列表中是合法的 ```
-
Python字典
字典dictionary是除list列表外Python中最灵活的内置数据结构类型。
列表list是有序的对象集合,字典dictionary是无序的对象合集,两者之间的区别在于:字典中的元素是通过键值对来存取的,而不是通过偏移存取。
字典dictionary用{}标识,字典由索引key和对应的值value组成。示例:
``` #!/usr/bin/python #-- coding:UTF-8 --
dict = {} dict['one'] = "This is one" dict[2] = "This is two"
tinydict = {'name': 'jack', 'code':1000, 'dept':'sales'}
print dict['one'] # 输出键值为’one‘的值 print dict[2] # 输出键值为2 的值 print tinydict # 输出完整的字典tinydict print tinydict.key() # 输出所有的键值key print tinydict.values() # 输出所有的值values ```
输出结果为:
This is one
this is two
{'dept': 'sales', 'code': 6734, 'name': 'jack'}
['dept', 'code', 'name']
['sales', 1000, 'jack']
-
Python数据类型转换
数据类型的转换只需要将数据类型作为函数名即可。
以下几个内置函数可以执行数据类型之间的转换,这些函数返回一个新的对象,标识转换的值:
| 描述 | 函数 |
|---|---|
| 将x转换为一个整数 | int(x) |
| 将x转换为一个长整数 | long(x) |
| 将x转换为一个浮点数 | float(x) |
| 创建一个复数 | complex(real,imag) |
| 将对象x转换为字符串 | str(x) |
| 将对象x转换为表达式字符串 | repr(x) |
| 用来计算在字符串中的有效python表达式,并返回一个对象 | eval(str) |
| 将序列s转换为一个元组 | tuple(s) |
| 将序列s转换为一个列表 | list(s) |
| 转换为可变集合 | set(s) |
| 创建一个字典,d必须是一个序列(key,value)元组 | dict(d) |
| 转换为不可变集合 | frozenset(s) |
| 将一个整数转换为一个字符 | chr(x) |
| 将一个整数转换为unicode字符 | unichr(x) |
| 将一个字符转换为它的整数值 | ord(x) |
| 将一个整数转换为一个十六进制字符串 | hex(x) |
| 将一个整数转换为一个八进制字符串 | oct(x) |
-
其他问题
Python的所有数据类型都是类,可以通过函数type()来查看该变量的数据类型
```
n=1 type(n)
n="runoob" type(n) ```
此处还可以用isinstance()函数来判断:
a = 111
isinstance(a, int)
True
isinstance()和type()的区别在于:
``` class A: pass
class B(A): pass
isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False ```
type()不会认为子类是一种父类类型。 isinstance()会认为子类是一种父类类型。