@@ -75,3 +75,175 @@ Then run it on a file or series of files to get a report of any violations.
75
75
optparse.py:472:29: E221 multiple spaces before operator
76
76
optparse.py:544:21: W601 .has_key() is deprecated, use 'in'
77
77
78
+ Conventions
79
+ :::::::::::
80
+
81
+ Here are some conventions you should follow to make your code easier to read.
82
+
83
+ Check if variable equals a constant
84
+ -----------------------------------
85
+
86
+ You don't need to explicitly compare a value to True, or None, or 0 - you can
87
+ just add it to the if statement.
88
+
89
+ **Bad **:
90
+
91
+ .. code-block :: python
92
+
93
+ if attr == True :
94
+ print ' True!'
95
+
96
+ if attr == None :
97
+ print ' attr is None!'
98
+
99
+ **Good **:
100
+
101
+ .. code-block :: python
102
+
103
+ # Just check the value
104
+ if attr:
105
+ print ' True!'
106
+
107
+ # or check for the opposite
108
+ if not attr:
109
+ print ' attr is None!'
110
+
111
+ Access a Dictionary Element
112
+ ---------------------------
113
+
114
+ Don't use the ``has_key `` function. Instead use ``x in d `` syntax, or pass
115
+ a default argument to ``get ``.
116
+
117
+ **Bad **:
118
+
119
+ .. code-block :: python
120
+
121
+ d = {' hello' : ' world' }
122
+ if d.has_key(' hello' ):
123
+ print d[' hello' ] # prints 'world'
124
+ else :
125
+ print ' default_value'
126
+
127
+ **Good **:
128
+
129
+ .. code-block :: python
130
+
131
+ d = {' hello' : ' world' }
132
+
133
+ print d.get(' hello' , ' default_value' ) # prints 'world'
134
+ print d.get(' thingy' , ' default_value' ) # prints 'default_value'
135
+
136
+ # Or:
137
+ if ' hello' in d:
138
+ print d[' hello' ]
139
+
140
+ Short Ways to Manipulate Lists
141
+ ------------------------------
142
+
143
+ `List comprehensions
144
+ <http://docs.python.org/tutorial/datastructures.html#list-comprehensions> `_
145
+ provide a powerful, concise way to work with lists. Also, the `map
146
+ <http://docs.python.org/library/functions.html#map> `_ and `filter
147
+ <http://docs.python.org/library/functions.html#filter> `_ functions can perform
148
+ operations on lists using a different concise syntax.
149
+
150
+ **Bad **:
151
+
152
+ .. code-block :: python
153
+
154
+ # Filter elements less than 5
155
+ a = [3 , 4 , 5 ]
156
+ b = []
157
+ for i in a:
158
+ if a > 4 :
159
+ b.append(a)
160
+
161
+ **Good **:
162
+
163
+ .. code-block :: python
164
+
165
+ b = [i for i in a if i > 4 ]
166
+ b = filter (lambda x : x > 4 , a)
167
+
168
+ **Bad **:
169
+
170
+ .. code-block :: python
171
+
172
+ # Add three to all list members.
173
+ a = [3 , 4 , 5 ]
174
+ count = 0
175
+ for i in a:
176
+ a[count] = i + 3
177
+ count = count + 1
178
+
179
+ **Good **:
180
+
181
+ .. code-block :: python
182
+
183
+ a = [3 , 4 , 5 ]
184
+ a = [i + 3 for i in a]
185
+ # Or:
186
+ a = map (lambda i : i + 3 , a)
187
+
188
+ Use `enumerate <http://docs.python.org/library/functions.html#enumerate >`_ to
189
+ keep a count of your place in the list.
190
+
191
+ .. code-block :: python
192
+
193
+ for i, item in a:
194
+ print i + " , " + item
195
+ # prints
196
+ # 0, 3
197
+ # 1, 4
198
+ # 2, 5
199
+
200
+ Read From a File
201
+ ----------------
202
+
203
+ Use the ``with open `` syntax to read from files. This will automatically close
204
+ files for you.
205
+
206
+ **Bad **:
207
+
208
+ .. code-block :: python
209
+
210
+ f = open (' file.txt' )
211
+ a = f.read()
212
+ print a
213
+ f.close()
214
+
215
+ **Good **:
216
+
217
+ .. code-block :: python
218
+
219
+ with open (' file.txt' ) as f:
220
+ for line in f:
221
+ print line
222
+
223
+ Returning Multiple Values from a Function
224
+ -----------------------------------------
225
+
226
+ Python supports returning multiple values from a function as a comma-separated
227
+ list, so you don't have to create an object or dictionary and pack multiple
228
+ values in before you return
229
+
230
+ **Bad **:
231
+
232
+ .. code-block :: python
233
+
234
+ def math_func (a ):
235
+ return {' square' : a ** 2 , ' cube' : a ** 3 }
236
+
237
+ d = math_func(3 )
238
+ s = d[' square' ]
239
+ c = d[' cube' ]
240
+
241
+ **Good **:
242
+
243
+ .. code-block :: python
244
+
245
+ def math_func (a ):
246
+ return a ** 2 , a ** 3
247
+
248
+ square, cube = math_func(3 )
249
+
0 commit comments