将命令行参数作为默认函数参数
Have command line argument as a default function argument
我有一个脚本,我是 运行(带有我编写的模块包),在某些部分,某个脚本使用命令行参数执行另一个脚本。我想要另一个脚本(它是暴露给其他人的,因为其他人不是,但这个脚本是用户可以修改和查看的)自动将 sys.argv[1]
转移到某个函数,比如 foo()
,它有一些用户在调用它时发送的参数 - 但我不希望用户知道额外的参数并且需要自己发送它(换句话说,我希望 sys.argv[1]
自动发送到foo()
).
这可能吗?
示例:
#my_script.py#
import subprocess
def do_stuff():
#stuff
return calculated_var
my_var = do_stuff()
subprocess.check_call(["C:/path/to/user/script/user_script.py", str(my_var)])
#user_script.py#
import my_module
print "My script was finally called, I don't know about any arguments"
my_module.my_func(my_var1, my_var2) #In the background, both my_var1 and my_var 2 are called as function arguments BUT also sys.argv[1] without the user knowing
#my_module.py#
def my_func(arg1, arg2, arg3="""WHAT DO I PUT HERE? I can't put sys.argv[1]"""):
pass
您描述的内容应该有效。总结到这里,希望对你有帮助。
my_script.py
:
import subprocess
subprocess.check_call(["python", "user_script.py", "c"])
user_script.py
:
import my_module
my_module.my_func('a', 'b')
my_module.py
:
import sys
def my_func(arg1, arg2, arg3=sys.argv[1]):
print arg1, arg2, arg3
然后,python my_script.py
会输出a b c
。
我有一个脚本,我是 运行(带有我编写的模块包),在某些部分,某个脚本使用命令行参数执行另一个脚本。我想要另一个脚本(它是暴露给其他人的,因为其他人不是,但这个脚本是用户可以修改和查看的)自动将 sys.argv[1]
转移到某个函数,比如 foo()
,它有一些用户在调用它时发送的参数 - 但我不希望用户知道额外的参数并且需要自己发送它(换句话说,我希望 sys.argv[1]
自动发送到foo()
).
这可能吗?
示例:
#my_script.py#
import subprocess
def do_stuff():
#stuff
return calculated_var
my_var = do_stuff()
subprocess.check_call(["C:/path/to/user/script/user_script.py", str(my_var)])
#user_script.py#
import my_module
print "My script was finally called, I don't know about any arguments"
my_module.my_func(my_var1, my_var2) #In the background, both my_var1 and my_var 2 are called as function arguments BUT also sys.argv[1] without the user knowing
#my_module.py#
def my_func(arg1, arg2, arg3="""WHAT DO I PUT HERE? I can't put sys.argv[1]"""):
pass
您描述的内容应该有效。总结到这里,希望对你有帮助。
my_script.py
:
import subprocess
subprocess.check_call(["python", "user_script.py", "c"])
user_script.py
:
import my_module
my_module.my_func('a', 'b')
my_module.py
:
import sys
def my_func(arg1, arg2, arg3=sys.argv[1]):
print arg1, arg2, arg3
然后,python my_script.py
会输出a b c
。