Python 快速入门笔记(5):语句
本系列随笔是本人的学习笔记,初学阶段难免会有理解不当之处,错误之处恳请指正。转载请注明出处: https://www.cnblogs.com/itwhite/p/12297769.html。
简介
python 中语句相关的一些基本常识:
- python 中语句末尾不需要使用分号 “;”
- if/while 等条件语句中条件表达式不需要小括号 “()”
- python 中没有 switch/case 这类语句
- print 语句在 python 2.6 以下版本不能使用括号,以后版本可以使用逗号分隔多个参数,打印时自动填充一个空格间隔
赋值语句
Python 支持多个变量同时赋值(又称为序列解包),例如:
x, y, z = 1, 2, 3 # 左右两边都是元组(元组可以省略括号) x, y, z = 1, 2 # ValueError: need more than 2 values to unpack x, y, z = 1, 2, 3, 4 # ValueError: too many values to unpack x, y, *z = 1, 2, 3, 4 # ok,python 3 支持,使用 * 接收多余的值,z 的值为 [3, 4] x, *y, z = 1, 2, 3, 4 # ok,y 的值为 [2, 3],z 的值为 4
另外 python 也支持链式赋值,例如:
x = y = 123 # 等价于 y = 123 和 x = y 两条语句顺序执行,但是 python 中不可以这样写 x = (y = 123)
if 语句
示例:
age = 3 if age >= 18: print 'adult' elif age >= 6: print 'teenager' else: print 'kid'
注意:条件表达式不需要使用小括号。
for 语句
python 中没有 C 风格的 for 语句,python 中用 “*for x in <range-or-list>:*” 的形式。
示例一:遍历某个数值区间:
for i in range(5): # 等价于 range(0, 5),range(start,stop,step) 函数中 start 和 step 是可以省略的,start 默认为 0 , step 默认为 1 print i
示例二:遍历数组元素:
names = ['Michael', 'Bob', 'Tracy'] for name in names: print name for i in range(len(names)): print names[i]
示例三:遍历元组元素:
for week in ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'): print week
示例四:遍历字典类型数据:
jack = { 'gender': 'male', 'age': 23, 'email': 'jack@gmail.com' } # 遍历所有的 keys for key in jack: print key + ': ' + str(jack[key]) # age is a number, python does not allow concatenate 'str' and 'int' objects for key in jack.keys(): print key # 遍历所有 values for value in jack.values(): print value # 遍历所有的 key/value pairs for key, value in jack.items(): print key, value
示例五:检查一个值是否可以遍历(迭代):
>>> from collections import Iterable >>> isinstance('abc', Iterable) # str是否可迭代 True >>> isinstance([1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) # 整数是否可迭代 False
while 语句
示例:
i = 0 while i < 10: print i i += 2
continue 语句 和 break 语句
Python 中的 continue 语句和 break 语句 与 C/C++ 中的相应语句作用类似:
- continue:同 C/C++,结束本次循环,进入下一次循环条件判断。
- break:同 C/C++,退出当前循环。
pass 语句
示例一:定义一个空函数:
def foo(): pass
示例二:if 语句“体”(body)为空:
if a > 5: pass
import 语句
几种常用的形式:
- import module
- from module import name
- from module import name1, name2, name3, ...
- from module import *
with 语句
Python 中的 with 语句和 JavaScript 中的 with 语句完全不一样,完全不具有参考性,如果你学过 JavaScript 的 with 语句,忘记它吧!
Python 中的 with 语句控制着一个上下文块,在进入这个上下文时(执行 with 中的子语句前)和退出上下文时(执行完 with 中的子语句后)自动执行一些操作,先看一个示例:
class Foo (object): def __init__(self): print("Foo::__init__() is called") def __enter__(self): print("Foo::__enter__() is called") return self def __exit__(self, exc_type, exc_value, exc_trackback): print("Foo::__exit__() is called") def foo(self): print("Foo::foo() is called") raise Exception with Foo() as f: # f 负责接收 __enter__() 的返回值,这里的 "as f" 是可以省略的,那就意味着后面不能使用新建 Foo 的实例 f.foo() # 输出以下内容: Foo::__init__() is called Foo::__enter__() is called Foo::foo() is called Foo::__exit__() is called
with 后面跟一个对象(表达式的结果),并且要求这个对象对应的类有实现 __enter__() 和 __exit__() 方法,在执行 with 子句之前自动调用 __enter__() 方法,在执行 with 子句之后会自动调用 __exit__() 方法。
文件操作方法 open() 函数返回的就是这样一个对象,使用 with 语句可以有效地避免忘记关闭文件(在 __exit__() 中关闭文件句柄),例如:
with open("file.txt") as f: for line in f.readlines(): print(line)
另外值得一提的是:with 的实现是会自动捕获异常的,__exit__() 方法相当于在 try 语句的 finally 子句中执行,所以即便发生了异常,也是会执行的,真的有异常也是在 __exit__() 方法执行完之后再抛出去的。
完。