Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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_Python Import - Fatal编程技术网

Python:从另一个脚本中为Python脚本中未定义(但必要)的变量赋值

Python:从另一个脚本中为Python脚本中未定义(但必要)的变量赋值,python,function,variables,python-import,Python,Function,Variables,Python Import,我想知道是否有办法做到以下几点: 我有一个程序,叫它a.py。这里有一些函数和东西。对于其中一些函数,有一个变量(比如说,是函数设置的一部分)称之为myvar。这个变量不是它们的参数,只是一个设置!比如说 def myfunc(arg1、arg2): 返回arg1*arg2-myvar 该变量尚未在程序a.py中定义 现在我想创建另一个程序b.py,这里我想使用上面程序的输出,但每次我都需要更改变量的值。差不多 导入一个 列表1=[] 对于范围(10)内的j: myvar=j 列表1.appen

我想知道是否有办法做到以下几点:

我有一个程序,叫它
a.py
。这里有一些函数和东西。对于其中一些函数,有一个变量(比如说,是函数设置的一部分)称之为
myvar
。这个变量不是它们的参数,只是一个设置!比如说

def myfunc(arg1、arg2):
返回arg1*arg2-myvar
该变量尚未在程序
a.py
中定义

现在我想创建另一个程序
b.py
,这里我想使用上面程序的输出,但每次我都需要更改变量的值。差不多

导入一个
列表1=[]
对于范围(10)内的j:
myvar=j
列表1.append(a.myfunc(arg1,arg2))


我希望我想做的是清楚的。有办法吗?

如果您只是从
b
设置
a.myvar
,您应该会没事的。例如:

a.py
----------------
test = 10

def foo():
    print(test)


b.py
----------------
import a

a.foo()
a.test = 100 
a.foo()
将输出

10
100

注意:除了非常特殊的应用程序外,您不应该这样做,并且很可能使用函数参数。

如果您只是从
b
设置
a.myvar
,您应该会很好。例如:

a.py
----------------
test = 10

def foo():
    print(test)


b.py
----------------
import a

a.foo()
a.test = 100 
a.foo()
将输出

10
100

注意:除了非常特殊的应用程序外,您不应该这样做,而且很可能使用函数参数。

将其作为参数传递。就这么简单。实际上,它是函数的一个参数,您只是试图隐式地传递它,这太疯狂了。也许你想要一个类,并将该值设置为属性。@deceze关键是我做不到!为什么会这样?@deceze因为当我这样做的时候,我会因为一些原因得到完全不同的结果,然后可能会解决这个问题,因为从你描述的东西来看,把它作为论点传递是唯一有意义的事情。把它作为论点传递。就这么简单。实际上,它是函数的一个参数,您只是试图隐式地传递它,这太疯狂了。也许你想要一个类,并将该值设置为属性。@deceze关键是我做不到!为什么会这样?@deceze,因为当我这样做时,由于某些原因,我得到了完全不同的结果,然后可能会解决这个问题,因为从您描述的内容来看,将其作为参数传递是唯一有意义的事情。虽然此解决方案可以满足OP的要求,但不应该鼓励它。@cᴏʟᴅsᴘᴇᴇᴅ 我同意,在大多数情况下,这是一种不好的做法(根据OP对他的问题的评论,OP似乎不知道他们在做什么),但对于未来的人来说,如果他们发现这是一个合法的应用程序,至少他们会看到他们可以做,而不仅仅是“不要做那件事”,我会推荐一个大致如下的答案。。。“是的,你可以这样做……但这里有一个更好的方法:”。虽然这个解决方案可以满足OP的要求,但不应该鼓励它。@cᴏʟᴅsᴘᴇᴇᴅ 我同意,在大多数情况下,这是一种不好的做法(根据OP对他的问题的评论,OP似乎不知道他们在做什么),但对于未来的人来说,如果他们发现这是一个合法的应用程序,至少他们会看到他们可以做,而不仅仅是“不要做那件事”,我会推荐一个大致如下的答案。。。“是的,你可以这样做……但这里有一个更好的方法:”。