Python实践

最佳实践文档
https://gist.github.com/sloria/7001839
https://gist.github.com/JeffPaine/6213790

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
1.如何使用PIP更新package?
python -m pip install --upgrade package_name
2.如何判断文件是否存在?
import os.path
os.path.isfile(filename)
3.Python中的三元运算符
a if test else b
根据testTrue,则返回a,若为False,则返回b
4.如何在一个表达式里合并两个字典?
>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> z = dict(x.items() + y.items())
>>> z
{'a': 1, 'c': 11, 'b': 10}
5.如何用字典的值对字典进行排序?
import operator
x ={1: 2, 3: 4, 4:3, 2:1, 0:0}
sorted_x = sorted(x.items(),key = operator.itemgetter(1)) 或者
sorted(d.items(), key=lambda x: x[1])
6.如何在一个函数里用全局变量?
如果我在一个函数里建了一个全局变量,那么我怎么在另一个函数里使用这个全局变量?
我需要把这个全局变量赋值给这个函数的局部变量吗?
如果你要在别的函数里使用全局变量,只要在被调用全局变量函数的里事先用global声明一下:
globvar = 0
def set_globvar_to_one():
global globvar # 需要用global修饰一下globvar
globvar = 1
def print_globvar():
print globvar # 如果要读globbar的值的话不需要用global修饰
set_globvar_to_one()
print_globvar() # 输出 1
我猜正是因为全局变量比较危险,所以Python为了确保你真的知道它是全局变量,所以需要加一个global关键字.
7.检查列表是否为空的最好方法?
if not a:
print "List is empty"
用隐藏的空列表的布尔值才是最Pythonic的方法.
8.__str__和repr__的区别?
- 用起来没有什么区别
- __repr__的目的是明确的
- __str__的目的是可读性
- __str__的用法包含__repr__
a='a\nb'
In [2]:
print str(a)
a
b
In [3]:
print repr(a)
'a\nb'
9.在循环中获取索引(数组下标)?
list_test = [8, 23, 45, 12, 78]
for index, value in enumerate(list_test):
print index , value
10.Python中的append和extend的区别?
In[7]: x = [1,2,3,4]
In[8]: y = [8,9,10]
In[9]: x.append(y)
In[10]: x
Out[10]: [1, 2, 3, 4, [8, 9, 10]]
In[11]: x = [1,2,3,4]
In[12]: y = [8,9,10]
In[13]: x.extend(y)
In[14]: x
Out[14]: [1, 2, 3, 4, 8, 9, 10]
10.字典里添加元素的方法?
In[15]: x = {1:2,3:4}
In[16]: x.update({5:6})
In[17]: x
Out[17]: {1: 2, 3: 4, 5: 6}
11.Python中有检查字符串包含的方法吗?
if not "haha" in sstring: continue
或者:
if "haha" not in somestring : continue
12.如何在只用一行捕获多个异常?
try:
something
except(ExceptionA,ExceptionB,.....) as e:
something
13.在Python里怎么读取stdin?
import fileinput
for line in fileinput.input():
pass
14.在Python里获取当前时间?
In[19]: import datetime
In[20]: datetime.datetime.now()
Out[20]: datetime.datetime(2016, 5, 26, 11, 31, 55, 508000)
In[21]: datetime.datetime.now().time()
Out[21]: datetime.time(11, 32, 5, 775000)
15.在Python怎么样才能把列表分割成同样大小的块?
tuple(l[i:i+n] for i in xrange(0, len(l), n))
16.检查一个字符串是否是一个数字?
In[22]: x = '569789'
In[23]: x.isdigit()
Out[23]: True
In[24]: y = 'gdf2667'
In[25]: y.isdigit()
Out[25]: False
17.查找列表中某个元素的下标?
In[26]: ['a','b','c'].index('b')
Out[26]: 1
18.如何在列表中随机取一个元素?
import random
f= ['a', 'b', 'c']
print(random.choice(f))
19.字典推倒式
d = {key: value for (key, value) in iterable}
20.如何最快速反转字符串?
In[30]: 'nihao ma'[::-1]
Out[30]: 'am oahin'
20.如何测量脚本的运行时间?
Python自带了一个叫cProfile的分析器.它不仅实现了计算整个时间,而且单独计算每个函数运行时间,并且告诉你这个函数被调用多少次,它可以很容易的确定你要优化的值.
你可以这样调用:
import cProfile
cProfile.run('foo()')
In[37]: import cProfile
In[38]: cProfile.run('fm()')
4950
3 function calls in 0.000 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 :1(fm)
1 0.000 0.000 0.000 0.000 :1()
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
21.Python中用什么代替switch语句?
在其他语言中有switch语句,但是python中没有。可以用字典的方式来解决这个问题。
def helpFunction(x):
return {
'a':12,
'b':45,
'c':78
}[x]
if __name__=='__main__':
print helpFunction('b')
如果你希望设置一个默认值可以用字典的get方法:
def f(x):
return {
'a': 1,
'b': 2,
}.get(x, 9)
22.如何生成包含大写字母和数字的随机字符串?
In[40]: import random
In[41]: import string
In[42]: ''.join(random.choice(string.ascii_uppercase+string.digits) for _ in range(5))
Out[42]: 'XBNH7'
23.如何合并两个列表?
list1 = [1,2,3,4]
list2 = [5,6,7,8]
list3 = list1+list2
24.如何把字符串转化为时间?
from datetime import datetime
date_object = datetime.strptime('Jun 1 2016 1:33PM', '%b %d %Y %I:%M%p')
Out[45]: datetime.datetime(2016, 6, 1, 13, 33)
25.如何用pip升级所有包?
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs pip install -U
26.如何给字符串填充0
A = 'demo'
A.rjust(5,'0')
'0demo'

文章目录