Python采用动态类型系统。在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,而是直至运行时,才做出检查。所以操作对象时可能会抛出异常。不过,虽然Python采用动态类型系统,它同时也是强类型的。Python禁止没有明确定义的操作,比如数字加字符串。
与其它面向对象语言一样,Python允许程序员定义类型。构造一个对象只需要像函数一样调用类型即可,比如,对于前面定义的Fish类型,使用Fish()。类型本身也是特殊类型type的对象(type类型本身也是type对象),这种特殊的设计允许对类型进行反射编程。
Python内置丰富的数据类型。与Java、C++相比,这些数据类型有效地减少代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x):
类型 |
描述 |
例子 |
备注 |
---|---|---|---|
str(string/字符串) |
一个由字符组成的不可更改的有序串行。 |
'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines""" |
在Python 3.x里,字符串由Unicode字符组成 |
bytes(字节) |
一个由字节组成的不可更改的有序串行。 |
b'Some ASCII'
b"Some ASCII" |
在Python 2.x里,bytes为str的一种 |
list(列表) |
可以包含多种类型的可改变的有序串行 |
[4.0, 'string', True] |
|
tuple(元组) |
可以包含多种类型的不可改变的有序串行 |
(4.0, 'string', True) |
|
set, frozenset |
与数学中集合的概念类似。无序的、每个元素唯一。 |
{4.0, 'string', True}
frozenset([4.0, 'string', True]) |
|
dict(字典) |
一个可改变的由键值对组成的无序串行。 |
{'key1': 1.0, 3: False} |
|
int(整数) |
精度不限的整数 |
42 |
|
float(浮点数) |
浮点数。精度与系统相关。 |
3.1415927 |
|
complex |
复数 |
3+2.7j |
|
bool |
逻辑值。只有两个值:真、假 |
True
False |
|
builtin_function_or_method |
自带的函数,不可更改也不可增加 |
print
input |
|
type(类型) |
显示某个值的类型,用type(x)获得 |
type(1) ->
type(‘1’) -> |
|
range |
按顺序排列的数 |
range(10)
......list(range(10))->[0,1,2,3,4,5,6,7,8,9]
range(1,10)
......list(range(1,10))->[1,2,3,4,5,6,7,8,9]
range(1,10,2)
......list(range(1,10,2))->[1,3,5,7,9] |
在Python 2.x中,range为builtin_function_or_method,获得的数为list |
除了各种数据类型,Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此,Python具备很强的动态性。
数学运算
Python使用与C、Java类似的运算符,支持整数与浮点数的数学运算。同时还支持复数运算与无穷位数(实际受限于计算机的能力)的整数运算。除了求绝对值函数abs()外,大多数数学函数处于math和cmath模块内。前者用于实数运算,而后者用于复数运算。使用时需要先导入它们,比如:
>>> import math
>>> print(math.sin(math.pi/2))
1.0
fractions模块用于支持分数运算;decimal模块用于支持高精度的浮点数运算。
Python定义求余运行a % b的值处于开区间[0, b)内,如果b是负数,开区间变为(b, 0]。这是一个很常见的定义方式。不过其实它依赖于整除的定义。为了让方程式:b * (a // b) + a % b = a恒真,整除运行需要向负无穷小方向取值。比如7 // 3的结果是2,而(-7) // 3的结果却是-3。这个算法与其它很多编程语言不一样,需要注意,它们的整除运算会向0的方向取值。
Python允许像数学的常用写法那样连着写两个比较运行符。比如a < b < c与a < b and b < c等价。C++的结果与Python不一样,首先它会先计算a < b,根据两者的大小获得0或者1两个值之一,然后再与c进行比较。
上一篇:python的函数
一级建造师二级建造师消防工程师造价工程师土建职称房地产经纪人公路检测工程师建筑八大员注册建筑师二级造价师监理工程师咨询工程师房地产估价师 城乡规划师结构工程师岩土工程师安全工程师设备监理师环境影响评价土地登记代理公路造价师公路监理师化工工程师暖通工程师给排水工程师计量工程师
执业药师执业医师卫生资格考试卫生高级职称护士资格证初级护师主管护师住院医师临床执业医师临床助理医师中医执业医师中医助理医师中西医医师中西医助理口腔执业医师口腔助理医师公共卫生医师公卫助理医师实践技能内科主治医师外科主治医师中医内科主治儿科主治医师妇产科医师西药士/师中药士/师临床检验技师临床医学理论中医理论