Python is a higher level programming language, easy for novice learner to get a hang of in a short time period. It’s versatile, efficient and powerful.
Versatile refers not only to its seamless incorporation of multiple applications but also its ubiquitously used in many established products such as Facebook, trading software etc. This language is highly speedy in certain executions except for iterative loops, upon which, there is even a jargon -pythonic – becoming a popular word. Powerful can be attributed to its open-source nature, that there are so many packages developed to accomplish all sorts of aims. For example,
NumPy: has a lot of the core functionality for scientific computing. Under the hood is calling C-compiled code, so is much faster than the same functions written in Python. Not the most user-friendly.
SciPy: similar to NumPy but has more means for sampling from distributions, calculating test statistics…etc.
MatPlotLib: The main plotting framework, giving you magic power do craft fancy graphs.
Seaborn: import it after MatPlotLib and it will make your plots a lot prettier by default. Also has its own functionality, but I find the coolest stuff runs too slow.
Pandas: mostly a thin wrapper around NumPy/SciPy to make more user-friendly. Ideal for interacting with tables of data, which they call a DataFrame. Also has wrappers around plotting functionality to enable quick plotting while avoiding complications of MPL. I use Pandas more than anything for manipulating data.
Scikit-learn: Has a lot of supervised and unsupervised machine learning algorithms. Also has many metrics for doing the model selection and a nice preprocessing library for doing things like Principal Component Analysis or encoding categorical variables.
Zipline (Quantopian) is capable of back-testing trading algorithms, including accounting for things like slippage, as well as calculating various risk metrics.
Django: for web development.
Nltk: natural language processing.
To grasp Python, we need to know two fundamental concepts – object and class.
Class is a set encompassing a group of objects sharing same attributes and methods. Objects subdue to Class, objects can be methods and variables. The class makes it easy to inherit between parent-child related classes. For example, a dog class can inherit from an animal class, meaning methods and attributes defined in the animal class can be directly used by dog class. Another example, car class inherits from Vehicle class.
car = Vehicle()
print(car) # <__main__.Vehicle instance at 0x7fb1de6c2638>
In Python, __init__() is often used in the beginning to construct an initialization function.
tesla_model_s = Vehicle(4, ‘electric’, 5, 250)
def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
self.number_of_wheels = number_of_wheels
self.type_of_tank = type_of_tank
self.seating_capacity = seating_capacity
self.maximum_velocity = maximum_velocity
def set_number_of_wheels(self, number):
self.number_of_wheels = number
Above example contains two methods, number_of_wheels and set_number_of_wheels, or getter & setter respectively. A method is differentiated from normal functions in that it contains self as its first parameter. It’s also worth noting that in Python, @property (decorators) is used to define getter & setter：
def number_of_wheels(self, number):
self.number_of_wheels = number