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

VSCode中Jupyter Notebook导入Python脚本函数报错:float object argument after ** must be a mapping, not int 的解决方法

解决导入自定义Python函数到Jupyter Notebook的报错问题

你遇到的这个问题确实有点棘手——同一个函数直接粘到Notebook里能正常运行,但从.py文件导入就触发float object argument after ** must be a mapping, not int的错误。我来帮你拆解可能的原因和对应的解决办法:

可能的原因及解决方案

1. .py文件里的函数定义和你复制的版本不一致

有时候编辑.py文件时,可能不小心改动了符号或格式,比如:

  • 把英文的**(幂运算符号)误写成了中文星号,或是被编辑器自动转换成了上标符号
  • 表达式的括号、空格出错,导致Python把**错误解析成了关键字参数的展开操作(这正是错误提示的来源)

解决办法:
打开你的.py文件,逐行对比和Notebook里能正常运行的函数代码,重点检查10**-3这类幂运算的写法,确保**是两个连续的英文星号,没有被篡改。

2. 模块缓存导致加载了旧版本的函数

Jupyter Notebook会缓存已经导入的模块,如果你之前修改过.py文件,但没有重新加载模块,当前Notebook环境里调用的还是旧的、有错误的函数版本。

解决办法:
在Notebook里执行以下代码重新加载模块(把your_module_name换成你的.py文件的名字,不带.py后缀):

import importlib
import your_module_name
importlib.reload(your_module_name)

之后重新导入函数并调用试试。

3. .py文件缺少必要的依赖导入

你的函数里用到了math.sin,如果.py文件开头没有写import math,导入函数调用时会找不到math模块——虽然通常会报NameError,但也不排除某些情况下触发连锁的奇怪错误。

解决办法:
在你的.py文件最顶部添加:

import math

保存文件后,重新加载模块再测试。

4. 调用函数时的参数传递有误

虽然你说直接粘函数到Notebook里调用正常,但导入函数后可能不小心误用了**传递参数(比如写成pressure2depth(**P, L, Del)),这会触发**需要mapping类型的错误。

解决办法:
确认导入后的调用代码和Notebook里正常运行的调用代码完全一致,比如正常调用是pressure2depth(100, 30, 0.5),导入后也要保持同样的写法。

5. 测试.py文件本身是否能正常运行

为了排除Jupyter环境的问题,你可以直接在.py文件末尾添加测试代码,比如:

import math

def pressure2depth (P, L, Del): 
    # calculate depth from pressure sensor 
    # pressure (P) : in dbar 
    # latitude (L) : degree 
    # Geopotential anomaly (Del) : dyn meteres 
    X = math.sin(L / 57.29578)*math.sin(L / 57.29578) 
    GR = 9.780318 * (1.0 + (5.2788*(10**-3) + (2.36*(10**-5)) * X) * X) + (1.092*(10**-6)) * P 
    DepthTerm = ((( (-1.82*(10**(-15))) * P + 2.279*(10**(-10))) * P - 2.2512*(10**(-5)) ) * P + 9.72659) * P 
    DEPTH = DepthTerm / GR + Del / 9.8 
    return DEPTH

# 测试调用
print(pressure2depth(100, 30, 0.5))

然后在终端直接运行这个.py文件,如果报错,说明问题出在.py文件本身,根据终端的错误提示再排查;如果能正常输出结果,那问题就回到Jupyter的模块加载上。

内容的提问来源于stack exchange,提问作者Dong-gyun Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:42:28