python - argv函数无法正常工作

时间:2016-03-03 14:37:21

标签: python argv

我刚开始学习Python,现在我正在做一些练习。

具体来说,本练习要求编写一个Python程序来对三个给定的整数求和。但是,如果两个值相等,则sum将为零。

这是我的代码:

   from sys import argv
   script, x, y, z = argv

   def sum(x, y, z):  
       if x == y or y == z or x==z:  
          sum = 0  
       else:  
          sum = x + y + z  
       return sum  
   print (sum)

我在WindowPowerShell中打开脚本,指定脚本名称(es3.py)和三个变量,例如:1 2 3。

但是我收到以下消息:

<function sum at 0x0000000001E0F048>

而不是我期待的结果。

有没有人知道为什么会这样?

感谢。

5 个答案:

答案 0 :(得分:2)

让我评论你的代码:

script, x, y, z = argv
# we now have four new variables inside the main module: 
# script, x, y, z
# all functions defined here have access to these but
# cannot modify them (unless we use "global").

def sum(x, y, z):
    # while sum() in principle has access to the 
    # variables defined outside of sum(),
    # sum() (the function) also takes three parameters.
    # these need to be passed in with a function call
    # (i.e. sum(x, y, z)).
    #
    # x, y, z here are unrelated to x, y, z outside of sum().
    # in fact the parameters shadow the global variables,
    # making them inaccessible (via direct means).
    if x == y or y == z or x==z:  
        sum = 0  
        # this defines a local variable "sum".
        # it is unrelated to the function "sum"
    else:  
        sum = x + y + z  
        # x, y, z are strings, so "sum" is now a string, too.
    return sum

print (sum)
# here, you refer to the function "sum".
# the variable "sum" only exists inside the function "sum".

如果你想得到sum()(函数)的结果,你需要用参数调用它:

print(sum(x, y, z))

您无法访问函数外的变量sum

答案 1 :(得分:0)

如果你

print(sum)

然后打印功能 sum

如果您要打印结果,则必须致电 sum

print(sum(x, y, z))

答案 2 :(得分:0)

print (sum(x,y,z))

表示调用您的函数/方法并打印返回值。

print (sum) 

表示打印数据的元数据(总和也是一种数据)

答案 3 :(得分:0)

您应该打印sum功能的结果:

print(sum(x, y, z))

这样就会打印出sum函数的返回值。你这样做的方式就是打印出一个函数引用。

另外作为旁注,sum()built-in python函数,因此最好避免命名冲突并相应地命名函数。

答案 4 :(得分:0)

请尝试以下代码:

from sys import argv
script, x, y, z = argv

def sum_(x, y, z):  
    if x == y or y == z or x==z:  
        the_sum = 0  
    else:  
        the_sum = int(x) + int(y) + int(z)  
    return the_sum  
print(sum_(x, y, z))