草庐IT

arg-constructor

全部标签

python - 为什么在 Python 中不允许使用 foo(*arg, x)?

看下面的例子point=(1,2)size=(2,3)color='red'classRect(object):def__init__(self,x,y,width,height,color):pass打电话会很诱人:Rect(*point,*size,color)可能的解决方法是:Rect(point[0],point[1],size[0],size[1],color)Rect(*(point+size),color=color)Rect(*(point+size+(color,)))但是为什么Rect(*point,*size,color)是不允许的,你能想到任何语义歧义或普遍的缺

python - 如何使具有多个 init args 的自定义异常类可腌制

为什么我下面的自定义异常类没有使用pickle模块正确序列化/反序列化?importpickleclassMyException(Exception):def__init__(self,arg1,arg2):self.arg1=arg1self.arg2=arg2super(MyException,self).__init__(arg1)e=MyException("foo","bar")str=pickle.dumps(e)obj=pickle.loads(str)此代码引发以下错误:Traceback(mostrecentcalllast):File"test.py",line13

python - 继承最佳实践 : *args, **kwargs 或显式指定参数

我经常发现自己覆盖了父类的方法,并且永远无法决定是否应该显式列出给定的参数,或者只使用一揽子*args,**kwargs构造。一个版本比另一个更好吗?有最佳实践吗?我缺少什么(缺点)优点?classParent(object):defsave(self,commit=True):#...classExplicit(Parent):defsave(self,commit=True):super(Explicit,self).save(commit=commit)#morelogicclassBlanket(Parent):defsave(self,*args,**kwargs):supe

python - 在 IDLE 中运行 python 脚本时,有没有办法传入命令行参数(args)?

我正在测试一些解析命令行输入的python代码。有没有办法通过IDLE传递这个输入?目前我保存在IDLE编辑器中并从命令提示符运行。我正在运行Windows。 最佳答案 IDLE似乎没有提供通过GUI执行此操作的方法,但您可以执行以下操作:idle.py-rscriptname.pyarg1arg2arg3你也可以手动设置sys.argv,比如:try:__file__except:sys.argv=[sys.argv[0],'argument1','argument2','argument2'](信用http://wayneand

python - 使用 *args、**kwargs 和可选/默认参数调用 Python 函数

在Python中,我可以如下定义一个函数:deffunc(kw1=None,kw2=None,**kwargs):...在这种情况下,我可以调用func为:func(kw1=3,kw2=4,who_knows_if_this_will_be_used=7,more_kwargs=Ellipsis)我也可以定义一个函数为:deffunc(arg1,arg2,*args):...可以称为func(3,4,additional,arguments,go,here,Ellipsis)终于可以把这两种形式结合起来了deffunc(arg1,arg2,*args,**kwargs):...但是,调

python - 为什么使用 *args 语法的参数列表中的尾随逗号是 SyntaxError?

为什么不能在Python中使用带有*args的尾随逗号?换句话说,这行得通>>>f(1,2,b=4,)但这不是>>>f(*(1,2),b=4,)File"",line1f(*(1,2),b=4,)^SyntaxError:invalidsyntaxPython2和Python3都是这种情况。 最佳答案 让我们看看languagespecification:call::=primary"("[argument_list[","]|expressiongenexpr_for]")"argument_list::=positional_a

python - *args 和 **kwargs 的类型注释

我正在尝试使用抽象基类来编写Python的类型注释来编写一些接口(interface)。有没有办法注释*args和**kwargs的可能类型?例如,如何表示函数的合理参数是一个int或两个int?type(args)给出Tuple所以我的猜测是将类型注释为Union[Tuple[int,int],Tuple[int]],但这不起作用。fromtypingimportUnion,Tupledeffoo(*args:Union[Tuple[int,int],Tuple[int]]):try:i,j=argsreturni+jexceptValueError:assertlen(args)=

python - 调用函数时将列表转换为 *args

这个问题在这里已经有了答案:Passalisttoafunctiontoactasmultiplearguments[duplicate](3个回答)关闭3年前.在Python中,如何将列表转换为*args?我需要知道因为函数scikits.timeseries.lib.reportlib.Report.__init__(*args)想要几个time_series对象作为*args传递,而我有一个timeseries对象列表。 最佳答案 您可以在可迭代对象之前使用*运算符在函数调用中扩展它。例如:timeseries_list=[t

java - Args 保证不为空?

在下面的程序中,如果执行(例如通过命令行),argsJVM是否独立保证不为空?publicclasstest{publicstaticvoidmain(String[]args){}} 最佳答案 简短回答:是的,它的长度可能为0但不会为空。 关于java-Args保证不为空?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9605532/

java - 是否可以从另一个方法调用传递 args[] 的主方法?

我正在尝试从另一个传递参数的方法调用类的主要方法,例如从命令行运行类时。有没有办法做到这一点? 最佳答案 您可以像调用任何其他(静态)方法一样调用main方法:MyClass.main(newString[]{"arg1","arg2","arg3"});例子:classMyClass{publicstaticvoidtest(){MyClass.main(newString[]{"arg1","arg2","arg3"});}publicstaticvoidmain(Stringargs[]){for(Strings:args)S