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
View Code

示例二:遍历数组元素:

names = ['Michael', 'Bob', 'Tracy']

for name in names:
    print name

for i in range(len(names)):
    print names[i]
View Code

示例三:遍历元组元素:

for week in ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'):
    print week
View Code

示例四:遍历字典类型数据:

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
View Code

示例五:检查一个值是否可以遍历(迭代):

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
View Code

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__() 方法执行完之后再抛出去的。

完。

原文地址:https://www.cnblogs.com/itwhite/p/12297769.html