首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Perl到Python的标量变量?

从Perl到Python的标量变量?
EN

Stack Overflow用户
提问于 2011-08-18 09:10:00
回答 3查看 1K关注 0票数 1

我正在把一个程序从perl翻译成python,我真的不知道怎么把一个标量变量翻译成python。我的问题是,我想调用基于代码中使用的所有标量变量传入的第一个值,当提到标量变量时,它指的是赋值给它的值。

具体的区域是

代码语言:javascript
复制
my $min = $_[0];
my $max = $_[1];

所以这两个变量事先被赋值了,现在我要做的是调用min,让它成为第一个值,然后我希望max被称为第二个值。基本上,尝试将生成的信息收集到min和max,然后将其带到这里。我不知道如何在python中做到这一点。

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

我就是那个提出这个问题的人,但是我想我是以一个临时用户的身份登录的,它被删除了。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2011-08-18 09:33:11

我不太清楚您所要求的是什么,但仅供参考,Python不会将类型附加到脚本中的名称。类型是名称引用的对象。所以没有“标量”变量或“列表上下文”之类的区别。

所以看起来你有一份清单。您可以执行以下操作:

代码语言:javascript
复制
mymin = mylist[0]
mymax = mylist[1]

假设mylist包含对列表对象的引用(在Python中,每个名称都是一个引用)。

票数 3
EN

Stack Overflow用户

发布于 2011-08-18 19:35:42

是的,我相信你说的是子程序参数!在Python语言中,您不会像在Perl语言中那样在单个列表'@_‘中接收参数。相反,最简单的方法是:

代码语言:javascript
复制
def func(arg1, arg2):
   min = arg1
   max = arg2
   #do your stuff

这大致相当于:

代码语言:javascript
复制
sub func{
   my($min, $max) = @_;
   #your stuff
}

现在,如果您必须以列表或元组的形式接收args (两者都是集合),则应该这样做:

代码语言:javascript
复制
def func(args):
    min, max = args[0], args[1]
    #your stuff

您可以将‘`args’替换为您喜欢的任何内容,只要遵守Python变量命名规则即可。

我建议你阅读上一个答案中链接到的书,特别是关于函数的书,因为当涉及到函数时,Python有太多的可能性-位置和关键字参数等。

票数 3
EN

Stack Overflow用户

发布于 2011-08-18 13:08:59

我想你说的是子例程参数。perl和python在函数调用方面有很大的区别(在python中,它们更像是方法。)python可以将不同的内容作为单个参数作为常规操作进行传递,虽然perl可以做到这一点,但它很少见。因此,如果你在python中调用一个'function‘,你需要知道参数’是‘是什么。它是一个“数组”(列表、字典或元组),还是标量变量、字符串或字节。如果它是一个字符串或一个字节,那么python3.x引入了许多严格的类型和语法检查,这在一开始会导致很多令人头疼的问题;而perl很容易在字符串和字节之间进行转换,而python则不是这样(因为python想强制unicode字符串使用数据类型)。

其结果是只引用名称(不像perl中的$name ),并手动跟踪参数的类型:

代码语言:javascript
复制
arg1 = 50
arg2 = 70
myPythonFunc(arg1, arg2) 

....
def myPythonFunc(arg1, arg2):
    if (arg1 > arg2):
        return arg2
    ...

如果你真的想使用数组(使用单独的参数会有更多的好处,因为有默认值和命名的args等等),那么:

代码语言:javascript
复制
args = [ 50, 70 ]
myPythonFunc(args) 

....
def myPythonFunc(args):
    if (args[0] > args[1]):
        return args[1]
    ...

请阅读:http://diveintopython.net/native_data_types/lists.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7101395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档