首页 > 解决方案 > 如何使用 python 3.x 在同一文件中的所有函数中使用变量值

问题描述

我有一个需要用户输入并将其存储在变量中的函数。现在当我想在其他函数中使用这个变量时,我必须先执行input()函数,因此我必须再次提供输入。是否有可能我也可以在其他函数中使用变量 get_input 而无需执行input()函数或再次提供输入?我尝试将变量声明为global也但没有用。

可能吗?

def input():
    get_input = str(input("please provide name"))
    return get_input

def output():
    val = input() # it is executing the function input() and hence need to prvoide input

def getvalue():
    val = input() # it is executing the function input() and hence need to provide input

我们不能将输入值存储在一个变量中并在文件中的所有函数中使用它吗?

return正在使功能每次都执行,因此每次都必须提供输入

标签: pythonpython-3.x

解决方案


你不需要全局变量。您可以创建一个函数来包装对输入的调用并简单地返回一个缓存值。

cachedinput.py (定义函数)

from functools import partial, cache

getname = cache(partial(input, 'please provide name: '))

usecachedinput.py (调用函数)

from cachedinput import getname

print(getname())
print(getname())
print(getname())
print(getname())
print(getname())

它只会询问名称一次。它还可以导出变量而不是函数。

如果functool.partial这里的使用有点太神秘了。它可以实现为cache用作装饰器的函数。

@cache
def getname2():
    return input('please provide name: ')

推荐阅读