Justis Gipson
Junior Developer
Katie Baird
Sr. Content Marketing Specialist
“There should be one— and preferably only
one —obvious way to do it.”
— from Zen of Python
Python is a growing programming language that is typically used in automation, data analysis, and web development. It was created in the Netherlands during the late 1980s by Guido van Rossum. It first appeared February 20th 1991 as Python 0.9.0., but now, in 2021, Python is in version 3.0.
Since 2003, Python has consistently ranked in the top ten programming languages. As of September 2021, it was the second most popular programming language behind Java. It also won programming language of the year (for highest rise in ratings in a single year) in 2007, 2010, 2018 & 2020, the only language to win four times.
This popular and professionally applicable language will help students advance in their computer science journeys. Let’s dive deeper into the characteristics, syntax, and educational applications of Python.
Just about every company uses Python in some capacity, including Google, Facebook, Amazon, NASA, CERN, Instagram, and Spotify. This is for good reason; the design philosophy of Python emphasizes readability by using varied levels of indentation. This makes it easy to learn python for beginners and professionals alike. Some characteristics of Python are that it’s:
The name “Python” includes pop culture references; the language got its name from the British comedy group Monty Python, who Guido van Rossum said he enjoyed while developing the language. There are numerous references to Monty Python in the code and culture surrounding Python. Traditionally in most programming language’s documentation, you’ll encounter metasyntactic variables (placeholder words) like “foo” and “bar”, but in Python’s docs you’ll see “spam” and “eggs” used instead.
To learn Python, one of the first things you need to do is understand the syntax and semantics of the language. The syntax is the set of rules that defines how a Python program should be written and interpreted by both humans and machines. Python has many similarities to other languages, such as Perl, Java & C, although there are definitely numerous differences.
Python was designed to be a programming language that is highly readable. It has an uncluttered visual layout, and frequently uses English keywords, referred to as “reserved words” where other languages could use punctuation or symbols. For example:
Another significant design decision for Python’s syntax was the use of whitespace as a way to organize control flow blocks, something that was borrowed from Python’s predecessor, ABC. This is different from other languages that use keywords or punctuation.
For example in C we could do:
But Python could be implemented without the brackets, relying on the indentation to organize the code blocks:
According to PEP8, which is Python’s style guide, programmers must use 4 spaces as indentation. Python does not allow the mixed use of tabs and spaces within code blocks.
Since Python is a dynamically typed language, Python’s values – not variables – contain the type information, which has many impacts on the way the language functions. All variables contain references to objects, and these references are what is passed to functions. With some exceptions, a function cannot change the value of variable references when the function is called. This scheme to pass parameters around is referred to as “call-by-object reference” or “call-by-assignment”. Which is a system used within Python in the event an argument passed to a function is a string, integer or whole number, the passing is like call-by-value because you cannot change the value of the immutable objects passed to the function. Whereas passing a mutable object, like a list, to a function is considered call-by-reference because when the value is changed inside a function, it is also reflected outside of the function.
Similar to other dynamically typed languages, Python is moderately type-checked. Implicit conversion for numeric types and booleans is well defined, so one may multiply a complex number by an integer without explicitly casting types. There is no implicit conversion between types like strings and integers – a string would be an invalid argument if passed to a mathematical function that expects a number.
Python has a wide range of base types; conventional integer and floating point arithmetic, it also supports complex numbers, and decimal numbers. Python also supports a range of string operations. By default, strings are immutable in Python. So operations such as the substitution of characters would return a new string in Python, whereas in other languages it might alter the string in-place. For intensive string-manipulation, special techniques, such as joining arrays of characters, might be considered for performance reasons.
Python also has the concept of collection (or container) types. A collection is an object that contains other objects in a way that is easily referenced, or indexed and they come in two basic forms: sequences or mappings.
Dictionaries are a feature that’s central to the internals of Python, as they are at the core of all objects and classes; the mappings between variable names and the values they reference are stored as dictionaries in key:value pairs. This is Python’s Object System in action.
The Object System in Python means that everything is an object, even classes. Classes, as objects, all have a class known as the metaclass, which is a class whose instances are also classes. Python supports type and class introspection, which allows the program to examine types and properties at runtime.
With so many coding languages out there, how do we know which one offers the appropriate level of challenge for our students? Let’s walk through a suggested coding language progression for students that includes Python.
In elementary school, students typically begin their programming journeys with block coding languages like Scratch and Blockly. These drag-and-drop interfaces offer a great introduction to foundational computer science concepts. In middle school, many students graduate to line coding languages. Line coding involves writing “sentences” of code, much like one would write a paper. We suggest students start with a line coding language with visual output, like JavaScript. That way, students can easily see the cause and effect of their code.
Then, in middle school or high school, students might tackle Python. Python is a simple, flexible, and readable language, which makes it ideal for the intermediate coder. Some of Python’s features are similar to JavaScript, like its categorization as a dynamically typed language and support for functions. Over time, though, Python builds in complexity. For example, Python is an extensible language. That means we could write Python code in another programming language, like C or C++, and have it all work properly. Additionally, Python high school courses prepare students for more challenging programming languages, like Java, which is the basis for the AP Computer Science exam.
As a result, we suggest teaching Python to middle school students that have existing foundations in line coding or offering Python for high school students. If you are interested in finding Python projects for high school students, download a free lesson from Ellipsis Education called It’s All in the Details.
You might be asking yourself, “What are some everyday things that might use Python?” Glad you asked… because there are a lot.
You likely interact with devices that use Python all the time, especially those included with the IoT or Internet of Things. IoT devices are non-standard computing devices that have the ability to connect to a network and communicate via the Internet to transmit data. This is all about extending connectivity beyond standard (laptops, PCs, smartphones & tablets) devices to non-internet-enabled physical devices. Some of these devices are smart TVs, smart appliances, wearable technology, toys, and smart speakers. It also might be a sensor in a conference room that facilitates the creation of new meetings based on room size, type, and features available. Then, when the meeting starts, the lights could dim, temperature could adjust, and the appropriate slideshow loads on a screen.
There is also the use of Python in everyday applications and tools that you use. Have you ever used Dropbox? It was built with Python. Instagram, Pinterest, Spotify, Uber and Reddit were also built on or are now running on Python. Python is also used by tons of small startups due to the ability to quickly prototype new features.
Python is also used in the world of Big Data. Big Data is a field in computer science that deals in ways to analyze, extract information from data sets that are just too large to be processed by typical data processing systems. Big Data is used in every field from education to government to healthcare. And Big Data has created an increase in the need to manage this information so much that companies like IBM, Dell, Oracle, Microsoft and others have spent more than $15 billion on finding ways to manage Big Data.
Data Scientists are often hired to help businesses make decisions and improve processes. They use their knowledge of Python programming and other computer science concepts to automate data collection across the business. Data Scientists also create predictive models based on existing data to see what could happen in the future. Beyond being exceptional programmers, data scientists must have analytical skills to extract insights from data and strong communication skills to convey their ideas to others.
Where Data Scientists create technical models of data, Data Analysts help interpret those models and identify trends across the business. They use their Python programming skills to collect, organize, and evaluate data in large databases. Data Analysts must also have strong analytical skills to manipulate their data sets and communication skills to present their findings to stakeholders in the business.
Automation engineers can deliver automated solutions for IT processes. Whether it’s for hardware or software, services or internal processes to the business, they often work closely with teams to help discover, refine and automate repeated tasks. Automation engineers often need a wide range of skills including: understanding all the systems, networks, hardware/software used and also the skills to effectively communicate and collaborate with other realms of the organization.
Machine learning engineers are able to bring the best of the Data Science/Analysis and Software Engineering worlds. While the role is quite similar to that of a Data Scientist, Machine Learning Engineers are often focused on designing reliable, self-running systems for predictive model automation. They often will work closely with Data Scientists to ensure that the models they are using can ingest vast amounts of data, and that the results generated are at the highest degree of accuracy.
Looking for a Python tutorial for beginners? Download a free Python programming PDF from Ellipsis Education to use in your classroom.
In It’s All in the Details, students will spend time predicting, running, and investigating code to enhance their understanding of output and print() functions. Students will then explore the effects of bugs in a Python program and discuss common Python errors to avoid. Students will debug a prewritten program through the modification process. After being exposed to basic debugging, students will independently develop two programs to demonstrate their understanding of bugs in Python.