Python 修改作为函数内参数传递的变量
我试图创建一个函数,该函数接受一个变量,也可以选择一个数据类型和一个提示符作为参数,然后调用input()并将输入分配给参数中的变量Python 修改作为函数内参数传递的变量,python,variables,Python,Variables,我试图创建一个函数,该函数接受一个变量,也可以选择一个数据类型和一个提示符作为参数,然后调用input()并将输入分配给参数中的变量 def inp(var, prompt='', intype=str): var = intype(input(prompt)) return None 现在,如果我这样做(假设已经定义了名称x): 我想打印“hello”(该部分已经工作),然后将接收到的输入转换为int,并将其存储在变量x中 然而,它似乎不起作用。(所需值未指定给作为参数传递的
def inp(var, prompt='', intype=str):
var = intype(input(prompt))
return None
现在,如果我这样做(假设已经定义了名称x):
我想打印“hello”(该部分已经工作),然后将接收到的输入转换为int,并将其存储在变量x中
然而,它似乎不起作用。(所需值未指定给作为参数传递的变量)。我知道我的代码很难使用,因此如何才能使其正常工作?您可以按如下所示修改代码以获得所需的结果
def inp(prompt,intype):
var = intype(input(prompt))
return var
x = inp("Hello",float)
print(x)
您还可以检查此线程(),如其中一条注释中所述,如果您执行了以下操作,它将正常工作,但是您必须稍微更改您的函数签名:
def inp(variableName, prompt='', inttype="str"):
operation = "global {variable}; {variable} = {cast}(input(prompt))"
exec(operation.format(variable=variableName, cast=inttype, prompt=prompt))
因此,您需要修改该方法以接受字符串,而不是实际值
因此,如果要修改变量x,则需要传入字符串“x”
这种方法将exec封装在一个函数中
In [19]: def inp(variableName, prompt='', inttype="str"):
...: operation = "global {variable}; {variable} = {cast}(input(prompt))"
...: exec(operation.format(variable=variableName, cast=inttype, prompt=prompt))
...:
In [20]: inp("x", prompt="hello world", inttype="str")
hello worldbye!
In [21]: print(x)
bye!
教训是python是一种动态语言,任何事情都是可能的:)(但我不建议这样做)您应该从函数返回新值并分配结果。可能是重复的,但您可能不应该这样做。函数返回其输入时更有意义。@Carcigenicate我永远不会将其用于任何实际用途,这只是一个实验。另请参见,但这不是我想要的……我希望在函数本身中指定值。
In [19]: def inp(variableName, prompt='', inttype="str"):
...: operation = "global {variable}; {variable} = {cast}(input(prompt))"
...: exec(operation.format(variable=variableName, cast=inttype, prompt=prompt))
...:
In [20]: inp("x", prompt="hello world", inttype="str")
hello worldbye!
In [21]: print(x)
bye!