#文中代码片段均通过Python 3.4验证输出
1. 分析一下最简单的语句:
a = 'a'
b = 'b'
c = a
在Python这样的动态语言中,将“=”理解为绑定更好些,即将一个变量与内存中的某个对象绑定。例如执行a = 'a'时,Python会创建一个str对象,值为‘a',然后创建a这个变量,或者说是对象引用。Python使用“=”将a与’a'绑定在一起。Python使用如下规则绑定对象和变量:
a)如果变量存在,就进行重新绑定。
b)如果变量不存在,就由“=”操作符创建变量然后绑定。
对于“=”两边都是变量的情况,c = a,首先Python会创建变量c,然后将其与a所引用的对象绑定。也就是变量a和c同时引用(绑定)了’a'这个str对象。
因此,上面语句执行之后的结果是:
print(a, b, c) #输出a, b, a
如果我修改了a的引用,使之绑定str对象‘k':
a = 'k'
那么此时各个变量的值为:
print(a, b, c) #k, b, a
可以看到,因为将a与'k'重新绑定,因此a的值为'k',此时c的值不变,仍然是'a',因为没有做重新绑定的操作。
如果我再次执行c = a操作,变量c重新绑定了,这时c和a同时绑定同一个对象'k',此时各个变量的值为:
print(a, b, c) #k, b, k
这个时候str对象‘a'没有与任何变量绑定,因此会被视为垃圾而回收。
一个简单的图来说明以上的操作:
2. Python是一种动态语言,采用动态类型机制,在任何时候,某个变量都可以重新绑定(引用)一个不同类型的对象。可以使用type()来得到一个对象的类型:
print(type('a')) #输出:<class 'str'>
3. 元组是不可变的,列表是可变的。元组使用逗号创建,包在“()”中例如('a', 'b', 'c'),空元组为空的括号()。列表使用方括号“[]”创建,空列表为[]。
元组和列表存放的实际是对象引用,而不是对象本身。
元组和列表都可以嵌套。
使用len()方法可以获取元组和列表的长度:
len(('a',)) #输出1
len(['a', 100, 'k']) #输出3
元组和列表都可以看作是序列,从而使用下标的方式来获取元素:
y = (1, 2, 3)
print(y[0]) #输出1
z = ['a', 'b', 'c']
print(z[0]) #输出a
列表也可以用下标的方式修改元素例如z[0] = 5会将列表z的第一个元素修改为5,但是如果用同样的方法修改元组,会报错“TypeError: ’tuple‘ object does not support item assigment”,我们前面说过元组一旦创建就是不可变的。
4. Python中的操作符
a) 第一种操作符是 is,用来判断两个变量是否引用相同的对象,如果变量a和b引用同一个对象,则a is b返回True,否则返回False。
b) 第二种操作符是==等比较操作符,用来比较两个变量所引用的对象的值是否相等。关于这个操作符与第一个操作符的区别可以看下面的例子:
a = [1, 2, 3] #a是一个列表对象(或者是一个元组)
b = [1, 2, 3] #b是一个列表对象(或者是一个元组)
print(a is b) #输出False
print(a == b) #输出True
a = 1 #a是一个整数(或者是字符串)
b = 1 #b是一个整数(或者是字符串)
print(a is b) #输出True
print(a ==b) #输出True
除了==操作符,还有其他的比较操作符例如<, > <=, >=等等。Python支持不等式链,例如以下代码是是正确的:
a = 2
print(0 <= a < 10) #输出True
c) 第三种操作符是成员操作符in。in操作符用来测试字符串,列表或者元组与其元素的成员关系,例如:
p = [1, 2, 3]
print(1 in p) #输出True
print(7 in p) #输出False
d) 逻辑运算符and,or,not。这里需要注意一下,在Python中,定义为False的变量、None、空序列、0等在逻辑表达式中都是False。
5 Python的运算符
a) 四则运算符+,-,*,/,即加减乘除。注意Python中的除法操作结果是产生一个浮点值,而不是像其他语言一样产生一个整数值:
print(3/2) #输出1.5
如果希望得到一个整数结果,可以使用//操作符,或者使用int()方法将结果转换为整数。
b) 四则运算符都可以跟一个=形成增强赋值操作符+=,-=, *=, /=。
6 控制结构
a) if语句的语法:
if bool_expression1:
suite1
elif bool_expression2:
suite2
...
elif bool_expressionN:
suiteN
else:
suiteElse
这里的bool_expression表示逻辑表达式,suite表示一条或者多条语句,如果没有语句需要执行,可以使用pass关键字表示空语句。if语句可以有0个或者多个分支,最后的else分支也是可选的。
b) while语句的语法:
while bool_expression:
suite
else:
else_suite
其中else部分是可选的
c) for...in语句的语法:for variable in iterable:
suite
else:
suite
其中else部分是可选的。iterable是指可以迭代的任意数据类型,例如字符串、列表、元组等等,例如:
cities = ['Beijing', 'Shanghai', 'Guangzhou']
for city in cities:
print(city)
d) 异常处理的语法:
try:
try_suite
except exception1 as variable1:
exception_suite
...
except exceptionN as variableN:
exception_suiteN
7 输入和输出
Python 3使用input()函数来获取用户的输入,使用print()函数来讲结果打印到输出。
8 创建函数
创建函数的语法:
def functionName(args):
suite
其中的args是可选的,如果有多个参数需要使用逗号分隔。每个函数都有返回值,如果没有return语句,默认返回是None。