Is there a way to access a variable from a calling function in python?

using variables from other functions python
how to get variable from one function to another in python
how to use a local variable in another function python
python pass variable from one function to another
how to call a function within a function python
python call function from another function in class
global variable - python
python export variable from function

I'm unsure if this is possible but I was wondering if there is a way to get a variable from an outer scope without passing it as an argument.

I've played around with global() and inspect but i'm having issues trying to get the attribute.

Here's what i'm trying to do:

class Example:
    @staticmethod
    def query(**kwargs):
        print(f.read())


with open(__file__) as f:
    Example.query(foo='bar')

So after a while of back and forth I have finally found a solution to my issue.

As Matthias suggested I use global to find the object, i decided to use inspect to add it myself like so:

Assigning

def __enter__(self):
    inspect.stack()[1][0].f_globals["_ExampleName"] = self

Retrieving (Fixed)

    @staticmethod
    def _find_example():
        stack = inspect.stack()
        for stack_index in range(2, len(stack)):
            stack_globals = inspect.stack()[stack_index][0].f_globals
            if "_ExampleName" in stack_globals.keys():
                return stack_globals["_ExampleName"]

This is a bit 'dodgy' as inspect is not ment to be used in a production environment, However works and solves my issue

Access variables of caller function in Python, In any language, we use variable to save some values , it could be anything int, functions results in another functions, which we use to work in another ways. variable in end of func1 and call that func1 for assignment variable in func2, will How to enable KVM virsh console access for Ubuntu 20.04 VM� Variables that are defined inside a function body have a local scope, and those defined outside have a global scope. This means that local variables can be accessed only inside the function in which they are declared, whereas global variables can be accessed throughout the program body by all functions. When you call a function, the variables declared inside it are brought into scope.

Here is a MCVE of what you're trying to do.

class Example:
    @staticmethod
    def query(**kwargs):
        print(f.read())


with open(__file__) as f:
    Example.query(foo='bar')

Works as expected.

Python: Passing Variable Between Functions, Functions are one of the "first-class citizens" of Python, which means that The inner function is able to access the variables within the enclosing scope. The function1() will then go ahead and call function2() as it has been defined inside it. Python also accepts function recursion, which means a defined function can call itself. Recursion is a common mathematical and programming concept. It means that a function calls itself. This has the benefit of meaning that you can loop through data to reach a result.

What you should do is have the Client class set a class variable to the current session.

class Client:

    last_session = None

    def Session():
        # code that creates new session, in variable s
        Client.last_session = s
        return s

client = Client()
with client.Session as s:
    Example.query(foo=bar)

Class Example:

    @staticmethod
    def query(**kwargs):
        s = Client.last_session
        s.magic_stuff()

Python Nested Functions, In Python, we can define the variable outside the class, inside the class, and even inside the methods. Let's see, how to use and access these variables throughout the program. Variable Calling method by creating object. uac = Geek(). In this case, indeed there is! Python provides a way to pass a function a variable number of arguments with argument tuple packing and unpacking using the asterisk (*) operator. Argument Tuple Packing. When a parameter name in a Python function definition is preceded by an asterisk (*), it indicates argument tuple packing.

Python, When we try to use y on line 6 (outside the function) Python looks for a global Each call of the function creates new local variables, and their lifetimes expire when the On the other hand, it is legal for a function to access a global variable . Local and Global variables A variable in a function in Python is a local variable if it is not declared as something else. A local variable can be accessed only locally i.e., a variable defined inside a function is accessible to that function only and can't be used outside the function.

6.4. Variables and Parameters are Local — How to Think like a , The second value in the function call, 120, is copied into the second formal parameter in whether a variable is local or global and how you access the variable. If you want to allow a function to change a variable in the caller, then you need to pass a pointer to that variable. You might be wondering if you can get around the immutable restriction by simply passing an immutable object to C using a pointer.

ProjPython – Parameters, return values, and scope, The return statement; How To Call a Function; How To Add You access it with an instance or object of the class. You can unpack tuples into multiple variables with the help of the comma and the assignment operator. In this program, we are going to learn How to access one class variable in another class as well as a single level inheritance in python. You can read more: How the concept of Inheritance is implemented in Python Access one class variable in another class using inheritance in python. What is inheritance:

Comments
  • At least show what is the error that you get. And what is get_b()?
  • I can't mentally parse what you're trying to do here, let alone anything looking messy. What is a that you're calling with the context manager? What is get_b? What was the purpose of as b:?
  • We don't need to see it in full, we need to understand what you're actually trying to do. As it is, it's impossible for me to get a grip on your intentions and adding more code isn't going to help if you can't boil it down to a simplified example
  • c() needs return b
  • Please don't make more work for others by vandalizing your posts. By posting on the Stack Exchange (SE) network, you've granted a non-revocable right, under a CC BY-SA license, for SE to distribute the content (i.e. regardless of your future choices). By SE policy, the non-vandalized version is distributed. Thus, any vandalism will be reverted. Please see: How does deleting work? …. If permitted to delete, there's a "delete" button below the post, on the left, but it's only in browsers, not the mobile app.
  • ... and I'm not, so I can't accept your answer. You can't accept it right now either, because there is a delay in accepting self answers, see stackoverflow.com/help/self-answer
  • If my code gives you the error "name 's' is not defined" then something is really really wrong.
  • f is created as a variable on global level. with doesn't introduce a new scope, so of course f is known in the static method like it would be in an ordinary function.
  • Every time you reassign b, c() will get the latest value.
  • It't not clear what you're really trying to do. b is just a variable. You just have to use the same name when you assign it and when you reference it inside c().
  • It sounds like you're trying to make all the code that uses the database refer to the last session that was opened, without having to pass s as a parameter. Is that it?
  • How would listing the variables help if you don't know the variable name?
  • What if there's more than one of the type?