【问题标题】:How do i change the value of a variable but from inside a function?如何从函数内部更改变量的值?
【发布时间】:2015-12-07 23:22:51
【问题描述】:
p = input(":")
def c (p):
    p = "cat"
    return p 

print(c(p))

print(p) #how do i make this p be cat

有没有办法做到这一点?

【问题讨论】:

  • 你必须设置p = c(p) 来获取你的函数的返回值。
  • 当然这是正确的方法@RNar ...但不是唯一的方法:P
  • 这是一个范围问题。 p 已经引用了方法内部的东西。
  • @Joran 有很多丑陋的方法(不仅通过全局,你可以做得更脏)但仍然,我们应该建议正确方法:-)

标签: python function python-3.x


【解决方案1】:

您在这里遇到了范围问题。你有这个代码:

p = input(":")
def c(p):
    p = "cat"
    return p 

虽然您可以选择使用全局,但您可以更简单地将传入的变量名称更改为其他名称。目前,当您执行p = "cat" 时,您所引用的p 是您的方法框架内的那个,而不是全局框架中的那个。如果您将参数的名称更改为“z”,那么您将引用正确的p。所以这会起作用:

p = input(":")
def c(z):
    p = "cat"
    return p 

您可以在加州大学伯克利分校的入门 CS 课程的优秀在线教科书上阅读框架并了解 Python 如何与不同框架交互:http://composingprograms.com/

我建议阅读第 1 章第 5 节 - 它涉及解决此问题的方法。

【讨论】:

    【解决方案2】:

    您可以使用global 在函数内定义或更改全局变量的另一种方式,如下所示:

    p = input(":")
    def c (p):
        global p
        p = "cat"  # now the `p` become 'cat'
        return p 
    
    print(c(p)) 
    print(p)  # it's 'cat'
    

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多