Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

Syntax changes for python lambdas.

Project description

Build Status
Supports Python 2.6 - 3.5

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

Read the story

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


Release history Release notifications

This version
History Node

0.1.7

History Node

0.1.6

History Node

0.1.5

History Node

0.1.3

History Node

0.1.2

History Node

0.1.1

History Node

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
lambdazen-0.1.7.tar.gz (3.8 kB) Copy SHA256 hash SHA256 Source None Sep 18, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page