Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从一个python文件传递到另一个python文件_Python_Function_Variables - Fatal编程技术网

将变量从一个python文件传递到另一个python文件

将变量从一个python文件传递到另一个python文件,python,function,variables,Python,Function,Variables,我有3个py文件;1是从其他2个py文件运行函数的主文件。 其他2个文件将从excel文件中获取数据。我需要用户输入以确定是否从excel收集哪组数据。 在文件1(main)的开头,我将要求用户输入1或2,并将该值存储到预定义变量“mode”中 “底部更新的代码” 但上面会给我关于模式未定义的错误 我在网上找到了一些答案,我把模式输入放在文件2上,把文件2导入到文件1和3上。它正在工作,但我不知道为什么它必须是一个函数,以及“全局”在这里做什么。是否有更好的方法将变量传递给其他文件 有效的代码:

我有3个py文件;1是从其他2个py文件运行函数的主文件。 其他2个文件将从excel文件中获取数据。我需要用户输入以确定是否从excel收集哪组数据。 在文件1(main)的开头,我将要求用户输入1或2,并将该值存储到预定义变量“mode”中

“底部更新的代码”

但上面会给我关于模式未定义的错误

我在网上找到了一些答案,我把模式输入放在文件2上,把文件2导入到文件1和3上。它正在工作,但我不知道为什么它必须是一个函数,以及“全局”在这里做什么。是否有更好的方法将变量传递给其他文件

有效的代码:

文件1:

import file 2
import file 3

if file2.mode == '1':
     function2 from file2
     function3 from file3
elif file2.mode == '2':
     function2 from file2
     function3 from file3
文件2:


def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():
文件3:

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
编辑并更新一些将导致错误的代码

文件1:

from file2 import *

mode = input(print("=>Input '1' for option1\n=>Input '2' for option2"))
if mode == '1':
    get_excel_data()
    print(shape)
elif mode == '2':
    get_excel_data()
    print(shape)
文件2

from file1 import *
###I will get error here for mode not define
if mode == '1':
    data_xls = pd.read_excel('data.xlsx', sheet_name=2d)
    data_xls.to_csv('data.csv', encoding='utf-8')
    df = pd.read_csv(data.csv', header = 1, encoding = encoding)
elif mode == '2':
    data_xls = pd.read_excel('data.xlsx', sheet_name=3d)
    data_xls.to_csv('data2.csv', encoding='utf-8')
    df = pd.read_csv(data2.csv', header = 1, encoding = encoding)

shape = []
def get_excel_data():
    if mode == '1':
        for value in df["Shape"]:
            if type(value) == float:
                if math.isnan(value):
                    print("empty")
                    continue
            else:
                str(value).strip()
                excel_list.append(value)
    else:
        pass



也许我需要在文件2中使用file1.mode?

您不应该像您提到的那样这样做

您必须以如下示例所示的方式执行此操作:

import file1

question = input(int("how old are you?"))
if question > 18:
    file1.adult(question)
else:
    file1.children(question)

不需要任何全局变量,只需定义函数并将数据作为参数传递。例如,主屏幕应该是这样的

mode = input("1 or 2?")
if mode == '1':
     function_from_file2(mode)
     function_from_file3(mode)
elif mode == '2':
     do_something(mode)
在其他文件中

# file 2

def function_from_file2(mode):
    // add your functionally here 

其他文件也是如此

文件和变量是传递信息的错误抽象。将值传递给函数或对象。虽然可以“在文件之间传递变量”,但最终将值传递给函数/对象将是一种复杂的方式。请用有效的代码更新您的问题。完全有可能(尽管不建议)按照问题中的描述进行更新。我也将尝试使用此方法!不客气。请随便给我留一票!我认为你的函数会起作用,把值传递给函数。但我也会在文件2中添加一个'if mode==1 if mode==2',这个'mode'会从文件1中得到值吗?或者只能传递到函数中?文件2中“mode”的值将与主函数相同。您也可以像这样将模式的值保存在文件2中,但这一切都取决于功能/需求
#file 2 mode_1=''def function_from_file2(mode):mode_1=mode
# file 2

def function_from_file2(mode):
    // add your functionally here