Python新手,曾经使用过MATLAB。
我的函数convert.py是:
def local_variable_defined?(name, binding)
binding.local_variable_defined?(name)
end
local_variable_defined?(:a, binding)
# => false
a = 42 if false
local_variable_defined?(:a, binding)
# => true
a
# => nil
如何使用输入参数'a'和'b'从命令行运行它? 我试过了:
def convert(a,b)
factor = 2194.2
return (a-b)*factor
但是错了。
我确实试图在网上找到答案,找到相关的东西但不是答案:
另外,我在哪里可以找到自己的答案,以便我可以在这个论坛中保存更多非平凡的问题?
答案 0 :(得分:0)
你可以这样做:
import sys
def convert(a,b):
factor = 2194.2
return (a-b)*factor
print(convert(int(sys.argv[1]), int(sys.argv[2])))
如果这就是脚本的全部内容,则不必定义函数:
import sys
factor = 2194.2
print((int(sys.argv[1]), int(sys.argv[2])*factor)
如果你想改变你的文件(尽管你必须在函数定义后添加冒号),你可以按照你的第一个链接方法:
python -c 'import convert, sys; print convert.convert(int(sys.argv[1]), int(sys.argv[2])'
答案 1 :(得分:-1)
对于这种称为argparse的东西,存在一个Python模块,它允许你在命令行标志周围做一些非常奇特的事情。你真的不需要 - 你只需要在命令行上输入两个数字。这可以非常天真地处理。
Python允许您通过名为sys.argv
的数组直接访问命令行参数 - 您首先需要import sys
。此数组中的第一个元素始终是程序名称,但第二个和第三个元素将是您在i.e. sys.argv[1]
和sys.argv[2]
中传递的数字。有关更完整的示例:
if len(sys.argv) < 3:
print 'Didnt supply to numbers'
a = int(sys.argv[1])
b = int(sys.argv[2])
当然,您需要进行一些错误检查,确保它们是整数/浮点数。
如果您对here
感兴趣,可以在sys.argv周围进行一些额外的阅读要完成,我们也可以给出一个argparse示例:
import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument('numbers', type=float, nargs=2,
help='Things to perform actions on')
args = parser.parse_args()
a = args.numbers[0]
b = args.numbers[1]
print a, b