Syntax changes for python lambdas.
Project description
What is this?
A better python lambda syntax for your anonymous function needs.
Write a = (x) > x instead of a = lambda x: x. See below for syntax caveats.
Get started immediately: pip install lambdazen
from lambdazen import zen
def otherfunc(*args):
print sum(args)
# The zen decorator allows you to define lambdas with a better syntax
@zen
def example():
example.epic = (x, y, z) > otherfunc(x, y, z)
# Multiline lambdas are a tuple or list of statements
# The assignment operator inside is << instead of =
# The last statement is the return value
example.multiline = (x, y, z) > (
s << otherfunc(x, y, z),
s
)
# Call function so the lambdas are bound to function attributes
example()
example.epic(1,2,3)
>>> 6
example.multiline(1,2,3)
>>> 6
Caveats
better lambdas can only be defined in a function with the @zen attribute
any other code in this function will be executed, it’s best to use the function as a container of lambdas
How does it work
TLDR; Runtime in-memory source rewriting and recompilation
Additional Examples
from lambdazen import zen
# Lambdas don't need to be bound to the function
@zen
def normalizeString(nS):
transforms = [
(s) > s.strip(),
(s) > s.lower(),
(s) > s.replace(' ', '_')]
apply_all = (transforms_list, s) > (
is_done << (len(transforms_list) == 0),
current_transform << transforms_list[0] if not is_done else None,
remaining_transforms << transforms_list[1:] if not is_done else None,
current_transform(apply_all(remaining_transforms, s)) if not is_done else s)
return apply_all(transforms, nS)
normalizeString("Abraham Lincoln")
>>> "abraham_lincoln"
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
lambdazen-0.1.7.tar.gz
(3.8 kB
view details)
File details
Details for the file lambdazen-0.1.7.tar.gz
.
File metadata
- Download URL: lambdazen-0.1.7.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7bb135de9d96853185b13bae07c95b21f0ac7d0ac2750b9605d616f89999930 |
|
MD5 | be1f6ec116ac13627852c92f0a871d4f |
|
BLAKE2b-256 | 0b6bf8a72861c9dc87bb615a9b4c803665c5c2f48528b81149ea4d6a9f7488ef |