Questions tagged «default-parameters»

30
“最少惊讶”和可变默认参数
长时间修改Python的任何人都被以下问题咬伤(或弄成碎片): def foo(a=[]): a.append(5) return a Python新手希望此函数始终返回仅包含一个元素的列表[5]。结果是非常不同的,并且非常令人惊讶(对于新手而言): >>> foo() [5] >>> foo() [5, 5] >>> foo() [5, 5, 5] >>> foo() [5, 5, 5, 5] >>> foo() 我的一位经理曾经第一次遇到此功能,并将其称为该语言的“巨大设计缺陷”。我回答说,这种行为有一个潜在的解释,如果您不了解内部原理,那确实是非常令人困惑和意外的。但是,我无法(对自己)回答以下问题:在函数定义而不是函数执行时绑定默认参数的原因是什么?我怀疑经验丰富的行为是否具有实际用途(谁真正在C中使用了静态变量,却没有滋生bug?) 编辑: 巴泽克举了一个有趣的例子。连同您的大多数评论,特别是Utaal的评论,我进一步阐述了: >>> def a(): ... print("a executed") ... return [] ... >>> >>> def b(x=a()): ... x.append(5) ... print(x) ... a …

26
设置JavaScript函数的默认参数值
我希望JavaScript函数具有我设置了默认值的可选参数,如果未定义该值,则将使用该参数(如果传递该值,则将其忽略)。在Ruby中,您可以这样操作: def read_file(file, delete_after = false) # code end 这在JavaScript中有效吗? function read_file(file, delete_after = false) { // Code }

23
Java是否支持默认参数值?
我遇到了一些具有以下结构的Java代码: public MyParameterizedFunction(String param1, int param2) { this(param1, param2, false); } public MyParameterizedFunction(String param1, int param2, boolean param3) { //use all three parameters here } 我知道在C ++中可以为参数分配默认值。例如: void MyParameterizedFunction(String param1, int param2, bool param3=false); Java是否支持这种语法?有什么理由使两步语法更可取?


4
T-SQL-具有默认参数的功能
我有这个脚本: CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 ) RETURNS BIT AS BEGIN IF EXISTS ( bla bla bla ) RETURN 1; RETURN 0; END GO 我想以这种方式在过程中使用它: IF dbo.CheckIfSFExists( 23 ) = 0 SET @retValue = 'bla bla bla'; 但是我得到了错误: 为过程或函数dbo.CheckIfSFExists提供的参数数量不足。 为什么不起作用?

2
Python,可变长度位置参数后的默认关键字参数
我以为可以在Python 2的函数调用中在变长位置参数之后使用命名参数,但是SyntaxError在导入python类时得到了提示。例如,我正在使用以下“ get”方法编写: class Foo(object): def __init__(self): print "You have created a Foo." def get(self, *args, raw=False, vars=None): print len(args) print raw print vars 错误看起来像: def get(self, *args, raw=False, vars=None): ^ SyntaxError: invalid syntax 我希望能够以几种方式调用该方法: f = Foo() f.get(arg1, arg2) f.get(arg1, raw=True) f.get(arg1, arg2, raw=True, vars=something) 等等
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.