Sitelet https://github.com/Shuffle/python-apps/issues/388
Skip to content

Issue with Variable Scope in Python within Generator Expressions #388

Description

@melv33n

I am facing an issue in Python where variables within generator expressions (such as all(...) or list comprehensions) are not accessible unless declared globally. For instance, in all(row[column] == fieldData for row in eventsList), both column and eventsList are not accessible in that context, resulting in the exception: name 'eventsList' is not defined. Does anyone know how to solve this without declaring the variables globally?

This won't work:

column = 'some_column'
fieldData = 'expected_value'
eventsList = [{'some_column': 'expected_value'}, {'some_column': 'other_value'}]

if all(row[column] == fieldData for row in eventsList):
    print("All rows match")
else:
    print("Not all rows match")

but will do if I append global column, fieldData, eventsList at the beggining

Activity

  1. frikky commented on Dec 12, 2024

    @frikky
    Member

    I am facing an issue in Python where variables within generator expressions (such as all(...) or list comprehensions) are not accessible unless declared globally. For instance, in all(row[column] == fieldData for row in eventsList), both column and eventsList are not accessible in that context, resulting in the exception: name 'eventsList' is not defined. Does anyone know how to solve this without declaring the variables globally?

    This won't work:

    column = 'some_column'
    fieldData = 'expected_value'
    eventsList = [{'some_column': 'expected_value'}, {'some_column': 'other_value'}]
    
    if all(row[column] == fieldData for row in eventsList):
        print("All rows match")
    else:
        print("Not all rows match")

    but will do if I append global column, fieldData, eventsList at the beggining

    Hey!

    Is this in the Execute Python function, Liquid or with a custom app?

    It indeed must have something to do with local vs global scopes if the execute python function 🤔

  2. melv33n commented on Dec 13, 2024

    @melv33n
    Author

    Is this in the Execute Python function, Liquid or with a custom app?

    It's in Execute Python Function inside Shuffle-tools app

  3. frikky commented on Dec 17, 2024

    @frikky
    Member

    @0x0elliot can you look into this? Very relevant to the code editor work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions