Introduction to Python Network Programming for Network Architects and Engineers
Additional Background for DevNet1040, 1041 and 1042 seminars:
Over the last two weeks, I’ve put together a series of videos that focus exclusively on Python language syntax and structure called ‘Getting Started’,(a listing of the content and link to the videos provided below). There are twenty-five videos of about 20 to 30 minutes each - most of which have accompanying code examples.
The idea is just to provide some background on Python so that session participants can at least go back from CL with a starting point/reference guide for the Python language. With this in mind, I went out of my way *not* to include anything that was network focused in the content – the material is just about the Python.language.
Given that there’s nearly ten hours of video content, wading through all of that stuff before our sessions would be nearly impossible, so there’s absolutely no expectations that participants need to get through or even understand the content – think of it as just a Python reference library that’s available for future use.
I do intend,(time permitting) to upload some additional videos on what we cover in the seminars as well as some topics that I’ve needed to leave out because of time restrictions.
*MOST IMPORTANTLY*, I’m hoping that if you *do* happen to review the material before the sessions, please provide some feedback, comments, thoughts and/or opinions on what you think!
Where to Start/How to Use the Material:
The content is divided into three sections:
Part I – Python Background
Part II – Python Installation
Part III – Python Fundamentals
Part I – Python Background: if your completely new to Python and would like to get some general information about things like;
The differences between compiled and interpreted languages
Python portability, modules and how the Python interpreter generally works
The various implementations of the Python language as well as the pros and cons of Python 2.7 versus Python 3.x
Part II – Python Installation: Start here If you’d like to install Python yourself on your own machine. This walks you through Python installation, virtualenv and working with the IDLE Integrated Development Environment.
Part III - Python Fundamentals: If you’re just interested in understanding Python syntax and language structure in general, then begin here. The 16 videos and code examples in this section cover the language basics.
‘Just Curious What’s Out There’: Finally, if you’ve worked with Python before but are wondering if any of the material would be useful, then take a look at the final video in Part III called ‘Python Fundamentals – Functions Pat V Putting it all Together’ or browse through the attached spreadsheet. If you find yourself nodding off or bored to tears, then great! No need to continue
What’s Not Covered in the Material:
What follows is a list of topics that have been (intentionally) left out of the videos:
The videos are Python 2.7 based,(although we do try to point out the differences between Python 2.7 and 3.5 whenever possible). The reason for this is that there is still a substantial following/legacy code base of Python 2.7 deployed. The intent is to cover ‘as much ground as possible’ by orienting everything around 2.7
The videos provide very little focus on Python best practices – e.g., PEP 8 standards, security, code reuse, efficiency or developing robust, ‘bullet-proofness’:):)
The videos only cover a *SMALL* subset of the Python language. For example:
We cover only the simple data types, completely ignoring topics like; sets, numeric complex data types, etc..
The content is intended to just cover the ‘blocking and tackling aspects’ of the Python language so the videos ignore ‘more sophisticated’ topics like anonymous functions/lambda/list comprehensions/generators/decorators, etc., etc., etc.:)
The videos also completely stay away from/consciously avoid, *any* discussions about OOP. The entire premise of the DevNet sessions is that, although OOP is an extremely powerful core component of Python, at times, it can also be an impediment to learning.
In my opinion, ‘classically oriented’ Python training materials sometimes have a tendency to be too focused, (and too confusing) about programming abstractions. This is a problem because I think the networking community (myself included) tend to think in terms of ‘step-by-step, block diagram-like’ procedures;)
The purpose of these sessions is to demonstrate that Python is so flexible that you don’t need to think in terms of one type or the other - Python can be used/coded in a purely OO style or in a completely procedural style. The latter being something that is perfect for the types of tasks that we in the networking community typically need to accomplish.
I hope you find the material useful and enjoyable, and *please* provide feedback! – let us know what you think!