Python是基于值来管理变量的。变量只是一个指针,指向被引用的值。每个值存储于内存,Id(<variable name>) 函数用来查看值所在的内存地址。一个值在Python中只存储一份。具有相同值得变量指向同一个地址。如下例所示:
>>> id(x)
261962112
>>> id(y)
261962112
>>> id(9)
261962112
变量x, y都指向了值9.
Pyhon跟踪程序中的每个值,记录指向(引用)该值的变量,当一个值没有被变量指向(引用)时,则Python会自动释放该值所占用的内存。
数据类型:
Python是强类型语言,但Python中的变量不需要声明,直接赋值就可以使用。Python 是动态类型语言,Python根据赋值内容自动确定变量的类型。也就是说不需要预先声明变量的类型。 变量的类型和值在赋值那一刻被初始化。 因此Python中变量的类型是随着赋值而变化的。
数字: Python 支持 五种基本数字类型,其中有三种是整数类型。真正的整型,非常大只受限于机器内存,不会出现整形数据溢出错误。
int (有符号整数)
long (长整数)
整型有十进制(234,567),十六进制(0x开头0xfa 0x23fd),八进制(以0o开头0o35,0o27),二进制(以0b开头0b0011, 0b10010)
bool (布尔值)
float (浮点值) 计算机对某些浮点数只能近似的存储。David Gay 算法。
dicimal.Decimal 精度很高适合财政计算
complex (复数)
字符串:单引号,双引号或者三引号(三个连续的单引号或双引号)表示。例:‘string’ “string” ‘’‘string’‘’ “”“string"""
当字符串本省包含单/双引号时,则字符串可以用双/单引号,可以保证字符串中的引号不产生歧义。
三引号是用来引用多行内容。每行有换行符。
字符串变量可以直接当作字符数组使用。例:str=‘abcdef’ str[0]='a'
字符串的运算符被重载:+ (字符串联接)例:str1=”abc" str2="123" 则str1+str2="abc123" ; *(字符串重复)例:str=‘abc’ 则 str*2=‘abcabc’
列表:任意数量任意类型的元素集合。可编辑。用[] 表示。例:list=['a',2,'abc']。支持下标索引访问。可以给元素重新赋值:list[2] = 'ok'
元组:任意数量任意类型的元素集合。不可编辑。用() 表示。例:tuple=('b',3,'ddd')。支持下标索引访问。不能给元素重新赋值:tuple[2]='error' 报语法错误。
字典:键值对集合。键值均可为任意类型对象。用{}表示。例:dic={1:'a',2:'b'}dic[3]='c'. dic.keys() 返回key组成的列表。
集合: set('abc') 或者 {'a','b','c'}
算术运算符:+(加),-(减),*(乘),/(浮点除法),//(取整除法,又叫地板除法),%(取余),**(乘方)
abs(x) 返回绝对值,
divmod(x,y) 以二元组的形势返回x除以y的商和余数。
pow(x,y) 计算x的y次幂。等价于**
round(x) 返回四舍五入后得到的相应整数。
round(x,n) 保留小数点后n位的四舍五入后的浮点值。
+ 在Python中被重载,可以应用于字符串的合并,列表/元组的合并。
*在Python中被重载, 可以应用字符串重复,列表/元组的重复
.属性运算符。
[]方括号运算符:用于访问序列的成员。例:list[n] 返回列表的第n个成员,序号从0开始。
+=以及+对序列类型数据进行了重载,其两边的操作数都需要是序列。例:list1+=[4]。如果写为:list1+=4 会产生一个语法错误。
比较运算符:<(小于)<=(小于等于),>(大于),>=(大于等于),==(等于),!=(不等于 C风格 推荐),<>(不等于 Pascal风格 不推荐)
逻辑运算符:and(与),or(或),not(非)
位运算:|(或),^(异或),&(与),<< (左移),>>(右移)
集合运算:|(交集),^(对称差集),&(并集)
代码块缩进:Python使用代码排版缩进来定义代码块儿。强制的缩进使得代码排版更整齐,可读性更好。连续的相邻的具有相同缩进的代码行属于同一个代码块儿。
标识符命名规则:以下划线或字母开始,包含下划线,字母和数字。Python的关键字不能用来定义 -- 变量名,函数名,模块名。
开头和结尾都使用下划线的情况,被Python用来定义了各种特殊方法和变量,要避免使用。
单一的下划线也可以作为一个变量,在Pthon交互式解释器或Python shell 内部单一的下划线代表了最后一个被评估的表达式的评估结果。在通常程序中除非特别指定,一般不用。有些程序在不关心迭代针对的具体数据项时,喜欢用_代替迭代变量:
for _ in (1,2,3,4)
print("hello")
以一个或两个下划线开头,但结尾没有下划线的情况要特殊对待: