Python:将参数从顶级函数传递到嵌入式函数

Python:将参数从顶级函数传递到嵌入式函数,python,Python,这是一个简化的例子。但基本上,我有一个函数中的函数。我想将参数从顶级函数传递到嵌入式函数,但它不起作用。我如何解决这个问题 多谢各位 def Check(file_name, mh_criticalval): test_file=file_name def eval_value(excel_sht, excel_col, mh_value): if excel_sht.cell(row=i, column=excel_col) > mh_value

这是一个简化的例子。但基本上,我有一个函数中的函数。我想将参数从顶级函数传递到嵌入式函数,但它不起作用。我如何解决这个问题

多谢各位

def Check(file_name, mh_criticalval):
    test_file=file_name

    def eval_value(excel_sht, excel_col, mh_value):
            if excel_sht.cell(row=i, column=excel_col) > mh_value:
                cell_cny_b=excel_sht.cell(
                    row=i,
                    column=excel_col
                ).value='OK'
 
    eval_value(sht, 9, mh_criticalval)
 
 
Check('test.xlsm',1)

方法1:取消嵌套

这里最明显的方法是删除嵌套函数。这样做很简单:

def eval_mh(excel_sht、excel_col、mh_值):
如果excel单元格(行=i,列=excel列)>mh值:
单元格\u cny\u b=excel\u sht.cell(行=i,列=excel\u col)。value='OK'
def CheckDiag(文件名,mh临界值):
测试文件=文件名
评估(第9页,评估临界值)
检查诊断('test.xlsm',1)
我们在这里所做的就是将内部函数移出但是,如果仍然希望嵌套,请尝试以下操作

方法2:局部/全局变量利用

这里,我们用mh_criticalval替换所有mh_值实例

def CheckDiag(文件名,mh\u criticalval):
测试文件=文件名
def eval_mh(excel_sht,excel col):
如果excel单元格(行=i,列=excel列)>mh\U临界值:
单元格\u cny\u b=excel\u sht.cell(行=i,列=excel\u col)。value='OK'
评估(第9页)
检查诊断('test.xlsm',1)
方法3:为什么有两个函数?

在这个方法中,我们完全删除了这个函数


def CheckDiag(文件名,mh临界值):
测试文件=文件名
如果短单元(行=i,列=9)>mh\U临界值:
单元格\u cny\u b=sht.cell(行=i,列=9)。value='OK'
评估(第9页)
检查诊断('test.xlsm',1)

什么特别不起作用?有堆栈跟踪吗?或者它没有产生你想要的结果?你能添加你面临的问题吗?这个
eval\u值(sht,9,mh\u criticalval)
调用中的
sht
参数是什么。我想您没有初始化此值中的任何内容
sht
来自哪里?为什么要在函数中使用函数?您的代码是否因为遗漏了可能相关的代码而缩进错误?你犯了什么错误?你期望看到什么?