Python 备忘单是 Python 3 编程语言的单页参考表
# 入门
# 介绍
- Python (python.org)
- Learn X in Y minutes (learnxinyminutes.com)
- Regex in python (jaywcjlove.github.io)
# Hello World
| >>> print("Hello, World!") |
| Hello, World! |
Python 中著名的 “Hello World” 程序
# 变量
| age = 18 |
| name = "John" |
| print(name) |
Python 不能在没有赋值的情况下声明变量
# 数据类型
str
Text
int
, float
, complex
Numeric
list
, tuple
, range
Sequence
dict
Mapping
set
, frozenset
Set
bool
Boolean
bytes
, bytearray
, memoryview
Binary
查看: Data Types
# Slicing String
| >>> msg = "Hello, World!" |
| >>> print(msg[2:5]) |
| llo |
查看: Strings
# Lists
| mylist = [] |
| mylist.append(1) |
| mylist.append(2) |
| for item in mylist: |
| print(item) |
查看: Lists
# If Else
| num = 200 |
| if num > 0: |
| print("num is greater than 0") |
| else: |
| print("num is not greater than 0") |
查看: 流程控制
# 循环
| for item in range(6): |
| if item == 3: break |
| print(item) |
| else: |
| print("Finally finished!") |
查看: Loops
# 函数
| >>> def my_function(): |
| ... print("来自函数的你好") |
| ... |
| >>> my_function() |
| 来自函数的你好 |
查看: Functions
# 文件处理
| with open("myfile.txt", "r", encoding='utf8') as file: |
| for line in file: |
| print(line) |
查看: 文件处理
# 算术
| result = 10 + 30 |
| result = 40 - 10 |
| result = 50 * 5 |
| result = 16 / 4 |
| result = 16 // 4 |
| result = 25 % 2 |
| result = 5 ** 3 |
/
表示 x 和 y 的商, //
表示 x 和 y 的底商,另见 StackOverflow
# 加等于
| counter = 0 |
| counter += 10 |
| counter = 0 |
| counter = counter + 10 |
| message = "Part 1." |
| |
| message += "Part 2." |
# f - 字符串 (Python 3.6+)
| >>> website = 'Quick Reference' |
| >>> f"Hello, {website}" |
| "Hello, Quick Reference" |
| >>> num = 10 |
| >>> f'{num} + 10 = {num + 10}' |
| '10 + 10 = 20' |
查看: Python F-Strings
# Python 数据类型
# 字符串
| hello = "Hello World" |
| hello = 'Hello World' |
| multi_string = """Multiline Strings |
| Lorem ipsum dolor sit amet, |
| consectetur adipiscing elit """ |
查看: Strings
# 数字
| x = 1 |
| y = 2.8 |
| z = 1j |
| >>> print(type(x)) |
| <class 'int'> |
# 布尔值
| my_bool = True |
| my_bool = False |
| bool(0) |
| bool(1) |
# Lists
| list1 = ["apple", "banana", "cherry"] |
| list2 = [True, False, False] |
| list3 = [1, 5, 7, 9, 3] |
| list4 = list((1, 5, 7, 9, 3)) |
查看: Lists
# 元组 Tuple
| my_tuple = (1, 2, 3) |
| my_tuple = tuple((1, 2, 3)) |
类似于 List 但不可变
# Set
| set1 = {"a", "b", "c"} |
| set2 = set(("a", "b", "c")) |
一组独特的项目 / 对象
# 字典 Dictionary
| >>> empty_dict = {} |
| >>> a = {"one": 1, "two": 2, "three": 3} |
| >>> a["one"] |
| 1 |
| >>> a.keys() |
| dict_keys(['one', 'two', 'three']) |
| >>> a.values() |
| dict_values([1, 2, 3]) |
| >>> a.update({"four": 4}) |
| >>> a.keys() |
| dict_keys(['one', 'two', 'three', 'four']) |
| >>> a['four'] |
| 4 |
Key:值对,JSON 类对象
# Casting
# 整数 Integers
| x = int(1) |
| y = int(2.8) |
| z = int("3") |
# 浮点数 Floats
| x = float(1) |
| y = float(2.8) |
| z = float("3") |
| w = float("4.2") |
# 字符串 Strings
| x = str("s1") |
| y = str(2) |
| z = str(3.0) |
# Python 字符串
# 类数组
| >>> hello = "Hello, World" |
| >>> print(hello[1]) |
| e |
| >>> print(hello[-1]) |
| d |
获取位置 1
或最后的字符
# 循环
| >>> for char in "foo": |
| ... print(char) |
| f |
| o |
| o |
遍历单词 foo
中的字母
# 切片字符串
| ┌───┬───┬───┬───┬───┬───┬───┐ |
| | m | y | b | a | c | o | n | |
| └───┴───┴───┴───┴───┴───┴───┘ |
| 0 1 2 3 4 5 6 7 |
| -7 -6 -5 -4 -3 -2 -1 |
| >>> s = 'mybacon' |
| >>> s[2:5] |
| 'bac' |
| >>> s[0:2] |
| 'my' |
| >>> s = 'mybacon' |
| >>> s[:2] |
| 'my' |
| >>> s[2:] |
| 'bacon' |
| >>> s[:2] + s[2:] |
| 'mybacon' |
| >>> s[:] |
| 'mybacon' |
| >>> s = 'mybacon' |
| >>> s[-5:-1] |
| 'baco' |
| >>> s[2:6] |
| 'baco' |
# 步长
| >>> s = '12345' * 5 |
| >>> s |
| '1234512345123451234512345' |
| >>> s[::5] |
| '11111' |
| >>> s[4::5] |
| '55555' |
| >>> s[::-5] |
| '55555' |
| >>> s[::-1] |
| '5432154321543215432154321' |
# 字符串长度
| >>> hello = "Hello, World!" |
| >>> print(len(hello)) |
| 13 |
len()
函数返回字符串的长度
# 多份
| >>> s = '===+' |
| >>> n = 8 |
| >>> s * n |
| '===+===+===+===+===+===+===+===+' |
# 检查字符串
| >>> s = 'spam' |
| >>> s in 'I saw spamalot!' |
| True |
| >>> s not in 'I saw The Holy Grail!' |
| True |
# 连接
| >>> s = 'spam' |
| >>> t = 'egg' |
| >>> s + t |
| 'spamegg' |
| >>> 'spam' 'egg' |
| 'spamegg' |
# 格式化
| name = "John" |
| print("Hello, %s!" % name) |
| name = "John" |
| age = 23 |
| print("%s is %d years old." % (name, age)) |
# format () 方法
| txt1 = "My name is {fname}, I'm {age}".format(fname="John", age=36) |
| txt2 = "My name is {0}, I'm {1}".format("John", 36) |
| txt3 = "My name is {}, I'm {}".format("John", 36) |
# Input 输入
| >>> name = input("Enter your name: ") |
| Enter your name: Tom |
| >>> name |
| 'Tom' |
从控制台获取输入数据
# Join 加入
| >>> "#".join(["John", "Peter", "Vicky"]) |
| 'John#Peter#Vicky' |
# Endswith 以.. 结束
| >>> "Hello, world!".endswith("!") |
| True |
# 转义符号
\\
输出反斜杠
\'
输出单引号
\"
输出双引号
\n
换行
\t
水平制表符
\r
光标回到首位
\b
退格
# Python F 字符串(自 Python 3.6+ 起)
# f-Strings 用法
| >>> website = 'Reference' |
| >>> f"Hello, {website}" |
| "Hello, Reference" |
| >>> num = 10 |
| >>> f'{num} + 10 = {num + 10}' |
| '10 + 10 = 20' |
| >>> f"""He said {"I'm John"}""" |
| "He said I'm John" |
| >>> f'5 {"{stars}"}' |
| '5 {stars}' |
| >>> f'5 {"stars"}' |
| '{5} stars' |
| >>> name = 'Eric' |
| >>> age = 27 |
| >>> f"""Hello! |
| ... I'm {name}. |
| ... I'm {age}.""" |
| "Hello!\n I'm Eric.\n I'm 27." |
它从 Python 3.6 开始可用,另见: 格式化的字符串文字
# f-Strings 填充对齐
| >>> f'{"text":10}' |
| 'text ' |
| >>> f'{"test":*>10}' |
| '******test' |
| >>> f'{"test":*<10}' |
| 'test******' |
| >>> f'{"test":*^10}' |
| '***test***' |
| >>> f'{12345:0>10}' |
| '0000012345' |
# f-Strings 类型
| >>> f'{10:b}' |
| '1010' |
| >>> f'{10:o}' |
| '12' |
| >>> f'{200:x}' |
| 'c8' |
| >>> f'{200:X}' |
| 'C8' |
| >>> f'{345600000000:e}' |
| '3.456000e+11' |
| >>> f'{65:c}' |
| 'A' |
| >>> f'{10:#b}' |
| '0b1010' |
| >>> f'{10:#o}' |
| '0o12' |
| >>> f'{10:#x}' |
| '0xa' |
# F-Strings Sign
| >>> f'{12345:+}' |
| '+12345' |
| >>> f'{-12345:+}' |
| '-12345' |
| >>> f'{-12345:+10}' |
| ' -12345' |
| >>> f'{-12345:+010}' |
| '-000012345' |
# F-Strings 其它
| >>> f'{-12345:0=10}' |
| '-000012345' |
| >>> f'{12345:010}' |
| '0000012345' |
| >>> f'{-12345:010}' |
| '-000012345' |
| >>> import math |
| >>> math.pi |
| 3.141592653589793 |
| >>> f'{math.pi:.2f}' |
| '3.14' |
| >>> f'{1000000:,.2f}' |
| '1,000,000.00' |
| >>> f'{1000000:_.2f}' |
| '1_000_000.00' |
| >>> f'{0.25:0%}' |
| '25.000000%' |
| >>> f'{0.25:.0%}' |
| '25%' |
# Python Lists
# 定义
| >>> li1 = [] |
| >>> li1 |
| [] |
| >>> li2 = [4, 5, 6] |
| >>> li2 |
| [4, 5, 6] |
| >>> li3 = list((1, 2, 3)) |
| >>> li3 |
| [1, 2, 3] |
| >>> li4 = list(range(1, 11)) |
| >>> li4 |
| [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
# 生成
| >>> list(filter(lambda x : x % 2 == 1, range(1, 20))) |
| [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] |
| >>> [x ** 2 for x in range (1, 11) if x % 2 == 1] |
| [1, 9, 25, 49, 81] |
| >>> [x for x in [3, 4, 5, 6, 7] if x > 5] |
| [6, 7] |
| >>> list(filter(lambda x: x > 5, [3, 4, 5, 6, 7])) |
| [6, 7] |
# 添加
| >>> li = [] |
| >>> li.append(1) |
| >>> li |
| [1] |
| >>> li.append(2) |
| >>> li |
| [1, 2] |
| >>> li.append(4) |
| >>> li |
| [1, 2, 4] |
| >>> li.append(3) |
| >>> li |
| [1, 2, 4, 3] |
# List 切片
列表切片的语法:
| a_list[start:end] |
| a_list[start:end:step] |
# 切片
| >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] |
| >>> a[2:5] |
| ['bacon', 'tomato', 'ham'] |
| >>> a[-5:-2] |
| ['egg', 'bacon', 'tomato'] |
| >>> a[1:4] |
| ['egg', 'bacon', 'tomato'] |
# 省略索引
| >>> a[:4] |
| ['spam', 'egg', 'bacon', 'tomato'] |
| >>> a[0:4] |
| ['spam', 'egg', 'bacon', 'tomato'] |
| >>> a[2:] |
| ['bacon', 'tomato', 'ham', 'lobster'] |
| >>> a[2:len(a)] |
| ['bacon', 'tomato', 'ham', 'lobster'] |
| >>> a |
| ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] |
| >>> a[:] |
| ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] |
# 跳跃索引
| ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] |
| >>> a[0:6:2] |
| ['spam', 'bacon', 'ham'] |
| >>> a[1:6:2] |
| ['egg', 'tomato', 'lobster'] |
| >>> a[6:0:-2] |
| ['lobster', 'tomato', 'egg'] |
| >>> a |
| ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] |
| >>> a[::-1] |
| ['lobster', 'ham', 'tomato', 'bacon', 'egg', 'spam'] |
# 删除
| >>> li = ['bread', 'butter', 'milk'] |
| >>> li.pop() |
| 'milk' |
| >>> li |
| ['bread', 'butter'] |
| >>> del li[0] |
| >>> li |
| ['butter'] |
# 列表边界
| >>> li = ['a', 'b', 'c', 'd'] |
| >>> li[0] |
| 'a' |
| >>> li[-1] |
| 'd' |
| >>> li[4] |
| Traceback (most recent call last): |
| File "<stdin>", line 1, in <module> |
| IndexError: list index out of range |
# 连接
| >>> odd = [1, 3, 5] |
| >>> odd.extend([9, 11, 13]) |
| >>> odd |
| [1, 3, 5, 9, 11, 13] |
| >>> odd = [1, 3, 5] |
| >>> odd + [9, 11, 13] |
| [1, 3, 5, 9, 11, 13] |
# 排序和反转
| >>> li = [3, 1, 3, 2, 5] |
| >>> li.sort() |
| >>> li |
| [1, 2, 3, 3, 5] |
| >>> li.reverse() |
| >>> li |
| [5, 3, 3, 2, 1] |
# 计数
| >>> li = [3, 1, 3, 2, 5] |
| >>> li.count(3) |
| 2 |
# 重复
| >>> li = ["re"] * 3 |
| >>> li |
| ['re', 're', 're'] |
# Python 流程控制
# 基本
| num = 5 |
| if num > 10: |
| print("num is totally bigger than 10.") |
| elif num < 10: |
| print("num is smaller than 10.") |
| else: |
| print("num is indeed 10.") |
# 一行
| >>> a = 330 |
| >>> b = 200 |
| >>> r = "a" if a > b else "b" |
| >>> print(r) |
| a |
# else if
| value = True |
| if not value: |
| print("Value is False") |
| elif value is None: |
| print("Value is None") |
| else: |
| print("Value is True") |
# Python 循环
# 基础
| primes = [2, 3, 5, 7] |
| for prime in primes: |
| print(prime) |
# 有索引
| animals = ["dog", "cat", "mouse"] |
| for i, value in enumerate(animals): |
| print(i, value) |
# While
| x = 0 |
| while x < 4: |
| print(x) |
| x += 1 |
# Break
| x = 0 |
| for index in range(10): |
| x = index * 10 |
| if index == 5: |
| break |
| print(x) |
# Continue
| for index in range(3, 8): |
| x = index * 10 |
| if index == 5: |
| continue |
| print(x) |
# 范围
| for i in range(4): |
| print(i) |
| for i in range(4, 8): |
| print(i) |
| for i in range(4, 10, 2): |
| print(i) |
# 使用 zip ()
| name = ['Pete', 'John', 'Elizabeth'] |
| age = [6, 23, 44] |
| for n, a in zip(name, age): |
| print('%s is %d years old' %(n, a)) |
# 列表理解
| result = [x**2 for x in range(10) if x % 2 == 0] |
| |
| print(result) |
| |
# Python 函数
# 基础
| def hello_world(): |
| print('Hello, World!') |
# 返回
| def add(x, y): |
| print("x is %s, y is %s" %(x, y)) |
| return x + y |
| add(5, 6) |
# 位置参数
| def varargs(*args): |
| return args |
| varargs(1, 2, 3) |
# 关键字参数
| def keyword_args(**kwargs): |
| return kwargs |
| |
| keyword_args(big="foot", loch="ness") |
# 返回多个
| def swap(x, y): |
| return y, x |
| x = 1 |
| y = 2 |
| x, y = swap(x, y) |
# 默认值
| def add(x, y=10): |
| return x + y |
| add(5) |
| add(5, 20) |
# 匿名函数
| |
| (lambda x: x > 2)(3) |
| |
| (lambda x, y: x ** 2 + y ** 2)(2, 1) |
# Python 模块
# 导入模块
| import math |
| print(math.sqrt(16)) |
# 从一个模块导入
| from math import ceil, floor |
| print(ceil(3.7)) |
| print(floor(3.7)) |
# 全部导入
# 缩短模块
| import math as m |
| |
| math.sqrt(16) == m.sqrt(16) |
# 功能和属性
# Python 文件处理
# 读取文件
# 逐行
| with open("myfile.txt") as file: |
| for line in file: |
| print(line) |
# 带行号
| file = open('myfile.txt', 'r') |
| for i, line in enumerate(file, start=1): |
| print("Number %s: %s" % (i, line)) |
# 字符串
# 写一个字符串
| contents = {"aa": 12, "bb": 21} |
| with open("myfile1.txt", "w+") as file: |
| file.write(str(contents)) |
# 读取一个字符串
| with open('myfile1.txt', "r+") as file: |
| contents = file.read() |
| print(contents) |
# 对象
# 写一个对象
| contents = {"aa": 12, "bb": 21} |
| with open("myfile2.txt", "w+") as file: |
| file.write(json.dumps(contents)) |
# 读取对象
| with open('myfile2.txt', "r+") as file: |
| contents = json.load(file) |
| print(contents) |
# 删除文件
| import os |
| os.remove("myfile.txt") |
# 检查和删除
| import os |
| if os.path.exists("myfile.txt"): |
| os.remove("myfile.txt") |
| else: |
| print("The file does not exist") |
# 删除文件夹
| import os |
| os.rmdir("myfolder") |
# Python 类和继承
# Defining
| class MyNewClass: |
| pass |
| |
| my = MyNewClass() |
# 构造函数
| class Animal: |
| def __init__(self, voice): |
| self.voice = voice |
| |
| cat = Animal('Meow') |
| print(cat.voice) |
| |
| dog = Animal('Woof') |
| print(dog.voice) |
# 方法
| class Dog: |
| |
| def bark(self): |
| print("Ham-Ham") |
| |
| charlie = Dog() |
| charlie.bark() |
# 类变量
| class MyClass: |
| class_variable = "A class variable!" |
| |
| print(MyClass.class_variable) |
| x = MyClass() |
| |
| |
| print(x.class_variable) |
# Super () 函数
| class ParentClass: |
| def print_test(self): |
| print("Parent Method") |
| |
| class ChildClass(ParentClass): |
| def print_test(self): |
| print("Child Method") |
| |
| super().print_test() |
| >>> child_instance = ChildClass() |
| >>> child_instance.print_test() |
| Child Method |
| Parent Method |
# repr () 方法
| class Employee: |
| def __init__(self, name): |
| self.name = name |
| |
| def __repr__(self): |
| return self.name |
| |
| john = Employee('John') |
| print(john) |
# 用户定义的异常
| class CustomError(Exception): |
| pass |
# 多态性
| class ParentClass: |
| def print_self(self): |
| print('A') |
| |
| class ChildClass(ParentClass): |
| def print_self(self): |
| print('B') |
| |
| obj_A = ParentClass() |
| obj_B = ChildClass() |
| |
| obj_A.print_self() |
| obj_B.print_self() |
# 覆盖
| class ParentClass: |
| def print_self(self): |
| print("Parent") |
| |
| class ChildClass(ParentClass): |
| def print_self(self): |
| print("Child") |
| |
| child_instance = ChildClass() |
| child_instance.print_self() |
# 继承
| class Animal: |
| def __init__(self, name, legs): |
| self.name = name |
| self.legs = legs |
| |
| class Dog(Animal): |
| def sound(self): |
| print("Woof!") |
| |
| Yoki = Dog("Yoki", 4) |
| print(Yoki.name) |
| print(Yoki.legs) |
| Yoki.sound() |
# 各种各样的
# 注释
| """ 可以写多行字符串 |
| 使用三个",并且经常使用 |
| 作为文档。 |
| """ |
| ''' 可以写多行字符串 |
| 使用三个',并且经常使用 |
| 作为文档。 |
| ''' |
# 生成器
| def double_numbers(iterable): |
| for i in iterable: |
| yield i + i |
生成器可帮助您编写惰性代码
# 要列出的生成器
| values = (-x for x in [1,2,3,4,5]) |
| gen_to_list = list(values) |
| |
| print(gen_to_list) |
# 处理异常
| try: |
| |
| raise IndexError("这是一个索引错误") |
| except IndexError as e: |
| pass |
| except (TypeError, NameError): |
| pass |
| else: |
| print("All good!") |
| finally: |
| print("我们可以在这里清理资源") |
# 另见
- Python (python.org)
- Learn X in Y minutes (learnxinyminutes.com)
- Regex in python (jaywcjlove.github.io)
© 2022 Kenny Wang.