Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!cs.uu.nl!news.stack.nl!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.019 X-Spam-Evidence: '*H*': 0.96; '*S*': 0.00; 'context': 0.04; 'dict': 0.09; 'readable': 0.09; 'subclasses': 0.09; 'thoughts?': 0.09; 'def': 0.13; '**kwargs)': 0.16; 'definition)': 0.16; 'function;': 0.16; 'pythonic': 0.16; 'received:192.168.0.11': 0.16; 'subject:syntax': 0.16; 'syntax': 0.16; 'occurred': 0.18; 'compatible': 0.21; 'pep': 0.23; 'code': 0.25; 'function': 0.27; 'for,': 0.30; 'plus,': 0.30; 'throwing': 0.30; 'certainly': 0.32; 'list': 0.32; 'idea': 0.32; 'message-id:@gmail.com': 0.33; 'header :User-Agent:1': 0.33; 'rather': 0.33; 'to:addr:python-list': 0.34; 'it.': 0.34; 'things': 0.34; 'calling': 0.34; 'forces': 0.34; 'google': 0.35; 'post': 0.36; 'but': 0.37; 'received:192': 0.37; 'received:74.125': 0.37; 'received:google.com': 0.37; 'think': 0.37; 'problems': 0.37; 'could': 0.37; 'using': 0.38; 'received:192.168.0': 0.38; 'abuse': 0.39; 'finding': 0.39; 'to:addr:python.org': 0.40; 'received:192.168': 0.40; 'happens': 0.40; 'unique': 0.61; 'more': 0.61; 'forum': 0.64; 'imagine': 0.71; 'beautiful': 0.82; 'flexible,': 0.84; 'symmetry': 0.84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=BBwyusESTgY1kiJwapXJ8nJuAlgM3MjWXahy66BnDBg=; b=jpP0JoLTSKgeRLxSOgPxUcqe81WDRjZeaY4t5UtHzJtguZoGzwN1KLMTUBXfuHPdsc d5py9f/BnkwgW3zH8dtqRFcfGg2QOVuMGBspAqCcCdmnALI0m/LIIxaU0tBkchUKhoIx mxO5B+Fb3J0dKqHtsdrj3PyHzVxjob0AT1cYg= Date: Sun, 11 Dec 2011 11:49:23 +0100 From: Eelco Hoogendoorn User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: python-list@python.org Subject: Verbose and flexible args and kwargs syntax Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 30 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1323600572 news.xs4all.nl 6979 [2001:888:2000:d::a6]:36632 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:16979 Throwing an idea for a PEP out there: It strikes me that the def func(*args, **kwargs) syntax is rather unpytonic. It certainly did not have that 'for line in file' pythonic obviousness for me as a beginner. Plus, asterikses are impossible to google for, so finding out what exactly they do more or less forces you to write a forum post about it. A more readable form occurred to me, which also happens to be more flexible, and which I think is fully compatible with the syntax of the language: def func(parg, list(args), dict(kwargs)) Perhaps this is considered abuse of notation; dict(kwargs) already has a meaning rather different from the one we try to give it here; but then again the context (being inside a function definition) is unique and easily recognizable. An added advantage would be the possibility of using subclasses of dict and list as well; imagine how much more beautiful a lot of code would be if one could say def func(attrdict(kwargs)) Problems im still wrestling with: the same syntax could not be used when calling a function; that lack of symmetry would make things more confusing, not less. Thoughts?