从Perl到Python的标量变量?

时间:2011-08-18 01:10:00

标签: python perl variables

我正在将程序从perl转换为python,我真的不知道如何将标量变量转换为python。我的问题是我想根据代码中使用的所有标量变量调用第一个值,一个标量变量,当提到它时指的是分配给它的值。

具体区域是

my $min = $_[0]
my $max = $_[1]

所以这两个变量事先分配了一个值,现在我要做的就是调用我的min并让它成为第一个值,然后我希望我的max被称为第二个值基本上,尝试将生成的信息收集到min和max,现在将其带到此处。不明白如何在python中执行此操作。


问题是我有3-5个不同的值分配给min和max,我不知道如何引入值。

我是那个提出问题的人,但我登录了,因为我认为是临时用户并且已被删除。谢谢!

3 个答案:

答案 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]
    ...

阅读本文:http://diveintopython.net/native_data_types/lists.html