内容全部摘自一个讲 Python 语法的网站,算是个速查吧。
基础
- 注释:单行注释
#,多行注释用'''或"""包裹。 - 缩进须严格一致,
\用于换行继续写。 - 字符串不区分单双引号,三引号可表示多行字符串。
- 使用
r"string\n"可以让\不转译。 - 字符串取子串用
[首下标:尾下标:步长],负数代表倒着数。 - 字符串加法代表连接,乘法代表重复。
print()默认换行,可指定print(element, end="")设置不换行。- 导入:
import、from module import function、from module import *。
数据类型
- 类型名首字母大写,支持复数
1+2j或complex(1, 2)。 type()查询变量的类型,isinstance(a, Int)会判断变量是否为指定类型(子类也算哦)。- 删除对象
del ver_1, ver_2 /得到浮点数,//得到整数,**是乘方。- 列表类型
List["", "", ""]里啥都能塞。 - 技巧
list = list[-1::-1]反转一个列表(步长 $-1$)。 - 元组类型
Tuple("", "", "")内元素不能修改。 - 集合类型
Set{"", "", ""}或set(""),可以用-求差集,用&求交集,用|求并集,用^求不同元素。 - 字典类型
Dictionary["location"] = 1,可用dictionary.keys()和dictionary.values(),构造函数dict([("one", 1), ("two", 2)])或dict(one = 1, two = 2)。(感觉就是个map【逃) - 一些好用的函数:
hex(x)将整数转为十六进制字符串,oct(x)将整数转为八进制字符串,ord(x)将字符转为整数,chr(x)将整数转为字符,eval(str)计算字符串中的表达式……
推导式
一个有趣的东西。
- 列表的例子:
[name.upper() for name in names if len(name) > 3] - 列表的例子:
[i for i in range(30) if i % 3 == 0] - 字典的例子:
{key: len(key) for key in strings} - 集合的例子:
{i**2 for i in (1, 2, 3)} - 集合的例子:
{x for x in "abcdef" if x not in "abc"} - 元组的例子:
(x for x in range(1, 10))
Python3 太强了,感觉再也不想用 C 了也说不定?明天接着写。
然后就拖到后天了(
f"{}"字符串前加f表示允许出现{}包裹的 Python 表达式。(顺便字符串前加的r是 raw 的缩写)- 海象运算符
:=,目前觉得是在表达式中赋值,不太清楚到底怎么个用法。 - Python 可以直接用关键字
and、or、not,如a and b。 - 还有:
in和not in以及is和is not(引用变量是否为同一个)。 id()函数用于获取对象内存地址。
数学相关
(使用需要如 math.modf(x))
1 | import math |
基本函数 abs(x)、ceil(x)、floor(x)、exp(x)、fabs(x)、log(x)、log10(x)、max(x1, x2, ... , xn)、min(x1, x2, ... , xn)、pow(x, y)、round(x[, n])、sqrt(x)。
modf(x) 用于返回整数部分和小数部分。
hypot(x, y) 用于返回 $\sqrt{x^2+y^2}$。
degrees(x) 弧度转角度,radians(x) 角度转弧度。
数学常量 pi 和 e。
1 | import random |
choice(seq) 在序列中随机挑选,randrange([start, ]stop[, step]),random() 生成 $[0,1)$ 范围内的随机数,seed([x]),suffle(seq) 将序列打乱,uniform(x, y) 随机生成 $[x, y]$ 范围内的实数。
“字符串”到“集合”这几节先鸽着。
分支
1 | if 表达式: |
循环
1 | while 表达式: |
压行:while (not yahangdamie): print("压行啦!!!")
1 | for x in ["C", "C++", "Python"]: |
函数
1 | def function0(): |
- 传参时形式参数和实际参数指向同一个 $id$,内容改变后指向不同 $id$(用
id(x)查看)。 - 函数内可变对象(如列表)改变会影响函数外。
- 可以设置参数默认值
function0(author = "whz0325"),可以在调用时指定参数function0(name = "whz", id = 325)。
不定长参数:
1 | def test(*tmp): # * 传入元组 |
也可以 def test2(a, b, *, c)。
匿名函数:
1 | func = lambda x, y: x + y |
字符串
[left, right]取子串,下标 $0$ 开始,左开右闭,可省略某项,负数从 $-1$ 开始倒数。- C 语言中的转义字符也可以用:
\175表示八进制数,\x6a表示十六进制数。 - 获取字符串的长度:
len(s)。
格式化:
1 | name = "whz0325" |
%e 为科学计数法形式的浮点数,%o 为八进制,%x 为十六进制(%X 为大写)。
1 | pi = 3.1415926 |
函数:
1 | s = "whz0325" |
列表
- 像数组一样的东西,可以搞二维列表
['a', 'b', 'c'].append('d')。del list[-2]删除倒数第二个元素(可以删除中间元素)。max(list)和min(list)返回列表最值。
排序和其它函数明天更。
迭代器
坑着。