我碰到的东西我不太用在DEF函数的参数是如何工作的理解:默认值[异常]:为功能参数
即:
def test(a=1, b=9, c='what'):
return a
test(a,b,c)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-295-937fe43dbbd5> in <module>()
2 return a
3
----> 4 test(a,b,c)
NameError: name 'a' is not defined
和
def test(a=1, b=9, c='what'):
return a
test('what')
Output: 'what'
那么,我期待设置参数a,b作为默认值。现在,对于第一个示例,如果我调用test(a,b,c),它表示a没有定义。但是,我已经在函数参数中“定义”了它?这意味着,如果我们说a,b和c是默认参数,我不能执行测试(a,b,c)?只有test()有效吗?什么!
在例2中,我甚至不知道了......
谢谢你的洞察力。那么,当他们说'默认参数'时,这意味着什么呢?这是否意味着我必须将a,b,c声明为全局变量而不是在函数中分配= 1,b = 9,c ='whatever'? – misheekoh
@misheekoh不完全。我会加上我的回答来解释那部分。 – idjaw
您可能想尝试使用Google搜索“范围解析”。简而言之,当你输入一个函数时,你输入一个新的作用域,其中a,b和c由于缺省参数而被定义。当你调用这个函数时,你不在那个范围内,这些变量还不存在。 –