Python:我们应该在什么时候命名参数';你要过去吗?
我最近一直在学习python,我有点困惑,为什么人们在调用函数时会命名参数,而将参数命名为 把这个代码作为启动器Python:我们应该在什么时候命名参数';你要过去吗?,python,Python,我最近一直在学习python,我有点困惑,为什么人们在调用函数时会命名参数,而将参数命名为 把这个代码作为启动器 def my_funcation(greeting = 'Hello', name = 'Guest'): return f'{greeting}, {name}. How are you?' print(my_function('Yo', name = 'Adam')) 看起来都不错,但有一部分我不明白。为什么人们要指定分配给他们的参数名?这是一种惯例还是一种编写好代
def my_funcation(greeting = 'Hello', name = 'Guest'):
return f'{greeting}, {name}. How are you?'
print(my_function('Yo', name = 'Adam'))
看起来都不错,但有一部分我不明白。为什么人们要指定分配给他们的参数名?这是一种惯例还是一种编写好代码的规则
为什么我们不能写下这个
def my_funcation(greeting = 'Hello', name = 'Guest'):
return f'{greeting}, {name}. How are you?'
print(my_function('Yo', 'Adam'))
依我看,第二个更好,以防参数名称发生变化。如果不想指定所有参数怎么办
def my_function(greeting = 'Hello', name = 'Guest'):
return f'{greeting}, {name}. How are you?'
print(my_function(name='ForceBru'))
如果没有此功能,您将无法仅指定第二个参数而不指定其前面的参数
或者,如果函数有大量参数,但是:
def compute(stuff, **kwargs):
be_fast = kwargs.get('be_fast')
be_super_fast = kwargs.get('be_super_fast')
if be_fast and be_super_fast:
print('Activating turbo mode...')
elif be_fast:
print('Accelerating...')
elif be_super_fast:
print('Nobody can stop me!')
else:
print('I am a tortoise.')
return stuff
然后你可以这样称呼它:
compute(1)
compute(1, be_fast=True)
compute(1, be_super_fast=True)
compute(1, be_fast=True, be_super_fast=True)
如果你想说“你好,亚当,你好吗?” 您需要使用
print(my_函数(name='Adam'))
使用后,
print(my_function('Hello', 'Adam'))
这将是多余的
依我看,第二个更好,以防参数名称发生变化
在这种特殊情况下,它是。但总的来说,我不会说得更好,但有点不同 有时,它会为代码添加有用的上下文。
你想读什么:
enumerate('xyz', 120) # err...what does that second arg do again?
或
它允许您修改或重新排序函数的KWARG,而无需更改调用代码。
考虑在前面添加一个新参数:
def my_function(color='red', greeting='Hello', name='Guest'):
...
如果你不修改调用者
my_函数('Yo','Adam')
,你会让他们现在就填充错误的参数-如果你没有很好的测试覆盖率,你可能会很晚才注意到这个错误。如果你有多个可选变量,你只想设置其中一个,你就必须使用这个语法。在您的示例中,这并不重要,但是如果您只想更改名称
,例如,您必须显式使用my_函数(name='Chris')
,而问候语
将默认为'Hello'
,函数定义中的那些是默认值。如果在调用函数时没有提供该值,它仍然可以工作。如果您在调用时提供一个值,它将覆盖默认值。您的问题是,如果有默认值,或者如果有些参数有默认值,而有些参数没有默认值,或者如果没有默认值的参数,为什么要命名参数?“如果参数名称发生更改”->这将是一个反对使用有序参数和使用参数名称的参数,因为如果参数(参数)的名称更改,那么它执行的函数可能也会更改(如果没有更改,则不需要重命名…哦,为了可读性,不,抱歉,它已“发布”使用该名称,如果以后需要提高可读性,请在内部将其分配给一个名称更好的变量)。
def my_function(color='red', greeting='Hello', name='Guest'):
...