语句

print语句

print语句可以打印多个表达式,只需要用逗号隔开。

>>> print(1,2,3)
1 2 3

import语句

import somemodule

对于模块somemodule的某个函数somefunction,可以使用somemodule.somefunction来调用,或者:

from somemodule import somefunction

就可以直接使用somefunction。

from somemodule import *  #此句表示导入所有功能。

也可以给导入的模块或者函数提供别名,只用可以直接使用a来代替amodule或者afunction:

import amodule as a
from somemodule import afunction as a

赋值语句

序列解包

多个赋值操作可以同时进行,并且用它交换两个或多个变量也是没问题的。

>>> x = 1
>>> y = 2
>>> x, y = y, x
>>> x
2
>>> y
1

这实际上是一个序列解包或者递归解包问题,将多个值的序列解开,然后放到变量的序列中。
用这个方法可以同时获取字典中的任意键—值对。

>>> scoundrel = {'name': 'Robin', 'addr': 'NewYork'}
>>> key, value = scoundrel.popitem()
>>> key
'addr'
>>> value
'NewYork'

链式赋值

将同一个值赋值给多个变量的捷径,

x = y = somefunction()
#或者
y = somefunction()
x = y

增量赋值

>>> x = 2
>>> x += 1
>>> x *= 2
>>> x
6
>>> fnord = 'foo'
>>> fnord += 'bar'
>>> fnord *= 2
>>> fnord
'foobarfoobar'

语句块

冒号(:)用来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同),当回退到和已经闭合的块一样的缩进量时,就标识当前块已经结束了。

条件语句

布尔型:真、假。“标准的”布尔值为True和False,它的返回值也可以是1或者0.

广义上,所有值都可以作为布尔值,如标准值False和None、所有类型的数字0、空序列以及空的字典都为假,而其他的一切都被解释为真。

>>> bool('Hello')
True
>>> bool(42)
True
>>> bool(0)
False
>>> bool([])
False

if语句:如果条件判定为真,那么后面的语句块执行,否则不执行。

else语句:如果if判定为假,则跳过if后面的语句块,而执行else后的语句块。

elif子句:相当于else if的简写。

比较运算符:对于相对大小的任意两个对象x和y都可以使用比较运算符比较,并且都会得到一个布尔值结果,但是只有在x和y是相同或者近似类型的对象时,比较才有意义。比较不兼容类型的对象是不支持的。

相等运算符和同一性运算符:相等运算符(==)来比较两个东西是否相等。而同一性运算符(is)来比较两个东西是否是同一个。

>>> x = y = [1, 2, 3]
>>> z = [1, 2, 3]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False

成员资格运算符:成员资格运算符(in)也可以像其他比较运算符一样在条件语句中使用。

字符串和序列可以按照字母顺序排列进行比较。

>>> "alpha" < "beta"
True

同样的,其他序列也可以使用同样的方式进行比较。

>>> [2, [1, 4]] < [2, [1, 5]]
True

布尔运算符:也就是逻辑运算符,如and、or和not,采用短路逻辑。
x and y:如果x为假,返回x的值,否则返回y 的值。
x or y:如果x为真,返回x的值,否则返回y的值。
这样做避免了无用的执行代码。

a if b else c
# 如果b为真,返回a,否则返回c。

断言语句:assert用来确保某些条件必须为真,否则程序直接崩溃。可以在后面添加字符串来解释断言。

>>> age = -1
>>> assert 0 < age < 100, 'The age must be realistic'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError: The age must be realistic

循环语句

while循环,while后条件为真时,执行之后的语句块。直到while后的条件为假。

for循环,通过按次序迭代的循环。

for num in range(0,5):
    print(num)

运行结果:
1
2
3
4
5

也可以使用for循环来遍历字典中的所有键。

d = {'x':1, 'y':2, 'z':3}
for key, value in d.items():
    print(key, 'corresponds to', value)

运行结果:
z corresponds to 3
y corresponds to 2
x corresponds to 1

zip函数,可以用来进行并行迭代,把两个序列“压缩”在一起,然后返回一个元组的列表。然后利用for循环来进行并行迭代。

names = ['anne', 'beth', 'george', 'damon']
ages = [12, 45, 32, 102]
zip(names, ages)
输出:
[('anne', 12), ('beth', 45), ('george', 32), ('demon', 102)]

for name, age in zip(names, ages):
    print(name, 'is', age, 'years old')
输出:
anne is 12 years old
beth is 45 years old 
george is 32 years old
damon is 102 years old

跳出循环

break可以结束循环。
continue可以结束当前迭代,而进入下一个迭代。

while True/break语句:while True实现了一个永远不会自己停止的循环,在循环内部使用 if break的条件语句,在满足if条件时调用break,就可以终止循环。

如果for循环中有break语句,可以在for循环后增加一个else子句,仅在没有调用break时执行。

from math import sqrt
for n in range(99,80,-1):
    root = sqrt(n)
    if root == int(root):
        print(n)
        break
else:
    print("Didn't find it!")

输出:
81

如果把80改成81后,则会输出”Didn’t find it!”,因为循环的范围不包括81了。

列表推导式

>>> [x*x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [y for y in range(10) if y%3 == 0]
[0, 3, 6, 9]

pass语句:仅代表占位语句,一般在调试代码时使用。
del语句:删除一个对象的引用,并移除那个名字本身,正是因为删除的只是引用和名称,因此当x和y指向同一个列表时,使用del删除x时,y不会受到影响。

eval函数对写在字符串中的表达式进行计算并且返回结果。

>>> x = 2
>>> y = 3
>>> 'x*y'
'x*y'
>>> eval('x*y')
6

更多推荐

Python基础教程学习第五日:语句