草庐IT

keyword_arg

全部标签

python - 为什么使用 packed *args/**kwargs 而不是传递 list/dict?

如果我不知道函数将传递多少个参数,我可以使用参数打包来编写函数:defadd(factor,*nums):"""Addnumbersandmultiplybyfactor."""returnsum(nums)*factor或者,我可以通过传递一个数字列表作为参数来避免参数打包:defadd(factor,nums):"""Addnumbersandmultiplybyfactor.:typefactor:int:typenums:listofint"""returnsum(nums)*factor使用参数打包*args比传递数字列表有优势吗?还是有更合适的情况?

python - 函数调用中 *args 的执行模型是什么?

我需要传递巨大的list/tuple以通过*args运行。deff(*args):#definedinforeignmodulepassarguments=tuple(range(10000))f(*arguments)我想知道函数调用时会发生什么。它是否像处理任何位置变量一样处理参数:保存它并在主体执行期间按需访问?或者它是否在主体执行之前遍历arguments,扩展位置参数?还是其他原因? 最佳答案 使用生成器的简单测试:defgen():print('Yielding1')yield1print('Yielding2')yie

python - django 类型错误 : get() got multiple values for keyword argument 'invoice_id'

我对python和django比较陌生,我有以下restapiView,classInvoiceDownloadApiView(RetrieveAPIView):"""ThisAPIviewwillretrieveandsendTermsandConditionfilefordownload"""permission_classes=(IsAuthenticated,)defget(self,invoice_id,*args,**kwargs):ifself.request.user.is_authenticated():try:invoice=InvoiceService(user=

python - 是否可以在数据类中使用 *args?

我最近开始使用dataclasses它们将是3.7的一个很好的补充。我很好奇是否或如何使用数据类重新创建此类的相同功能。classNav(object):def__init__(self,name:str,menu,page,*submenus):self.name=nameself.menu=menuself.page=pageself.submenus=submenusfoo=Nav("name","menu","page")这行不通。引发异常TypeError:__init__()missing1requiredpositionalargument:'submenus'@data

python - 如何传递 Python args 和 kwargs?

虽然我对Python的*args和**kwargs有一个大致的了解(我认为),但我很难理解如何将它们从一个函数传递到另一个函数。这是我的模型:frompdbimportset_traceasdebugfromdjango.dbimportmodelsclassPerson(models.Model):name=models.CharField(max_length=30)def__unicode__(self):returnu'%s'%self.namedefsave_name_for(self,*args,**kwargs):self.name='Alex'returnselfdef

python 3 : What is the difference between keywords and builtins?

在python3中,>>>importkeyword>>>keyword.kwlist和>>>importbuiltins>>>dir(builtins)是两个不同的列表,但它们有一些共同的值,特别是>>>set(dir(builtins))&set(keyword.kwlist){'False','True','None'}python中关键字和内置函数有什么区别?什么时候是'False'、'None'、'True'关键字以及它们是什么时候内置的?(如果这有什么不同的话) 最佳答案 关键字是解析器处理的核心语言结构。这些词是保留词

python - 惯用的 Python 日志记录 : format string + args list vs. 内联字符串格式 - 哪个是首选?

使用格式字符串+args列表调用日志记录函数与格式化内联是否有利?我看过(并写过)使用内联字符串格式的日志记录代码:logging.warn("%s%s%s"%(arg1,arg2,arg3))但我认为它更好(性能方面,更惯用)使用:logging.warn("%s%s%s",arg1,arg2,arg3)因为第二种形式在调用日志函数之前避免了字符串格式化操作。如果当前日志记录级别会过滤掉日志消息,则无需格式化,从而减少计算时间和内存分配。我是在正确的轨道上,还是错过了什么? 最佳答案 恕我直言,对于很可能会显示的消息,例如给err

python - 在 Flask 中检查 request.args 中是否存在 key

我正在使用Flask。我正在做一个ajaxpost,我需要检查key是否存在我尝试了以下方法,但没有用ifrequest.args.has_key('campaign_id_crid'):printTrue这样做的正确方法是什么? 最佳答案 您的示例在python2.x代码中运行良好无论如何,尽管dict.has_key仍然是关于(在现有的2.x代码中-但在Python3中删除),通常认为使用in更符合Pythonic运营商如:if'campaign_id_crid'inrequest.args:pass#dosomething

python - args 参数的 subprocess.Popen 最大长度是多少?

我正在使用Popen从subprocess模块执行命令行工具的功能:subprocess.Popen(args,bufsize=0,executable=None,stdin=None,stdout=None,stderr=None,preexec_fn=None,close_fds=False,shell=False,cwd=None,env=None,universal_newlines=False,startupinfo=None,creationflags=0)我使用的工具获取一个文件列表,然后进行处理。在某些情况下,此文件列表可能会很长。有没有办法找到args参数的最大长度?

python - 避免 Python sum 默认启动 arg 行为

我正在使用一个Python对象,它实现了__add__,但没有子类化int。MyObj1+MyObj2工作正常,但是sum([MyObj1,MyObj2])导致了TypeError,因为sum()首先尝试0+MyObj。为了使用sum(),我的对象需要__radd__来处理MyObj+0或者我需要提供一个空对象作为start参数。所讨论的对象并非设计为空。在任何人问之前,该对象既不是列表也不是字符串,因此使用join()或itertools无济于事。编辑细节:该模块有一个SimpleLocation和一个CompoundLocation。我将Location缩写为Loc。SimpleL