Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 修改作为函数内参数传递的变量_Python_Variables - Fatal编程技术网

Python 修改作为函数内参数传递的变量

Python 修改作为函数内参数传递的变量,python,variables,Python,Variables,我试图创建一个函数,该函数接受一个变量,也可以选择一个数据类型和一个提示符作为参数,然后调用input()并将输入分配给参数中的变量 def inp(var, prompt='', intype=str): var = intype(input(prompt)) return None 现在,如果我这样做(假设已经定义了名称x): 我想打印“hello”(该部分已经工作),然后将接收到的输入转换为int,并将其存储在变量x中 然而,它似乎不起作用。(所需值未指定给作为参数传递的

我试图创建一个函数,该函数接受一个变量,也可以选择一个数据类型和一个提示符作为参数,然后调用input()并将输入分配给参数中的变量

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!