Scripted languages are hard to beat for development speed.
Programs are grown organically.
Interactive testing lets people work with their tools early.
Readility and beauty.
Highly readable code ( in comparison to supposed weaker readability of Java, .NET, C/C++, batch scripts ), beautiful code ( in comparison to the also highly readable code but supposed less beautiful MATLAB code.. ).
One way to do it.
Perl, Lua, FORTH: When a language has too many styles to choose from ( each with their own idioms ), it becomes a write-only language.
“There should be one – and preferably only one – obvious way to do it”.
“Although that way may not be obvious at first unless you're Dutch”.
Interactive prompt.
Batteries included.
Python.org - About - “Fans of Python use the phrase “batteries included” to describe the standard library, which covers everything from asynchronous processing to zip files”.
SourceForge "Crunchy - Pythonic Documentation", SourceForge "Crunchy" - “An application that formats and delivers html-written Python tutorials inside a browser window, adding interactive elements and snazzy navigation”, “An application that transforms an html-based Python tutorial into an interactive session within a browser window. It was previously known as Crunchy Frog, but the name was changed to avoid conflict with an already existing project”.
The OpenSource Python source code analyzer “PyLint” is integrated in the OpenSource IDEs “PyScripter” and “Spyder” .
If “PyLint” is not included in a Python distribution, it can´t be installed by well-known automatic installation processes. An installation attempt by “easy_install pylint” is aborted due to syntax errors in downloaded Python files and other faults
“PyLint” is similar to “pyflakes” but it doesn't work in real time and its results are printed in the IDE Spyder in a separate widget ( instead of being shown inline in the Spyder Editor ).
The OpenSource Chris Lamb "django-lint" - “A static analysis tool that checks (or “lints”) projects and applications that use the Django web development framework”.
The OpenSource PyEnchant - “PyEnchant is a set of language bindings and some wrapper classes to make the excellent Enchant spellchecker available as a Python module”.
The OpenSoure SonarQube, Codehaus SonarQube - “A code quality management platform, dedicated to continuously analyze and measure technical quality, from the projects portfolio to the class method”.
Licenses. Contracts. Terms and Conditions. This still works even when people can read the code. Note that some of your Python-based components may require that you pay fees before you sell software using those components. Also, some open-source licenses prohibit you from concealing the source or origins of that component.
Offer significant value. If your stuff is so good – at a price that is hard to refuse – there's no incentive to waste time and money reverse engineering anything. Reverse engineering is expensive. Make your product slightly less expensive.
Offer upgrades and enhancements that make any reverse engineering a bad idea. When the next release breaks their reverse engineering, there's no point. This can be carried to absurd extremes, but you should offer new features that make the next release more valuable than reverse engineering.
Offer customization at rates so attractive that they'd rather pay you do build and support the enhancements.
Offer it as a web service. SaaS involves no downloads to customers.
The higher expense to get the Python application into the World Wide Web, both as public webservice and as private cloud service.
There are just a limited number of webhosting offers “with Python”.
In general, the few webhosters which offer webhosting offers “with Python”, offer it just with the more expensive “business professional” offers. While some affordable entry offers include Perl, though...
If the available webhosting offers don´t fit, you have to rent a more expensive whole server ( a physical computer with CPU, memory, disk space, operating system ), like with Java and .NET applications too. Additionally, it is up to you to manage and administrate the server, e.g. update the operating system with security patches ect.
If you distribute code, you can´t distribute “binary code”, but you always have to distribute the full source code.
You can´t protect your intellectual properties.
The most common commercial business model “granting a licence for using a binary code” is not applicable.
The successful Shareware business model “free distribution of a time-limited, but not feature-limited code” ist not applicable.
Indeed, the business model “offering a web service” might work, if your potential customers are willing to store ( private ) data in the Cloud - even for testing the service. Anyhow, you have to be complient to ( European ) data privacy law!
But you can't offer the successfull business option “If you are a big customer, and just in case that you don´t want to use our service in the Cloud, we may implement our service on a local server in your company network”, without distribution of the full source code.
Even if you are used to supply the source code to your customer ( as you work on the base of contracts for work and labor ), this does not mean that your customer is willing to grant its customers access to it...
If you are running your own business with a business model suitable for your Python code: You can´t sell the business later to a party with an improper business model...
Is the concept of the Python application and its Python runtime that of a true realtime application ( making use of internal microcontroller devices like timers ), or similar to the concept of Arduino ( polling of devices with simple-minded code prefered, avoiding interrupt routines as much as possible, and ignoring the usefullness of timer devices on microcontrollers for the generation of “hardware does it, not software” solutions )?
Does the implementation of the operating system provide special file and character device drivers, so that you can address the internal devices and external peripheral units ( e.g. by microcontroller buses like SPI and I2C ) with some elegance?
Can you really make use of internal microcontroller devices ( e.g. timers, dividers, special registers ) and its behaviour ( e.g. setting of the information flow from an electrical signal to an interrupt signal or state of the CPU ) with the same elegance as with native C/C++ code on a microcontroller system without operating system? Same as with other script applications and Java applications... .
Is most of your little RAM reserved by the Python runtime, so that there is no ( much ) space left for applications ?! Same as with FORTH and eLua runtimes... .