我正在将程序从perl转换为python,我真的不知道如何将标量变量转换为python。我的问题是我想根据代码中使用的所有标量变量调用第一个值,一个标量变量,当提到它时指的是分配给它的值。
具体区域是
my $min = $_[0]
my $max = $_[1]
所以这两个变量事先分配了一个值,现在我要做的就是调用我的min并让它成为第一个值,然后我希望我的max被称为第二个值基本上,尝试将生成的信息收集到min和max,现在将其带到此处。不明白如何在python中执行此操作。
问题是我有3-5个不同的值分配给min和max,我不知道如何引入值。
我是那个提出问题的人,但我登录了,因为我认为是临时用户并且已被删除。谢谢!
答案 0 :(得分:3)
我不确定你要求的是什么,但只是FYI Python没有将类型附加到脚本中的名称。类型是名称引用的对象。因此,没有区分“标量”变量或“列表上下文”,或类似的东西。
所以看起来你有一个清单。你可以这样做:
mymin = mylist[0]
mymax = mylist[1]
假设mylist
持有对列表对象的引用(在Python中,每个名称都是引用)。
答案 1 :(得分:3)
是的,我确定你在谈论子程序args!在Python中,您不会像在Perl中那样在单个列表'@_'中接收参数。相反,最简单的方法是:
def func(arg1, arg2):
min = arg1
max = arg2
#do your stuff
这大致相当于:
sub func{
my($min, $max) = @_;
#your stuff
}
现在,如果您必须以列表或元组(两者都是集合)的形式接收您的args,那么应该这样做:
def func(args):
min, max = args[0], args[1]
#your stuff
您可以将`args'替换为您喜欢的任何内容,并保留在Python变量命名规则中。
我建议您阅读上一个答案中链接的书,尤其是函数,因为Python在函数方面有很多可能性 - 位置和关键字参数等等。
答案 2 :(得分:1)
我认为你在谈论子程序参数。 perl和python之间的大差异与函数调用(在python中它们更像是方法..)是python可以将不同的东西作为单个参数传递,作为常规操作,而perl可以做到这一点,它很少见。因此,如果你在python中调用'function',你需要知道参数'是'。它是一个'数组'(列表或字典或元组)或标量变量或字符串或字节。如果它是一个字符串或一个字节,那么python 3.x引入了许多严格的输入和语法检查,这将最初引起很多麻烦;而perl很容易在字符串和字节之间转换,而python则不然(因为python想要强制unicode字符串的数据类型)。
结果是仅引用名称(没有perl中的$ name)并手动跟踪参数的类型:
arg1 = 50
arg2 = 70
myPythonFunc(arg1, arg2)
....
def myPythonFunc(arg1, arg2):
if (arg1 > arg2):
return arg2
...
如果您真的注定要使用数组(由于默认值和命名args等,使用单个参数会有更多优点),那么:
args = [ 50, 70 ]
myPythonFunc(args)
....
def myPythonFunc(args):
if (args[0] > args[1]):
return args[1]
...