Python学习笔记1 - 语言的基本要素

#文中代码片段均通过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。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值