我正在把一个程序从perl翻译成python,我真的不知道怎么把一个标量变量翻译成python。我的问题是,我想调用基于代码中使用的所有标量变量传入的第一个值,当提到标量变量时,它指的是赋值给它的值。
具体的区域是
my $min = $_[0];
my $max = $_[1];所以这两个变量事先被赋值了,现在我要做的是调用min,让它成为第一个值,然后我希望max被称为第二个值。基本上,尝试将生成的信息收集到min和max,然后将其带到这里。我不知道如何在python中做到这一点。
问题是,我有3-5个不同的值分配给min和max,我不知道如何引入这些值。
我就是那个提出这个问题的人,但是我想我是以一个临时用户的身份登录的,它被删除了。谢谢!
发布于 2011-08-18 09:33:11
我不太清楚您所要求的是什么,但仅供参考,Python不会将类型附加到脚本中的名称。类型是名称引用的对象。所以没有“标量”变量或“列表上下文”之类的区别。
所以看起来你有一份清单。您可以执行以下操作:
mymin = mylist[0]
mymax = mylist[1]假设mylist包含对列表对象的引用(在Python中,每个名称都是一个引用)。
发布于 2011-08-18 19:35:42
是的,我相信你说的是子程序参数!在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有太多的可能性-位置和关键字参数等。
发布于 2011-08-18 13:08:59
我想你说的是子例程参数。perl和python在函数调用方面有很大的区别(在python中,它们更像是方法。)python可以将不同的内容作为单个参数作为常规操作进行传递,虽然perl可以做到这一点,但它很少见。因此,如果你在python中调用一个'function‘,你需要知道参数’是‘是什么。它是一个“数组”(列表、字典或元组),还是标量变量、字符串或字节。如果它是一个字符串或一个字节,那么python3.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
https://stackoverflow.com/questions/7101395
复制相似问题