将参数传递给python模块
我想将参数传递给python模块,以帮助我决定是否执行模块初始化代码的某些部分 假设我有一个名为将参数传递给python模块,python,Python,我想将参数传递给python模块,以帮助我决定是否执行模块初始化代码的某些部分 假设我有一个名为myu模块的python模块 import sys flag = sys.argv[1] if (flag): # Do Some thing else: # Do something else def module_hello (): print "hello" 但是,我不希望用户脚本干扰参数。它必须完全基于产卵时传递的参数。在将使用该脚本的环境中,我控制脚本的生成。但是
myu模块的python模块
import sys
flag = sys.argv[1]
if (flag):
# Do Some thing
else:
# Do something else
def module_hello ():
print "hello"
但是,我不希望用户脚本干扰参数。它必须完全基于产卵时传递的参数。在将使用该脚本的环境中,我控制脚本的生成。但是脚本是由模块的用户提供的 假设用户编写了导入此模块的脚本
sys.argv[1] = "Change to something unpleasant"
import my_module
我不希望用户控制sys.argv。传递给脚本的CLI参数应安全地传递到模块
是否有办法实现这一点?
如果你想为一个模块设置一些全局值,你应该考虑把它封装在一个类中,或者通过调用一个初始化函数来设置它们,这样你就可以传递这样的参数。main.py
:
import my_module
my_module.init('some values')
VALUES = None
function init(values):
global VALUES
VALUES = values
import my_module
my_module.values = 'some values'
values = None
import my_module
import sys
values = sys.argv[1]
mymodule.py
:
import my_module
my_module.init('some values')
VALUES = None
function init(values):
global VALUES
VALUES = values
import my_module
my_module.values = 'some values'
values = None
import my_module
import sys
values = sys.argv[1]
但是为什么不在模块中简单地声明一些变量,并在加载时设置值呢
main.py
:
import my_module
my_module.init('some values')
VALUES = None
function init(values):
global VALUES
VALUES = values
import my_module
my_module.values = 'some values'
values = None
import my_module
import sys
values = sys.argv[1]
mymodule.py
:
import my_module
my_module.init('some values')
VALUES = None
function init(values):
global VALUES
VALUES = values
import my_module
my_module.values = 'some values'
values = None
import my_module
import sys
values = sys.argv[1]
或者,如果您只想读取参数,则与其他脚本类似:
main.py
:
import my_module
my_module.init('some values')
VALUES = None
function init(values):
global VALUES
VALUES = values
import my_module
my_module.values = 'some values'
values = None
import my_module
import sys
values = sys.argv[1]
mymodule.py
:
import my_module
my_module.init('some values')
VALUES = None
function init(values):
global VALUES
VALUES = values
import my_module
my_module.values = 'some values'
values = None
import my_module
import sys
values = sys.argv[1]
当然,你可以随心所欲,阅读所以,试着阅读模块中的参数 my-module.py 导入系统 #分配我的模块属性 is_debug=arg[1]
你说的“python模块”是什么意思?python模块与其他语言中的库相同。你打算在python代码中使用模块还是作为脚本执行?此模块将被导入。模块中会有初始化代码,这些代码应该根据命令行参数来执行。您可能应该包括一个您在Python代码中尝试过的示例,并准确地描述它没有做的事情-正如目前编写的那样,不清楚您正在尝试做什么。这不是我想要的。我的要求是,导入模块的脚本不应干扰这些变量。参数应作为CLI参数传递。我想限制模块用户修改cli参数您想将参数作为cli参数传递给模块,但您还指定不希望模块干扰参数?是哪一个?是否希望模块读取参数?我希望将参数作为CLI参数传递给模块。在我的模块上调用import的脚本不应该修改通过CLI传递的参数。在模块中,我希望准确地获得通过CLI传递的内容。脚本不应该对这些参数有任何控制。不清楚控制CLI参数是什么意思。由于只有导入模块的脚本才具有任何CLI参数,因此它将能够访问这些参数-不必,但在加载模块之前,它将能够访问这些参数。在将使用这些参数的环境中,我控制脚本的生成。用户提供了我使用用于模块的命令行参数执行的脚本。由于参数是针对模块的,如果用户修改参数,将影响工作流程。问题是,导入“我的模块”的人可以更改arg[1],然后使用CLI传递参数对您来说不是正确的方法。你需要一些不同的东西。