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

将参数传递给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" 但是,我不希望用户脚本干扰参数。它必须完全基于产卵时传递的参数。在将使用该脚本的环境中,我控制脚本的生成。但是

我想将参数传递给python模块,以帮助我决定是否执行模块初始化代码的某些部分

假设我有一个名为
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传递参数对您来说不是正确的方法。你需要一些不同的东西。