diff --git a/docs/python.html b/docs/python.html new file mode 100644 index 00000000..6e035598 --- /dev/null +++ b/docs/python.html @@ -0,0 +1,970 @@ + + +
+ +Python 备忘单是 Python 3 编程语言的单页参考表
+>>> print("Hello, World!")
+Hello, World!
+
+Python 中著名的“Hello World”程序
+age = 18 # 年龄是 int 类型
+name = "John" # name 现在是 str 类型
+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
+>>> msg = "Hello, World!"
+>>> print(msg[2:5])
+llo
+
+查看: Strings
+mylist = []
+mylist.append(1)
+mylist.append(2)
+for item in mylist:
+ print(item) # 打印输出 1,2
+
+查看: Lists
+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 # => 40
+result = 40 - 10 # => 30
+result = 50 * 5 # => 250
+result = 16 / 4 # => 4.0 (Float Division)
+result = 16 // 4 # => 4 (Integer Division)
+result = 25 % 2 # => 1
+result = 5 ** 3 # => 125
+
+/
表示 x 和 y 的商,//
表示 x 和 y 的底商,另见 StackOverflow
counter = 0
+counter += 10 # => 10
+counter = 0
+counter = counter + 10 # => 10
+message = "Part 1."
+# => Part 1.Part 2.
+message += "Part 2."
+
+>>> website = 'Quickref.ME'
+>>> f"Hello, {website}"
+"Hello, Quickref.ME"
+>>> num = 10
+>>> f'{num} + 10 = {num + 10}'
+'10 + 10 = 20'
+
+查看: Python F-Strings
+hello = "Hello World"
+hello = 'Hello World'
+multi_string = """Multiline Strings
+Lorem ipsum dolor sit amet,
+consectetur adipiscing elit """
+
+查看: Strings
+x = 1 # int
+y = 2.8 # float
+z = 1j # complex
+>>> print(type(x))
+<class 'int'>
+
+my_bool = True
+my_bool = False
+bool(0) # => False
+bool(1) # => True
+
+list1 = ["apple", "banana", "cherry"]
+list2 = [True, False, False]
+list3 = [1, 5, 7, 9, 3]
+list4 = list((1, 5, 7, 9, 3))
+
+查看: Lists
+my_tuple = (1, 2, 3)
+my_tuple = tuple((1, 2, 3))
+
+类似于 List 但不可变
+set1 = {"a", "b", "c"}
+set2 = set(("a", "b", "c"))
+
+一组独特的项目/对象
+>>> 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 类对象
+x = int(1) # x 将是 1
+y = int(2.8) # y 将是 2
+z = int("3") # z 将是 3
+
+x = float(1) # x 将为 1.0
+y = float(2.8) # y 将是 2.8
+z = float("3") # z 将为 3.0
+w = float("4.2") # w 将是 4.2
+
+x = str("s1") # x 将是 's1'
+y = str(2) # y 将是 '2'
+z = str(3.0) # z 将是 '3.0'
+
+>>> 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))
+
+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)
+
+>>> name = input("Enter your name: ")
+Enter your name: Tom
+>>> name
+'Tom'
+
+从控制台获取输入数据
+>>> "#".join(["John", "Peter", "Vicky"])
+'John#Peter#Vicky'
+
+>>> "Hello, world!".endswith("!")
+True
+
+>>> 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'{"text":10}' # [宽度]
+'text '
+>>> f'{"test":*>10}' # 向左填充
+'******test'
+>>> f'{"test":*<10}' # 填写正确
+'test******'
+>>> f'{"test":*^10}' # 填充中心
+'***test***'
+>>> f'{12345:0>10}' # 填写数字
+'0000012345'
+
+>>> f'{10:b}' # binary 二进制类型
+'1010'
+>>> f'{10:o}' # octal 八进制类型
+'12'
+>>> f'{200:x}' # hexadecimal 十六进制类型
+'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'{12345:+}' # [sign] (+/-)
+'+12345'
+>>> f'{-12345:+}'
+'-12345'
+>>> f'{-12345:+10}'
+' -12345'
+>>> f'{-12345:+010}'
+'-000012345'
+
+>>> f'{-12345:0=10}' # 负数
+'-000012345'
+>>> f'{12345:010}' # [0] 快捷方式(不对齐)
+'0000012345'
+>>> f'{-12345:010}'
+'-000012345'
+>>> import math # [.precision]
+>>> 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%'
+
+>>> 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]
+
+列表切片的语法:
+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']
+
+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
+
+value = True
+if not value:
+ print("Value is False")
+elif value is None:
+ print("Value is None")
+else:
+ print("Value is True")
+
+primes = [2, 3, 5, 7]
+for prime in primes:
+ print(prime)
+
+animals = ["dog", "cat", "mouse"]
+for i, value in enumerate(animals):
+ print(i, value)
+
+x = 0
+while x < 4:
+ print(x)
+ x += 1 # Shorthand for x = x + 1
+
+x = 0
+for index in range(10):
+ x = index * 10
+ if index == 5:
+ break
+ print(x)
+
+for index in range(3, 8):
+ x = index * 10
+ if index == 5:
+ continue
+ print(x)
+
+for i in range(4):
+ print(i) # Prints: 0 1 2 3
+for i in range(4, 8):
+ print(i) # Prints: 4 5 6 7
+for i in range(4, 10, 2):
+ print(i) # Prints: 4 6 8
+
+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)
+# [0, 4, 16, 36, 64]
+
+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) # => 11
+
+def varargs(*args):
+ return args
+varargs(1, 2, 3) # => (1, 2, 3)
+
+def keyword_args(**kwargs):
+ return kwargs
+# => {"big": "foot", "loch": "ness"}
+keyword_args(big="foot", loch="ness")
+
+def swap(x, y):
+ return y, x
+x = 1
+y = 2
+x, y = swap(x, y) # => x = 2, y = 1
+
+def add(x, y=10):
+ return x + y
+add(5) # => 15
+add(5, 20) # => 25
+
+# => True
+(lambda x: x > 2)(3)
+# => 5
+(lambda x, y: x ** 2 + y ** 2)(2, 1)
+
+import math
+print(math.sqrt(16)) # => 4.0
+
+from math import ceil, floor
+print(ceil(3.7)) # => 4.0
+print(floor(3.7)) # => 3.0
+
+from math import *
+
+import math as m
+# => True
+math.sqrt(16) == m.sqrt(16)
+
+import math
+dir(math)
+
+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")
+
+class MyNewClass:
+ pass
+# Class Instantiation
+my = MyNewClass()
+
+class Animal:
+ def __init__(self, voice):
+ self.voice = voice
+
+cat = Animal('Meow')
+print(cat.voice) # => Meow
+
+dog = Animal('Woof')
+print(dog.voice) # => Woof
+
+class Dog:
+ # 类的方法
+ def bark(self):
+ print("Ham-Ham")
+
+charlie = Dog()
+charlie.bark() # => "Ham-Ham"
+
+class MyClass:
+ class_variable = "A class variable!"
+# => 一个类变量!
+print(MyClass.class_variable)
+x = MyClass()
+
+# => 一个类变量!
+print(x.class_variable)
+
+class ParentClass:
+ def print_test(self):
+ print("Parent Method")
+
+class ChildClass(ParentClass):
+ def print_test(self):
+ print("Child Method")
+ # 调用父级的 print_test()
+ super().print_test()
+
+>>> child_instance = ChildClass()
+>>> child_instance.print_test()
+Child Method
+Parent Method
+
+class Employee:
+ def __init__(self, name):
+ self.name = name
+
+ def __repr__(self):
+ return self.name
+
+john = Employee('John')
+print(john) # => 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() # => A
+obj_B.print_self() # => B
+
+class ParentClass:
+ def print_self(self):
+ print("Parent")
+
+class ChildClass(ParentClass):
+ def print_self(self):
+ print("Child")
+
+child_instance = ChildClass()
+child_instance.print_self() # => Child
+
+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) # => YOKI
+print(Yoki.legs) # => 4
+Yoki.sound() # => Woof!
+
+# 这是单行注释
+
+""" 可以写多行字符串
+ 使用三个",并且经常使用
+ 作为文档。
+"""
+
+''' 可以写多行字符串
+ 使用三个',并且经常使用
+ 作为文档。
+'''
+
+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)
+# => [-1, -2, -3, -4, -5]
+print(gen_to_list)
+
+try:
+ # 使用“raise”来引发错误
+ raise IndexError("这是一个索引错误")
+except IndexError as e:
+ pass # 通行证只是一个空操作。 通常你会在这里做恢复。
+except (TypeError, NameError):
+ pass # 如果需要,可以一起处理多个异常。
+else: # try/except 块的可选子句。 必须遵循除块之外的所有内容
+ print("All good!") # 仅当 try 中的代码未引发异常时运行
+finally: # 在所有情况下执行
+ print("我们可以在这里清理资源")
+
+