Python参数(初学者)

时间:2012-03-17 21:01:46

标签: python

我需要有关参数的帮助。这两个函数定义是否对print_twice执行完全相同的操作?

def print_twice(lol):
    print lol
    print lol

def print_twice(michael):
    print michael
    print michael

如果是,那么我猜测用于参数的单词无关紧要,对吗?

6 个答案:

答案 0 :(得分:5)

我们用于参数的词语很重要。你使用这个词很重要:

  • 很有意义,清楚地解释了论证的用途,
  • 不会覆盖外部作用域中的某些变量名称。

有意义的参数名称的重要性

您用于参数的名称很重要,因为参数的名称,它们的默认值和函数名称是开发人员使用您的函数首先看到的东西,即使不需要查看函数文档(例如,使用help(your_function))。只需使用IDLE来定义你的函数然后尝试使用它 - 在编写它时,IDLE会显示你可能的参数。

所以,请给他们一些有意义的名字,这些名字将使您的功能更容易使用,而且不需要查看文档。

覆盖外部作用域的变量

说到第二点,请看这个例子:

def show_elements(elements):
    """Shows elements of the passed argument
    """
    for element in elements:
        print element

哪个正常,但是如果你用例如elements替换。 list,您将在此特定范围内覆盖list

def show_elements(list):
    """Shows elements of the passed argument
    """
    for element in list:
        print element

然后如果您想使用list,例如。要构建列表,或从其他类型转换为列表,那么您将遇到问题。 list是内置的,您不应该覆盖它。关于函数范围内的其他变量也是如此。

历史上,当Python通过首先查看局部范围,然后是全局和内置范围,跳过所有非局部范围(例如,定义我们函数的函数的范围)来解析变量名时,封闭范围的变量就是这样传递的:

def funca():
    local_val1 = 'some value1'
    local_val2 = 'some value2'
    def funcb(local_val1=local_val1):
        # local_val1 is accessible here, even though local_val2 is not
        ...
    ...

但由于上述情况不再适用,您需要考虑周围的范围,因此使用非冲突名称非常重要

答案 1 :(得分:2)

是的,他们这样做。参数的名称是无关紧要的,尽管良好的编程习惯要求名称应该清晰且不言自明

答案 2 :(得分:1)

这是正确的,参数的名称无关紧要。

答案 3 :(得分:0)

是的,这是正确的,它只是一个变量名......

答案 4 :(得分:0)

这是正确的。函数定义中用于参数的单词只是一个名称,并不引用任何外部的。

答案 5 :(得分:0)

编程应该是合乎逻辑的。所以,让我们从逻辑上思考。如果你写" a"在纸上两次,你得到" a"两次。与" b。"相同所以你用字母做同样的功能。但是,如果你在每次执行该函数时将值重新分配给a,该怎么办呢?我的意思是,如果a是一个数字,那么你能得到的最接近的IMO是这样的:

def func1(a, b):
    a = input("Enter a number: ")
    b = input("Enter another number: ")
    b *= b
    a *= a
    print func1(a)
    print func1(a)
    print func1(b)
    print func1(b)

现在,当我尝试在线编译这个特定的代码时,我收到了一个错误,但是我认为这样的事情是为了尝试做正确的事情而做的事情?这是一个很好的实验,我想象一下它的用法。