【问题标题】:Trying to use a variable that is inside a function for different functions?试图将函数内部的变量用于不同的函数?
【发布时间】:2013-11-11 04:07:39
【问题描述】:

我的代码的某个部分有问题。所以基本上我正在编写一个关于股票的程序并从互联网上下载价格/日期,并且在使用列表日期时遇到了问题,它在一个列表中包含网页中的所有内容,并且想要在其他功能中使用可变日期但是当我尝试时,它说日期不存在。基本上我不能在函数之外调用日期。任何人都可以帮助我吗?

附:我试图达到的目标是在其他函数中使用变量日期,例如在列表日期中提取每个日期并将它们放入一个列表中,然后从列表日期中提取每个收盘价并将它们放入一份清单。

def _print_url_contents(response: http.client.HTTPResponse) -> None:
    content_bytes = response.read()
    content_string = content_bytes.decode(encoding='utf-8')
    content_lines = content_string.splitlines()

    print()
    date = []

    for line in content_lines:
        date.append(line)
    return date

【问题讨论】:

  • 这不是 Jython 或其他一些变体,是吗?我问的原因是-> None 不是普通的 Python。
  • 这是 Python 3。这是普通的 Python。
  • @SrinivasReddyThatiparthy 它是 Python3,-> 表示法称为 function annotations
  • @hcwhsa 感谢您的链接。
  • @LeonardYi 请添加标签python 3.x

标签: python function variables python-3.x


【解决方案1】:

您是否将返回值分配给某个变量?如果是,这就是你应该如何访问日期。顺便说一句,你为什么要注释你正在返回 None,而实际上你正在返回一个日期字符串列表?

我认为 Python 3 类型注释只是建议性的,不具有约束力。但看到一个明显与现实不同步的类型注释,我还是有点担心。

【讨论】:

  • 是的,我忘了更改无,我的错!此外,当我输入 _print_url_contents.date 时,它​​说找不到变量
【解决方案2】:

您可以返回多个变量,也可以发送多个变量。因此,只需将您要从打印函数访问的所有变量返回给驱动程序函数即可。

【讨论】:

    【解决方案3】:

    当然你不能访问date——如果你能访问那就太糟糕了! (请参阅范围的概念以获得进一步的解释)。

    一种可能的解决方法是全局定义date(在你的函数之外)并使用 global date 如果需要,在你的函数中。

    另一个选项是返回 date 并将其传递给下一个函数

    第三个选项是定义一个只存在一次的专用对象(参见“singleton”),它保持日期。但是您仍然必须知道如何访问它(有关可能的解决方案,请参见上文)...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多