Python 如何将字符串变量从一个函数传递到另一个函数?

Python 如何将字符串变量从一个函数传递到另一个函数?,python,python-3.x,function,xlsxwriter,Python,Python 3.x,Function,Xlsxwriter,如果我想执行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.Workboo

如果我想执行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'

您可以从pll_测试功能接收主功能中的值。如果要在print语句之后返回,则必须在print语句之后添加行作为return


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

它非常简单,不需要太多更改:

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
接受一些参数:

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
都会添加一个新的工作表,您可能希望修改此函数,以便每次都在同一工作表中写入(但这是有关此问题的另一个问题的主题)


正如我所说,您的代码有很多问题,但这里的基本逻辑(在我的两个示例中)是,调用彼此内部的函数以获取结果(或向它们传递参数)没有问题。

最好的解决方案似乎是这样,您应该遵循以下步骤:

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()

首先谢谢你的回答!我可能需要稍微改变一下这个问题,因为即使这样做有效,也不完全是应该的。如果我想执行一个测试(函数),然后将结果传递给excel,我会怎么做?按照现在的方式,所有测试都必须一起执行?这可能吗?问题是:如果我想执行一个测试(函数),然后将结果传递给excel,我会怎么做?按照现在的方式,所有测试都必须一起执行?可能吗?我将把它编辑成主要问题well@Bill我的答案中的方法是单独运行每个测试,所以我不确定你的意思。如果只想运行其中一行,请删除另一行代码。或者,让每个测试仅在运行时将自己的值写入
xlsx
文件(这根本不涉及
save_results
函数)
或者,让每个测试仅在运行时将自己的值写入xlsx文件,这就是意思,我该怎么做?@Bill我再次编辑了我的问题,向您展示了一个例子,使用您的
save_results
函数原样,但如果不对该函数进行重大修改,这也不是预期的行为。在我看来,你应该就任何此类问题提出单独的问题
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()