我需要有关参数的帮助.这两个函数定义是否对print_twice执行完全相同的操作?
def print_twice(lol):
print lol
print lol
def print_twice(michael):
print michael
print michael
Run Code Online (Sandbox Code Playgroud)
如果是,那么我猜测用于参数的单词无关紧要,对吗?
我们用于参数的词很重要.你使用的这个词很重要:
用于参数的名称很重要,因为参数的名称,它们的默认值和函数名称是开发人员使用您的函数首先看到的东西,即使不需要查看函数文档(例如,通过使用help(your_function)).只需使用IDLE来定义你的函数,然后尝试使用它 - 在编写时,IDLE会显示可能的参数.
所以,请给他们有意义的名称,这将使您的功能更容易使用,不需要查看文档.
说到第二点,看看这个例子:
def show_elements(elements):
"""Shows elements of the passed argument
"""
for element in elements:
print element
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但如果你elements用例如替换.list,您将list在此特定范围内覆盖:
def show_elements(list):
"""Shows elements of the passed argument
"""
for element in list:
print element
Run Code Online (Sandbox Code Playgroud)
如果你想用listeg.要构建列表,或从其他类型转换为列表,那么您将遇到问题.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
...
...
Run Code Online (Sandbox Code Playgroud)
但由于上述情况不再适用,您需要考虑周围的范围,因此使用非冲突的名称很重要.