DEV Community

Cover image for Choosing Python for Web Development: Top 16 Pros and Cons
Django Stars for Django Stars

Posted on • Updated on • Originally published at djangostars.com

Choosing Python for Web Development: Top 16 Pros and Cons

Did you know that Python was named after Monty Python?

One of the world’s most popular coding languages, Python was first conceptualized in the late ’80s, influenced by the ABC and Modula-3 languages. It has come a long way from its first release in 1991 to the 2.0 release when it became an open-source project, and to this day it is gathering a huge, professional community that is constantly improving the technology.

Some of the top companies use Python in their technology stacks:

  • Instagram — a social media platform that relies on Python to allow its 4 mil daily active users to photograph, edit, store, and share their creations in a person digital album.
  • Spotify — a major market player and a music streaming app that incorporates data analytics to manage its Radio and Discover features.
  • Disqus — this commenting plugin processes around 50 mil comment per month, and it is available in 19 countries.

Python suits a variety of web projects, from simple to complex. It is widely used in different spheres such as travel, healthcare, transportation, finance, and many others for web development and software testing, scripting, and generation.

Python’s popularity has to do with the various benefits it offers, like the simplicity and elegance that attract big companies including Dropbox, Instagram, and Spotify. However, while there are many advantages to using Python for web development, there are also a few pitfalls. Let's check them out.

img1

Pros: Why Use Python for Web Development?

img0

Easy to Use and Read

There are several factors that simplify the use of Python for web development:

  • Low entry barrier Python is similar to the English language we use in everyday life. The simplicity of the syntax allows you to deal with intricate systems and ensure that all the elements have a clear relationship with each other. Thanks to this, more newbie coders can learn the language and join the programming community faster.
  • Good visualizations Representing data in a format that can be easily understood is achieved using different plots and charts. They are an efficient way to visually present and comprehend data. Web development companies utilize Python libraries e.g., Matplotlib that make it possible to visualize data and create clear and easy-to-understand reports.

Python is incredibly easy to read, so developers typically have no problems understanding code written by their fellow programmers. This makes communication between developers working on the same project much more efficient.

Asynchronous Coding

It doesn’t take much effort to write and maintain asynchronous code using Python since there are no deadlocks or research contention or any other confusing issues. Each unit of such code runs separately, allowing you to handle various situations and problems faster.

Less-Limited Programming Approach

Compared to other coding languages, such as Java, Python has a less-limited programming approach. It has multiple paradigms and can support a multitude of programming styles, including procedural, object-oriented, and functional ones. This makes Python a great language for startups since you might need to change your approach at any given moment.

Here's what it gives you:

  • Fast development. Python is not just one of the most rapidly developing coding languages, but also one that allows for quick prototyping and iterations. This makes the work easier and far more productive for developers.
  • OOP becomes easier. Object-oriented programming, also known as OOP, is a paradigm that organizes different behaviors and properties into several objects and classes. Each of these classes has a function, so if an error occurs in some part of the code, the other parts are not affected. The operation of OOP is considerably simplified in Python, which makes development less costly and time-consuming.
  • Rich standard library and ecosystem. Python’s libraries feature a huge amount of pre-written code. Hence, developers don't need to waste time creating basic items. These libraries also allow programmers to handle and transform the data required for continuous data processing in Machine Learning (ML).

Enterprise Application Integration

Python is a popular choice for enterprise software applications, largely thanks to its smooth integration with other languages traditionally used in enterprise development, such as Java, PHP, and .NET.

Python calls from and to Java, C++ or C code directly allowing considerable process control and implementation of the most common protocols and data formats.

Apart from this, it can be applied to assembling new and old fragments of infrastructure, which is a typical case in complex mobile applications.

Web Development Using Python Frameworks

Another good thing about Python is that it has many frameworks that simplify the development process. Depending on what you’re doing, you may need different frameworks.

Let's take a look at the most well-known Python frameworks.

img2

  • Django.This framework is great for fully-fledged web apps and mid-range scalable projects. It has built-in features and allows for code re-usage, coherent modification of different components of the code, and other functionality that simplifies web development. Django works well with Oracle SQL, PostgreSQL, MySQL, and other well-known databases.
  • Pyramid. With this framework, you can start small and scale if needed. Pyramid can be used with various databases and applications or extended with plugins — developers can add whatever functionality they need. That’s handy when you need to implement various solutions in one task.
  • TurboGearsTurboGears consists of several components such as Repoze, WebOb, and Genshi, and is based on the MVC architecture. It’s good for fast and efficient web application development, which is also more maintainable. With this framework, you can write small or complex applications using minimal or full-stack modes respectively.
  • FlaskThis framework’s philosophy is to provide a simple and manageable solution that can be easily customized. Flask defines itself as a microframework and is most commonly applied to small solutions whose main priority is lean functionality. The framework is also used for creating prototypes.

Its Use In Scientific and Numeric Applications

There are a variety of packages and libraries available for developing scientific and numeric applications, as well as toolkits (e.g., VTK 3D and MayaVi), a separate imaging library, and many other tools. The most commonly used ones are:

img3

Use In Machine Learning and AI

Machine learning (ML) and artificial intelligence (AI) technologies are gaining increasingly more attention, so more developers are trying to incorporate them into various projects. This is possible if you use the right language.

According to Jean Francois Puget, a representative of IBM's machine learning department, Python is the top language for ML and AI projects, and many developers agree. Python has efficient ML packages, tools for visualizing results, and goes way beyond data analysis and other features that benefit this area of applicatio.

img3

Application Scripting and Software Testing

Thanks to its strong integration with C, C++, and Java, Python can come in handy for application scripting. Designed to be embeddable from the very beginning, it can be very useful for customizing large apps and making extensions for them.

Python is used in test automation. Many QA automation specialists choose Python for its simple learning curve – it’s also great for those with a more limited technical background –  strong community, clear syntax, and readability. Python even has an easy-to-use unit-testing frameworks (e.g., you can perform geolocation testing for mobile applications with it).

Use in Prototyping

Creating prototypes in Python has proven to be a fast and simple process. The agility of the programming language allows for easy code refactoring and quick development of the initial prototype into the final product.

Open-Source Perks

Python has an open-source license that makes it easily accessible to users and facilitates redistribution and unrestricted modifications. Developers can freely use the language and contribute to its improvement.

Server-Side Scripting

One of the pros of using Python for server-side scripting is its simple syntax, as mentioned above, which speeds up the process significantly. The code consists of functional modules and connections between them, which allows you to execute the program algorithm based on user actions. Python also supports the graphical user interfaces required in web development.

Portability and Interactivity

Python has decent capabilities for dynamic semantics and fast prototyping, which is possible thanks to its interactivity and portability. It can easily be embedded in a wide range of apps, even ones that use different coding languages. Consequently, you can effortlessly fix new modules and extend Python’s core vocabulary. It can connect diverse components. No wonder it’s sometimes called a “glue language”.

The Cons of Using Python for Web Applications

img4

Despite Python’s advantages, it also has downsides you should keep in mind if you’re considering using this language for your project.

Fewer Seasoned Developers

When you need to have an app created for you, you certainly want the most experienced developers to do the job. However, it’s not so simple with Python, since not many expert programmers are working with this language, especially when you compare it to Java.

Lack of True Multiprocessor Support

Multiprocessing is an important part of writing an application. Python does support multiprocessing, although it might not be as flexible or convenient as other languages. This can create certain limitations when you’re writing the code.

Speed Limitations

Python is often criticized for its speed. It is an interpreted script language, which makes it relatively slower than a lot of its compiled counterparts, such as C/C++ or Java, due to the different methods it uses to translate code. Yet, some Python benchmarks work faster than those of C and C++.

That being said, Python is not the only one with potential speed problems. Ruby, Perl, and even JavaScript are on the slower end of the scale as well.

Some issues connected to speed have been addressed and optimized, so Python remains one of the top choices of software development teams.

Not the Go-To Language for Mobile App Development

It’s not a bad language for mobile development. It’s just that few companies use it for that purpose, preferring native development for iOS and Android or React Native development. You’ll probably have a hard time recruiting developers with experience in Python mobile development, too, for the same reason. It’s just not as popular as other technologies in this sphere.

Not Ideal for Memory-Intensive Tasks

Python is a language known for the flexibility of its data types. This results in fairly high memory consumption and makes it inconvenient to use for memory-intensive tasks.

Design Restrictions

Python is dynamically typed, meaning that it executes certain tasks during app runtime that would otherwise be completed in a statically typed language. This puts some restrictions on the design. If your design is loaded with elements, it might stall the program and prevent smooth operation.

Another thing you should be aware of when considering Python for your project is that concurrency and parallelism aren’t intended for elegant use in Python. Because of that, the design might not look as sophisticated as you’d like.

Closing Thoughts

Python allows you to develop clear and simple applications that are easy to get from a small project to a full-fledged, complex app. Whether you’re a newbie programmer learning how to code or an owner of your business, Python can be a good option for many types of projects.

It’s recognized as one of the best programming languages for startups – and it’s easy to see why when you compare side-by-side Python’s advantages and what startups are all about. Startups are constantly searching for certainty and reduced risks, they have limited resources, and need room to grow. On the other hand, Python is flexible and easy to scale, doesn’t require a big team, and can be used to build prototypes and MVPs.

Django Stars, a Python web development company, has been using the language for many years. We’ve completed various complex projects and have a number of successful examples in spheres such as e-commerce, real estate, and finance. These include:

  • PADI Travel – e-commerce and travel booking platform used by divers from all over the world.
  • Sindeo – a real estate platform that provides information on lenders and mortgages.
  • MoneyPark – a Swiss company that provides personalized financial advice on insurance and mortgages.

So, whichever sphere you work in, Python is worth your attention. It offers simple solutions without unnecessary details, saves time, and ensures a high level of security.

Python is used and trusted by many renowned companies. Some of thelargest and most trusted global firms use Python as their main coding language, along with the Django platform. Instagram, Pinterest, Bitbucket, and Dropbox are a few examples of companies that go for Python web development services.

This article about pros and cons of using python for web development was originally posted on Django Stars blog.

Top comments (11)

Collapse
 
antontsvil profile image
Anton T

Great write up! Could you elaborate on what you mean by Python not having "true" multiprocessor support?

Collapse
 
loki profile image
Loki Le DEV

Python has what is called the "Global Interpreter Lock", you can read more here: docs.python.org/3/c-api/init.html#...

Meaning that when you launch multiple threads in the same python interpreter they are actually locked on one core and can't be really parallelized. For some applications it's not a real issue, when your threads spend most of the time sleeping/waiting for IO for example. But when you need real parallel computing on multiple cores you can't do it with threads.
Python provides the "multiprocessing" module to workaround this, launching code in separate processes. It makes it a bit harder but not impossible to do real multi core parallelization.

Collapse
 
antontsvil profile image
Anton T

Thanks for your explanation! So if I'm understanding correctly the only real way to do parallel processing is to have multiple python processes separate from each other. But that means the data used by each process is sort of isolated, right?

Thread Thread
 
loki profile image
Loki Le DEV

Yes, the multiprocessing module provides some tools to exchange this data: docs.python.org/2/library/multipro... but your data needs to be easily serializable which is not always the case.

Thread Thread
 
rhymes profile image
rhymes

@antontsvil , I personally think the article is a bit misleading becuase it mixes different details under umbrella terms but @loki already explained what's going on in Python :)

Collapse
 
rdil profile image
Reece Dunham

I'm pretty sure that the meaning of this is that Python doesn't handle this stuff well - dealing with it is a pain. I would love Python to the end of time if it just had multithreading that worked.

Collapse
 
rhymes profile image
rhymes • Edited

A couple of notes right from the start:

Python was opensource since the first public release, not since version 2.0, its first public version was in February 1991.

Instagram has around a billion daily active users, not 4 million.

It doesn’t take much effort to write and maintain asynchronous code using Python since there are no deadlocks or research contention or any other confusing issues

This is misleading. Async programming is hard, please don't go around tell people that concurrency is easy eheh. asyncio is a great step forward (asyncore and asynchat in Python 2 were truly horrible) but it's common knowledge that it is not that easy. Which is also the reason they are wrappers on top of it and different approaches like trio to try to make programmers lives easier.

Python does support multiprocessing, although it might not be as flexible or convenient as other languages. This can create certain limitations when you’re writing the code.

I think this sentence is detrimental for a beginner. There's no explanation, just a "yeah you can do it but it's not great". In strict terms Python has multiprocessing support that can have an easy to use interface, I even wrote an article about here on DEV: How to make Python code concurrent with 3 lines.

I'm sure you're referring to something specific but this sentence instills doubt in people without actually having an explanation for it.

I don't think you meant multithreading instead of multiprocessing, but maybe you did?

There's a difference between "multiprocessing" and "support of multiple processors" (which Python always has through multiprocessing but doesn't have in memory bound situations in multithreading due to the GIL). From docs.python.org/3/library/multipro... The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessing module allows the programmer to fully leverage multiple processors on a given machine. It runs on both Unix and Windows.

Another thing you should be aware of when considering Python for your project is that concurrency and parallelism aren’t intended for elegant use in Python. Because of that, the design might not look as sophisticated as you’d like.

I think assertions like this should be clarified in overview articles aimed at beginners. As a seasoned developer I have a likely idea of what you mean (the fact that concurrency is not a language construct but it's done through libraries?), but I'm honestly not even sure about that.

Collapse
 
kateryna_pakhomova profile image
Kateryna Pakhomova

I really enjoyed reading your article. I’d agree on most points there and also learned a few interesting new things. BTW, our team have also written on a similar topic. I think your readers might benefit from checking it out: softformance.com/blog/python-progr...

Collapse
 
socr102 profile image
Eric

Hello I am beginner of python
Your writing is Great for me
I am going to make the e-commerece site using the python/Django
what do you think about its?
The Django is suitable to make the shoping site?
If you have some comment, please let me know

Collapse
 
emizex profile image
layefa Amakubukuro

Very informative for a newbie

Some comments may only be visible to logged-in visitors. Sign in to view all comments.