繁体   English   中英

如何将字符串变量从一个 function 传递给另一个?

[英]How to pass a string variable from one function to another?

如果我想假设执行 test1 并将结果传递给 excel 然后执行 test2 然后传递结果,我该怎么做? 现在所有测试都必须一起执行。 那可能吗?

import os
import xlswriter
from datetime import datetime
import time


def save_results():
    os.chdir(r'C:\Users\vrozakos\Documents\10P_Results')
    workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
    worksheet = workbook.add_worksheet()
    bold = workbook.add_format({'bold': True})
    worksheet.set_column('A:A', 20)
    worksheet.write('B1', test_1())
    worksheet.write('B2', test2())
    workbook.close()



def test1():
    output = str(ser.read(1000).decode())
    output = str(output)
    if "0x1" in output :
        print('Pass')
        return 'Pass'
    else:
        print('Fail')
        return 'Fail'


def test2():
    output2 = str(ser.read(1000).decode())
    print(output2)
    test2_output = str(output2)
    if "0x1" in test2_output:
        print('Pass')
        return 'Pass'
    else:
        print('Fail')
        return 'Fail'

这真的很简单,不需要改变很多:

def save_results():
    os.chdir(r'C:\Users\user\Documents\Results')
    workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
    worksheet = workbook.add_worksheet()
    bold = workbook.add_format({'bold': True})
    worksheet.set_column('A:A', 20)
    worksheet.write('A1', test1())
    worksheet.write('B1', test2())
    workbook.close()

请注意,我只是在需要结果的地方调用了函数。 我假设这里缺少的其他变量已经在您的代码中的其他地方定义。

编辑:

或者,正如我从您的评论中了解到的那样,您可以在每个测试中调用save_results ,只有在它运行时,但您必须让save_results接受一些 arguments:

def save_results(result, target_cell):
    os.chdir(r'C:\Users\vrozakos\Documents\10P_Results')
    workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
    worksheet = workbook.add_worksheet()
    bold = workbook.add_format({'bold': True})
    worksheet.set_column('A:A', 20)
    worksheet.write(target_cell, result)
    workbook.close()

def test1():
    output = str(ser.read(1000).decode())
    output = str(output)
    if "0x1" in output :
        result = 'Pass'
    else:
        result = 'Fail'
    print(result)
    save_results(result, 'A1')

def test2():
    output2 = str(ser.read(1000).decode())
    print(output2)
    test2_output = str(output2)
    if "0x1" in test2_output:
        result = 'Pass'
    else:
        result = 'Fail'
    print(result)
    save_results(result, 'B1')

但是您应该注意,每次调用save_results添加一个新工作表,您可能希望修改此 function 以每次都写入同一个工作表(但这是关于此事的另一个问题的主题)。

就像我说的那样,你的代码有很多问题,但这里的基本逻辑(在我的两个示例中)是相互调用函数以获取结果(或将 arguments 传递给它们)没有问题。

最好的解决方案似乎是这个,你应该遵循这个:

def save_results():
    os.chdir(r'C:\Users\user\Documents\Results')
    workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
    worksheet = workbook.add_worksheet()
    bold = workbook.add_format({'bold': True})
    worksheet.set_column('A:A', 20)
    worksheet.write('A1', test1())
    worksheet.write('B1', test2())
    workbook.close()
def save_results(result):
    os.chdir(r'C:\Users\vrozakos\Documents\10P_Results')
    workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
    worksheet = workbook.add_worksheet()
    bold = workbook.add_format({'bold': True})
    worksheet.set_column('A:A', 20)
    worksheet.write('A1', 'PLL TEST', bold)
    worksheet.write('B1',result) --> result is string value from pll_test function
    workbook.close()

def pll_test():
    output = str(ser.read(1000).decode())
    alarm_output = str(output)
    if "pll reg=0x1 val=0x3f" in alarm_output :
        save_results("pass") --> pass value to function
        print('Pass')
    else:
        save_results("fail")
        print('fail')

您可以从 pll_test function 接收主 function 中的值。 如果您打算在 print 语句之后返回,则必须在 print 语句之后添加该行作为 return。

现在返回值作为参数传递给调用 save_results function。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM