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