The following command:
python -m SimpleHTTPServer 8181
will serve the current directory where the command is executed by starting a HTTP server on port 8181
.
The wasListReverse
will reverse a list containing elements of any type.
########################################################################### ## Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 ## ########################################################################### def wasListReverse (l): if len(l) <= 1: return l return listReverse(l[1:]) + [ l[0] ]
Example call:
i = ["sdf", 11, 22, 39] print listReverse(i)
Output:
[39, 22, 11, 'sdf']
Using the programming language's features, we can derive different forms of wasListReverse
.
The listReverseTern
function makes use of the ternary operator (introduced in Python 2.5) in order to get rid of the conditional in the wasListReverse
function:
########################################################################### ## Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 ## ########################################################################### def listReverseTern (l): return l if len(l) <= 1 else listReverseTern(l[1:]) + [ l[0] ]
The listReverse
lambda expression will leverage the ternary operator from the listReverseTern
function and trim down the function to a single line:
########################################################################### ## Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 ## ########################################################################### wasListReverseLambda = lambda x : x if len(x) <= 1 else wasListReverseLambda(x[1:]) + [ x[0] ]
Example call:
wasListReverseLambda = lambda x : x if len(x) <= 1 else wasListReverseLambda(x[1:]) + [ x[0] ] print wasListReverseLambda(["sdf", 11, 22, 39])
Output:
[39, 22, 11, 'sdf']
By expressing the combinator using the combinator as explained, the combinator can be implemented in Python.
#!/usr/bin/python ########################################################################### ## Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 ## ########################################################################### w = lambda x : x( x ); Y = lambda y : w( lambda f : y( lambda x : w(f)(x) ) );
An example call, to calculate the factorial of , would be:
Factorial = Y( lambda f : lambda n : 1 if n <= 1 else n * f(n - 1) ); print Factorial(10);
TypeError: dump() takes at least 2 arguments (2 given)
In case packages cannot be installed and a MemoryError
exception is thrown, then most likely it is due to pip attempting to load packages in memory. To solve the issue, run pip with the additional –no-cache-dir
parameter.
Linux distributions that contain python packages as part of the distribution packaging systems cannot really use pip
to install packages due to the files installed by pip
conflicting with the files from the distribution package. Typically this results in an error along the lines of "error: externally-managed-environment" or "This environment is externally managed" that suggests the user to add the –break-system-packages
flag if the user wants to proceed anyway.
An alternative is to use pipx
:
aptitude install pipx
and then to install the package using pipx
:
pipx install unmanic
where:
unmanic
is the package to be installed
pipx
creates a separate virtual environment containing python along with all the requirements for the package to be installed thereby preventing conflicts with distribution files.
One trick is to specify PIPX_HOME
and PIPX_BIN_DIR
environment variables in order to make pipx
install the application to a specific directory that will become the application directory instead of the application being installed in the same virtual environment as all other applications installed with pipx
.
For example, the commands:
export PIPX_HOME=/opt/unmanic export PIPX_BIN_DIR=/opt/unmanic/bin pipx install unmanic
will install the unmanic
application by creating a virtual environment starting from the filesystem path /opt/unmanic
and by placing the unmanic
binary in /opt/unmanic/bin
.
Now, in order to install a different application, simply change the PIPX_HOME
and PIPX_BIN_DIR
environment variables.