Difference between revisions of "Python"
From Healthcare Robotics Wiki
(→HRL Coding Standards) |
(→HRL Coding Standards) |
||
| Line 3: | Line 3: | ||
** Every indent is 4 spaces, replace '''all''' tabs with spaces. | ** Every indent is 4 spaces, replace '''all''' tabs with spaces. | ||
** ClassName, method_name, _private_name | ** ClassName, method_name, _private_name | ||
| − | ** Use classes sparingly, please try to define functions whenever possible. | + | ** Use classes sparingly, please try to define functions whenever possible. Functions should not be more than a page or two long unless there is an extremely good reason to do so. |
** Instead of using inheritance, use [http://en.wikipedia.org/wiki/Duck_typing duck typing] (i.e. define interfaces based on conventions) | ** Instead of using inheritance, use [http://en.wikipedia.org/wiki/Duck_typing duck typing] (i.e. define interfaces based on conventions) | ||
** With numpy, use matrices instead of arrays, all vectors should be column vectors. | ** With numpy, use matrices instead of arrays, all vectors should be column vectors. | ||
| Line 14: | Line 14: | ||
def my_function(a, b): | def my_function(a, b): | ||
return b*a | return b*a | ||
| + | ** Use default parameters sparingly | ||
| + | ** We use python 2.5.2 | ||
| + | ** Use whitespace to separate functional parts of code, but '''do not''' use them misleadingly. This is misleading: | ||
| + | self.size_image = highgui.cvQueryFrame(self.capture) | ||
| + | self.size = cv.cvGetSize( self.size_image ) | ||
| + | |||
| + | self.color = cam_param['color'] | ||
| + | |||
| + | self.intrinsic_cvmat = cv.cvCreateMat(3,3,cv.CV_32FC1) | ||
| + | self.distortion_cvmat = cv.cvCreateMat(1,4,cv.CV_32FC1) | ||
| + | The below would be preferred if there are not obvious separations: | ||
| + | self.size_image = highgui.cvQueryFrame(self.capture) | ||
| + | self.size = cv.cvGetSize( self.size_image ) | ||
| + | self.color = cam_param['color'] | ||
| + | self.intrinsic_cvmat = cv.cvCreateMat(3,3,cv.CV_32FC1) | ||
| + | self.distortion_cvmat = cv.cvCreateMat(1,4,cv.CV_32FC1) | ||
== learning python == | == learning python == | ||
Revision as of 17:36, 20 November 2009
Contents |
HRL Coding Standards
- In general, we follow the official python coding standards (Python standards) but we will summarize here the relevant key points.
- Every indent is 4 spaces, replace all tabs with spaces.
- ClassName, method_name, _private_name
- Use classes sparingly, please try to define functions whenever possible. Functions should not be more than a page or two long unless there is an extremely good reason to do so.
- Instead of using inheritance, use duck typing (i.e. define interfaces based on conventions)
- With numpy, use matrices instead of arrays, all vectors should be column vectors.
- We use doxygen styled comments:
##
# some comments
# @param a is 3x1 point in coordinate frame C
# @param b is a 3x3 rotation matrix
# @return a 3x1 vector rotated by b
def my_function(a, b):
return b*a
- Use default parameters sparingly
- We use python 2.5.2
- Use whitespace to separate functional parts of code, but do not use them misleadingly. This is misleading:
self.size_image = highgui.cvQueryFrame(self.capture)
self.size = cv.cvGetSize( self.size_image )
self.color = cam_param['color']
self.intrinsic_cvmat = cv.cvCreateMat(3,3,cv.CV_32FC1)
self.distortion_cvmat = cv.cvCreateMat(1,4,cv.CV_32FC1)
The below would be preferred if there are not obvious separations:
self.size_image = highgui.cvQueryFrame(self.capture)
self.size = cv.cvGetSize( self.size_image )
self.color = cam_param['color']
self.intrinsic_cvmat = cv.cvCreateMat(3,3,cv.CV_32FC1)
self.distortion_cvmat = cv.cvCreateMat(1,4,cv.CV_32FC1)
learning python
- http://docs.python.org/
- http://docs.python.org/library/index.html
- python for programmers
- guido's guide (http://docs.python.org/tut/)
- dive into python (book) (http://www.diveintopython.org/toc/index.html)
- quick reference (http://rgruet.free.fr/PQR25/PQR2.5.html)
- ipython (http://ipython.scipy.org/moin/)
math, science, numerical, etc.
- numpy (http://numpy.scipy.org/)
- scipy (http://scipy.org/)
- matplotlib (http://matplotlib.sourceforge.net/): in ipython shell
- mayavi (http://code.enthought.com/projects/mayavi/)
opencv
- python specific documentation: PythonInterface, SWIG Python Interface
efficiency
- When you need buffering of some sort for logging/writing data, if speed is important use the deque data structure instead of lists: http://docs.python.org/library/collections.html#collections.deque