Python 3无法从导入的模块中看到字符串

时间:2016-02-29 14:00:08

标签: python

我知道这是一个非常简单的问题,但我无法理解模块并导入它们。我在下面有一个简单的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

我哪里错了?

3 个答案:

答案 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