Difference between revisions of "Python"

From Healthcare Robotics Wiki
Jump to: navigation, search
(HRL Coding Standards)
(HRL Coding Standards)
Line 2: Line 2:
 
In general, we '''strongly''' recommend that everyone follow the official python coding standards ([http://www.python.org/dev/peps/pep-0008/ Python standards]) but we will summarize here the relevant key points.
 
In general, we '''strongly''' recommend that everyone follow the official python coding standards ([http://www.python.org/dev/peps/pep-0008/ Python standards]) but we will summarize here the relevant key points.
 
* Every indent is 4 spaces, replace '''all''' tabs with spaces.
 
* Every indent is 4 spaces, replace '''all''' tabs with spaces.
 +
* Don't use 'from blah_module import *'
 +
* imported names must be longer than 1 character.
 
* ClassName, method_name, _private_name
 
* ClassName, method_name, _private_name
 
* Use default parameters sparingly.
 
* Use default parameters sparingly.

Revision as of 22:29, 28 November 2009

HRL Coding Standards

In general, we strongly recommend that everyone 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.
  • Don't use 'from blah_module import *'
  • imported names must be longer than 1 character.
  • ClassName, method_name, _private_name
  • Use default parameters sparingly.
  • 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.
  • Debugging printouts that are left in the code should be annotated with the class and method name that is generating it. Instead of:
 def some_func(a,b):
   print "results of a + b", a+b

Use:

 def some_func(a,b):
   print "<my_file.py> some_func: results of a+b
  • 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 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)
  • Again, we strongly recommend that you be extremely familiar with the python coding standards: Python standards

learning python

math, science, numerical, etc.

opencv

efficiency