Skip to content

Commit a421a2d

Browse files
committed
md
1 parent 1f7e792 commit a421a2d

89 files changed

Lines changed: 770 additions & 15 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

feature.md

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,50 @@ Python小例子 https://github.com/jackzhenguo/python-small-examples
4141

4242
### 一、 数字
4343

44-
| ID | 链接 | 难度 |
45-
| ---- | --------------------------- | ---- |
46-
| 1 | [求绝对值](md/1.md) | |
47-
| 2 | [进制转化](md/2.md) | |
48-
| 3 | [整数和ASCII互转](md/3.md) | |
49-
| 4 | [元素都为真检查](md/4.md) | |
50-
| 5 | [至少一个为真检查](md/5.md) | |
51-
| 6 | [判断是真是假](md/6.md) | |
52-
| 7 | [创建复数](md/7.md) | |
53-
| 8 | [取商和余数](md/8.md) | |
54-
| 9 | [转为浮点类型](md/9.md) | |
55-
| 10 | [转为整型](md/10.md) | |
56-
| 11 | [次幂](md/11.md) | |
57-
| 12 | [四舍五入](md/12.md) | |
58-
| 13 | [链式比较](md/13.md) | |
44+
| ID | md文件链接 | 难度 |
45+
| ---- | ---------------------------------- | ---- |
46+
| 1 | [求绝对值](md/1.md) | |
47+
| 2 | [进制转化](md/2.md) | |
48+
| 3 | [整数和ASCII互转](md/3.md) | |
49+
| 4 | [元素都为真检查](md/4.md) | |
50+
| 5 | [至少一个为真检查](md/5.md) | |
51+
| 6 | [判断是真是假](md/6.md) | |
52+
| 7 | [创建复数](md/7.md) | |
53+
| 8 | [取商和余数](md/8.md) | |
54+
| 9 | [转为浮点类型](md/9.md) | |
55+
| 10 | [转为整型](md/10.md) | |
56+
| 11 | [次幂](md/11.md) | |
57+
| 12 | [四舍五入](md/12.md) | |
58+
| 13 | [链式比较](md/13.md) | |
59+
| 14 | [字符串转字节](md/14.md) | |
60+
| 15 | [任意对象转为字符串](md/15.md) | |
61+
| 16 | [执行字符串表示的代码](md/16.md) | |
62+
| 17 | [计算表达式](md/17.md) | |
63+
| 18 | [字符串格式化](md/18.md) | |
64+
| 19 | [拿来就用的排序函数](md/19.md) | |
65+
| 20 | [求和函数](md/20.md) | |
66+
| 21 | [nonlocal用于内嵌函数中](md/21.md) | |
67+
| 22 | [global 声明全局变量](md/22.md) | |
68+
| 23 | [交换两元素](md/23.md) | |
69+
| 24 | [操作函数对象](md/24.md) | |
70+
| 25 | [生成逆序序列](md/25.md) | |
71+
| 26 | [函数的五类参数使用例子](md/26.md) | |
72+
| 27 | [使用slice对象](md/27.md) | |
73+
| 28 | [lambda 函数的动画演示](md/28.md) | |
74+
| 29 | [转为字典](md/29.md) | |
75+
| 30 | [冻结集合](md/30.md) | |
76+
| 31 | [转为集合类型](md/31.md) | |
77+
| 32 | [转元组](md/32.md) | |
78+
| 33 | [对象是否可调用](md/33.md) | |
79+
| 34 | [ascii 展示对象](md/34.md) | |
80+
| 35 | [类方法](md/35.md) | |
81+
| 36 | [动态删除属性](md/36.md) | |
82+
| 37 | [一键查看对象所有方法](md/37.md) | |
83+
| 38 | [动态获取对象属性](md/38.md) | |
84+
| 39 | [对象是否有某个属性](md/39.md) | |
85+
| 40 | [对象门牌号](md/40.md) | |
86+
| 41 | [isinstance](md/41.md) | |
87+
| 42 | [issubclass父子关系鉴定](md/42.md) | |
88+
| 43 | [所有对象之根](md/43.md) | |
89+
| 44 | [创建属性的两种方法](md/44.md) | |
90+
| 45 | [查看对象类型](md/45.md) | |

md/14.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#### 14 字符串转字节  
2+
字符串转换为字节类型
3+
4+
```python
5+
In [12]: s = "apple"
6+
7+
In [13]: bytes(s,encoding='utf-8')
8+
Out[13]: b'apple'
9+
```

md/15.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#### 15 任意对象转为字符串  
2+
```python
3+
In [14]: i = 100
4+
5+
In [15]: str(i)
6+
Out[15]: '100'
7+
8+
In [16]: str([])
9+
Out[16]: '[]'
10+
11+
In [17]: str(tuple())
12+
Out[17]: '()'
13+
```

md/16.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#### 16 执行字符串表示的代码
2+
3+
将字符串编译成python能识别或可执行的代码,也可以将文字读成字符串再编译。
4+
5+
```python
6+
In [1]: s = "print('helloworld')"
7+
8+
In [2]: r = compile(s,"<string>", "exec")
9+
10+
In [3]: r
11+
Out[3]: <code object <module> at 0x0000000005DE75D0, file "<string>", line 1>
12+
13+
In [4]: exec(r)
14+
helloworld
15+
```

md/17.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#### 17 计算表达式
2+
3+
将字符串str 当成有效的表达式来求值并返回计算结果取出字符串中内容
4+
5+
```python
6+
In [1]: s = "1 + 3 +5"
7+
...: eval(s)
8+
...:
9+
Out[1]: 9
10+
```

md/18.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#### 18 字符串格式化 
2+
3+
格式化输出字符串,format(value, format_spec)实质上是调用了value的__format__(format_spec)方法。
4+
5+
```
6+
In [104]: print("i am {0},age{1}".format("tom",18))
7+
i am tom,age18
8+
```
9+
10+
| 3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
11+
| ---------- | ------- | --------- | ---------------------------- |
12+
| 3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
13+
| -1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
14+
| 2.71828 | {:.0f} | 3 | 不带小数 |
15+
| 5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
16+
| 5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
17+
| 10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
18+
| 1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
19+
| 0.25 | {:.2%} | 25.00% | 百分比格式 |
20+
| 1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
21+
| 18 | {:>10d} | ' 18' | 右对齐 (默认, 宽度为10) |
22+
| 18 | {:<10d} | '18 ' | 左对齐 (宽度为10) |
23+
| 18 | {:^10d} | ' 18 ' | 中间对齐 (宽度为10) |

md/19.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#### 19 拿来就用的排序函数
2+
3+
排序:
4+
5+
```python
6+
In [1]: a = [1,4,2,3,1]
7+
8+
In [2]: sorted(a,reverse=True)
9+
Out[2]: [4, 3, 2, 1, 1]
10+
11+
In [3]: a = [{'name':'xiaoming','age':18,'gender':'male'},{'name':'
12+
...: xiaohong','age':20,'gender':'female'}]
13+
In [4]: sorted(a,key=lambda x: x['age'],reverse=False)
14+
Out[4]:
15+
[{'name': 'xiaoming', 'age': 18, 'gender': 'male'},
16+
{'name': 'xiaohong', 'age': 20, 'gender': 'female'}]
17+
```

md/20.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#### 20 求和函数
2+
3+
求和:
4+
5+
```python
6+
In [181]: a = [1,4,2,3,1]
7+
8+
In [182]: sum(a)
9+
Out[182]: 11
10+
11+
In [185]: sum(a,10) #求和的初始值为10
12+
Out[185]: 21
13+
```

md/21.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#### 21 nonlocal用于内嵌函数中
2+
3+
关键词`nonlocal`常用于函数嵌套中,声明变量`i`为非局部变量;
4+
如果不声明,`i+=1`表明`i`为函数`wrapper`内的局部变量,因为在`i+=1`引用(reference)时,i未被声明,所以会报`unreferenced variable`的错误。
5+
6+
```python
7+
def excepter(f):
8+
i = 0
9+
t1 = time.time()
10+
def wrapper():
11+
try:
12+
f()
13+
except Exception as e:
14+
nonlocal i
15+
i += 1
16+
print(f'{e.args[0]}: {i}')
17+
t2 = time.time()
18+
if i == n:
19+
print(f'spending time:{round(t2-t1,2)}')
20+
return wrapper
21+
```

md/22.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#### 22 global 声明全局变量
2+
3+
先回答为什么要有`global`,一个变量被多个函数引用,想让全局变量被所有函数共享。有的伙伴可能会想这还不简单,这样写:
4+
5+
```python
6+
i = 5
7+
def f():
8+
print(i)
9+
10+
def g():
11+
print(i)
12+
pass
13+
14+
f()
15+
g()
16+
17+
```
18+
19+
f和g两个函数都能共享变量`i`,程序没有报错,所以他们依然不明白为什么要用`global`.
20+
21+
但是,如果我想要有个函数对`i`递增,这样:
22+
23+
```python
24+
def h():
25+
i += 1
26+
27+
h()
28+
```
29+
30+
此时执行程序,bang, 出错了! 抛出异常:`UnboundLocalError`,原来编译器在解释`i+=1`时会把`i`解析为函数`h()`内的局部变量,很显然在此函数内,编译器找不到对变量`i`的定义,所以会报错。
31+
32+
`global`就是为解决此问题而被提出,在函数h内,显式地告诉编译器`i`为全局变量,然后编译器会在函数外面寻找`i`的定义,执行完`i+=1`后,`i`还为全局变量,值加1:
33+
34+
```python
35+
i = 0
36+
def h():
37+
global i
38+
i += 1
39+
40+
h()
41+
print(i)
42+
```

0 commit comments

Comments
 (0)