this post was submitted on 29 Apr 2024
34 points (100.0% liked)
Python
6375 readers
5 users here now
Welcome to the Python community on the programming.dev Lemmy instance!
π Events
Past
November 2023
- PyCon Ireland 2023, 11-12th
- PyData Tel Aviv 2023 14th
October 2023
- PyConES Canarias 2023, 6-8th
- DjangoCon US 2023, 16-20th (!django π¬)
July 2023
- PyDelhi Meetup, 2nd
- PyCon Israel, 4-5th
- DFW Pythoneers, 6th
- Django Girls Abraka, 6-7th
- SciPy 2023 10-16th, Austin
- IndyPy, 11th
- Leipzig Python User Group, 11th
- Austin Python, 12th
- EuroPython 2023, 17-23rd
- Austin Python: Evening of Coding, 18th
- PyHEP.dev 2023 - "Python in HEP" Developer's Workshop, 25th
August 2023
- PyLadies Dublin, 15th
- EuroSciPy 2023, 14-18th
September 2023
- PyData Amsterdam, 14-16th
- PyCon UK, 22nd - 25th
π Python project:
- Python
- Documentation
- News & Blog
- Python Planet blog aggregator
π Python Community:
- #python IRC for general questions
- #python-dev IRC for CPython developers
- PySlackers Slack channel
- Python Discord server
- Python Weekly newsletters
- Mailing lists
- Forum
β¨ Python Ecosystem:
π Fediverse
Communities
- #python on Mastodon
- c/django on programming.dev
- c/pythorhead on lemmy.dbzer0.com
Projects
- PythΓΆrhead: a Python library for interacting with Lemmy
- Plemmy: a Python package for accessing the Lemmy API
- pylemmy pylemmy enables simple access to Lemmy's API with Python
- mastodon.py, a Python wrapper for the Mastodon API
Feeds
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Can you give an example? Can you use it to initialize vars outside the scope of the lambda?
No, that's not what it's for. It lets you define a temporary local variable within an expression. This is useful in situations where you might want to use the same value more than once within the expression. In a regular function, you would just define a variable first and then use it as many times as you want. But until the walrus operator came along, you couldn't define a variable within a lambda expression.
Ok, I'm trying to think of a simple example. Let's say you had a database that maps student IDs to records contain their names. To keep things simple, I'll just make it plain old
dict
. And then you have alist
of student IDs. You want to sort these IDs using the student names in the form "last, first" as the key. So you could go:The problem here is that
student_ids
doesn't contain the student names. You need use the ID to look up the record that contains those. So let's say the first IDi
is1261456
. That would mean:evaluates to:
Then we are effectively going:
which should give us:
Without the
:=
you would either have to perform 2student_recs[i]
look-ups to get each name which would be wasteful or replace the lambda with a regular function where you can writerec = student_recs[i]
on its own line and then use it.Am I making any sense?
Actually, now that I think of it, there's no reason you need to join the 2 names into a single
str
. You could just leave it as atuple
of last, first and Python will know what to do in comparing them.So the lambda would be returning
('Potter', 'Harry')
rather than'Potter, Harry'
. But whatever. The:=
part is still the same.The general form is:
So you can do something awful like this:
Not sure if that's "good," but it does kind of let you sneak a statement into the lambda.