前言
推荐文档:https://www.w3school.com.cn/python/index.asp
打印
1 | print("Hello, World!") |
格式化打印
1 | print(f"lineRect {lineRect} wordRect {wordRect}") |
注释
1 | # print("Hello, World!") |
if else
1 | a = 200 |
循环
while循环
在 i 等于 3 时退出循环:
1 | i = 1 |
for循环
for 循环用于迭代序列(即列表,元组,字典,集合或字符串)。
遍历元素及索引
1 | fruits = ["apple", "banana", "cherry"] |
循环字符串
循环遍历单词 “banana” 中的字母:
1 | for x in "banana": |
循环列表
1 | fruits = ["apple", "banana", "cherry"] |
循环字典
方式1
1 | d = {'name1' : 'pythontab', 'name2' : '.', 'name3' : 'com'} |
方式2
1 | for key, value in d.items(): |
range函数
range() 函数返回一个数字序列,默认情况下从 0 开始,并递增 1(默认地),并以指定的数字结束。
包含开始不包含结束
使用 range() 函数:
1 | for x in range(10): |
设置开始
1 | for i in range(3, 8): |
迭代器
从元组返回一个迭代器,并打印每个值:
1 | mytuple = ("apple", "banana", "cherry") |
创建迭代器
要把对象/类创建为迭代器,必须为对象实现 iter() 和 next() 方法。
正如您在 Python 类/对象 一章中学到的,所有类都有名为 init() 的函数,它允许您在创建对象时进行一些初始化。
__iter__()
方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。__next__()
方法也允许您执行操作,并且必须返回序列中的下一个项目。
创建一个返回数字的迭代器,从 1 开始,每个序列将增加 1(返回 1、2、3、4、5 等):
1 | class MyNumbers: |
StopIteration
如果你有足够的 next() 语句,或者在 for 循环中使用,则上面的例子将永远进行下去。
为了防止迭代永远进行,我们可以使用 StopIteration 语句。
在 next() 方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误:
在 20 个迭代之后停止:
1 | class MyNumbers: |
函数
基本
1 | def my_function(): |
Lambda
1 | x = lambda a, b, c : a + b + c |
调用时传入
1 | def do_something(callback): |
异常
try 块将生成异常,因为 x 未定义:
1 | try: |
多个异常
您可以根据需要定义任意数量的 exception 块,例如,假如您要为特殊类型的错误执行特殊代码块:
如果 try 块引发 NameError,则打印一条消息,如果是其他错误则打印另一条消息:
1 | try: |
Else
如果没有引发错误,那么您可以使用 else 关键字来定义要执行的代码块:
在本例中,try 块不会生成任何错误:
1 | try: |
Finally
如果指定了 finally 块,则无论 try 块是否引发错误,都会执行 finally 块。
1 | try: |
with
1 | try: |
虽然这段代码运行良好,但比较冗长。
而使用with的话,能够减少冗长,还能自动处理上下文环境产生的异常。如下面代码:
1 | with open("1.txt") as file: |
with 工作原理
(1)紧跟with后面的语句被求值后,返回对象的__enter__()
方法被调用,这个方法的返回值将被赋值给as后面的变量;
(2)当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()
方法。
with工作原理代码示例:
1 | class Sample: |
代码的运行结果如下:
1 | in __enter__ |
可以看到,整个运行过程如下:
(1)enter()方法被执行;
(2)enter()方法的返回值,在这个例子中是”Foo”,赋值给变量sample;
(3)执行代码块,打印sample变量的值为”Foo”;
(4)exit()方法被调用;
exit()方法中有3个参数, exc_type, exc_val, exc_tb,这些参数在异常处理中相当有用。
- exc_type: 错误的类型
- exc_val: 错误类型对应的值
- exc_tb: 代码中错误发生的位置
日期
1 | import datetime |
模块
在名为 mymodule.py
的文件中保存代码:
1 | def greeting(name): |
导入名为 mymodule 的模块,并调用 greeting 函数:
1 | import mymodule |
也可以
1 | from mymodule import greeting |
如果路径是这样的utils/mylog.py
1 | import utils.mylog |
或者
1 | from utils.mylog import greeting |