You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数参数定义及内部变量外部调用报错解决方法

报错根因

你触发的AttributeError: 'function' object has no attribute 'request_symbol'来自两个核心问题:

  • 混淆了变量作用域:函数内部定义的request_symbol是局部变量,仅在函数执行过程中内部可见,外部全局环境无法直接访问
  • 函数调用逻辑错误:调用函数时没有接收返回值,且大概率存在变量名/函数名重名、入参未提前赋值的问题,才会触发从函数对象上找不存在属性的报错。
函数参数声明规则

def定义函数时按以下规则声明参数即可:

  • 所有入参直接写在函数名后的括号内,多个参数用逗号分隔,Python不需要提前声明参数类型,如需类型标注可在参数后加: 类型(非强制)
  • 普通位置参数按定义顺序传值即可,也可以在调用时通过参数名=值的形式指定传参,不用严格按顺序
  • 函数内部赋值的变量(比如你代码里的url、r、data_IS)全部是局部变量,生命周期仅在函数执行阶段,函数运行结束后就会被回收,外部不能直接读取。
正确使用方式

要拿到函数内部计算/生成的值,必须通过return把值返回,调用函数时用外部变量接住返回值才能后续使用,针对你这段代码的修正步骤:

  1. 补上缺失的requests库导入
  2. 调用函数前,先给要传入的symbol、api_key赋实际有效值
  3. 调用函数时,定义一个外部变量接收函数return的结果,不要直接访问函数内部的局部变量名

修正后的可运行代码:

import requests

def request_income_statement(symbol, api_key):
    url = 'https://www.alphavantage.co/query?function=INCOME_STATEMENT&symbol=' + symbol + '&apikey=' + api_key
    r = requests.get(url)
    data_IS = r.json()
    request_symbol = data_IS.get('symbol')
    return request_symbol

# 给入参赋实际值
input_symbol = "AAPL"
input_api_key = "你自己的Alpha Vantage API密钥"

# 调用函数,接收返回值
returned_symbol = request_income_statement(input_symbol, input_api_key)

# 打印拿到的结果
print(returned_symbol)
额外注意点
  • 传参时外部的变量名不需要和函数定义的入参名一致,比如上面代码用input_symbol传给函数的symbol形参,完全不影响运行
  • 不要试图通过给函数对象加属性的方式读取内部变量,这是不符合Python编码规范的写法,后续维护很容易出问题
  • 如果接口请求失败,data_IS可能没有symbol字段,建议加个异常判断避免返回None引发后续报错。

内容的提问来源于stack exchange,提问作者mptrsn217

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:48:11