我知道这是一个非常简单的问题,但我无法理解模块并导入它们。我在下面有一个简单的python程序......
main.py
# Import Function File
from func1 import source_func1
# Run function
source_func1()
# Print Variable 2 From Function
print(source_func1(var2))
func1.py
def source_func1():
pass
# Set Variable 2
var2 = "This is my second variable"
当我跑步时,我收到以下错误......
print(source_func1(var2))
NameError: name 'var2' is not defined
我哪里错了?
答案 0 :(得分:5)
您需要明确导入var2
,就像导入该功能一样:
from func1 import source_func1, var2
或
from func1 import source_func1
from func1 import var2
或者你可以只导入模块并将函数和变量作为模块的属性引用:
import func1
print(func1.source_func1(func1.var2))
但请注意,您在所有这些情况下都会收到错误,因为您的source_func1()
函数没有参与:
TypeError: source_func1() takes no arguments (1 given)
如果您的问题格式错误且var2
实际上是 内部的变量<(在这种情况下您需要修复缩进),那么您需要< em>从函数中返回该值:
def source_func1():
# Set Variable 2
var2 = "This is my second variable"
return var2
然后您可以直接打印返回的值:
print(source_func1()) # the return value will be printed.
或将 new 变量设置为返回的函数:
new_variable = source_func1()
print(new_variable)
新变量也可以命名为var2
,但请注意您的main.py
脚本有自己的命名空间;此模块中名为var2
的变量独立于func1.var2
名称。
答案 1 :(得分:1)
已经给出的答案对你有用,但是如果你想编写自己的函数,那么在source_func1()
的定义中你需要返回var2
的值,然后你需要设置var2
等于函数:
def source_func1():
var2 = 10
return var2
var2 = source_func1() #this defines var2 to equal whatever you put after the return
print (var2) # this should now print the value of var2
答案 2 :(得分:0)
您还可以使用单个$@"\b{pattern}\b";
语句:
您的import
:
main.py
您的import func1
# call your function
func1.source_func1('argument')
# print your variable
print(func1.var2)
:
func1.py