一些Python小技巧

1. 进制格式化输出

代码:

1
2
3
4
print("bin:{:6b},{:6b},{:6b},{:6b}".format(2, 4, 8, 16))
print("oct:{:6o},{:6o},{:6o},{:6o}".format(2, 4, 8, 16))
print("dec:{:6d},{:6d},{:6d},{:6d}".format(2, 4, 8, 16))
print("hex:{:6x},{:6x},{:6x},{:6x}".format(2, 4, 8, 16))

输出:

1
2
3
4
bin:    10,   100,  1000, 10000
oct: 2, 4, 10, 20
dec: 2, 4, 8, 16
hex: 2, 4, 8, 10

2. 位置参数和关键字参数

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def test_tuple(*args):
# *args 代表一个元组类型,接受位置参数
print(args)
result = 0
for arg in args:
result += arg
return result

def test_dict(**kwargs):
# **kwargs 代表一个字典类型,接受关键字参数
print(kwargs)
result = ""
for arg in kwargs:
result += arg
return result

print(test_tuple(1, 2, 3, 4))
print(test_dict(m=1, n=2))

输出:

1
2
3
4
(1, 2, 3, 4)
10
{'m': 1, 'n': 2}
mn

3. 映射转换

代码:

1
print(list(map(ord, "0123456789\0abcd\0编程喵(●'◡'●)"))) # 提取每一个字符的 Unicode 值

输出:

1
[48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 97, 98, 99, 100, 0, 32534, 31243, 21941, 40, 9679, 39, 9697, 39, 9679, 41]

4. 皮卡丘~

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# `'` 或 `"` 不能包含换行符
print("""
   へ     /|
  /\7    ∠_/
  / │   / /
 │ Z _,< /   /`ヽ
 │     ヽ   /  〉
  Y     `  /  /
 イ● 、 ●  ⊂⊃〈  /
 ()  へ    | \〈
  >ー 、_  ィ  │ //
  / へ   / ノ<| \\
  ヽ_ノ  (_/  │//
  7       |/
  >―r ̄ ̄`ー―_ 
""")

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
   へ     /|
  /\7    ∠_/
  / │   / /
 │ Z _,< /   /`ヽ
 │     ヽ   /  〉
  Y     `  /  /
 イ● 、 ●  ⊂⊃〈  /
 ()  へ    | \〈
  >ー 、_  ィ  │ //
  / へ   / ノ<| \\
  ヽ_ノ  (_/  │//
  7       |/
  >―r ̄ ̄`ー―_ 

5. 类型标注

1
2
3
4
5
6
7
8
9
10
11
12
def f(*x: int):
print(x)

def g(x: tuple[int, ...]):
print(x)

def h(x: list[int, any, ...]):
print(x)

f(1, 2, 3)
g((1, 2, 3))
h([1, "1", 1.0])

输出:

1
2
3
(1, 2, 3)
(1, 2, 3)
[1, '1', 1.0]

6. 列表生成

代码:

1
print([2**n for n in range(21) if 2**n > 1000]) # In Haskell: [2^n | n <- [0 .. 20], 2^n > 1000]

输出:

1
[1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576]

7. 模式匹配

代码:

1
2
3
4
5
6
7
8
9
10
status = 418
match status:
case 400:
print("Bad request")
case 404:
print("Not found")
case 418:
print("I'm a teapot")
case _:
print("Others")

输出:

1
I'm a teapot