我需要有关参数的帮助。这两个函数定义是否对print_twice执行完全相同的操作?
def print_twice(lol):
print lol
print lol
def print_twice(michael):
print michael
print michael
如果是,那么我猜测用于参数的单词无关紧要,对吗?
答案 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)
现在,当我尝试在线编译这个特定的代码时,我收到了一个错误,但是我认为这样的事情是为了尝试做正确的事情而做的事情?这是一个很好的实验,我想象一下它的用法。