4 ms·
>No, no, no, no, no! Why not clarify what are those accepted arguments? > What the following code is doing? def shuffle(args): # do something I
by moonchrome 11y ago
>No, no, no, no, no! Why not clarify what are those accepted arguments?
> What the following code is doing?
def shuffle(args):
# do something
It's misusing the args - you shouldn't be using args/kwargs there in the first place - they should be used for forwarding and things like that - eg. you're writing a generic function decorator and things like that.
If you want a collection to operate on "cards" then pass cards as a collection, if you want to operate on abstract function parameters use args/kwargs
- andybak 11y agoYep. If you want meaningful names then do it explicitly: def shuffle(*args): cards = args Much less likely to catch someone out.
- kevinastone 11y agoIf that method only accepted Cards, that's more confusing and not something visible to a code hinter that will supply the method signature. `*cards` is more explicit when the expected parameter is a variable number of card parameters.
- encoderer 11y agoBut it's not pythonic to care if something is a "Card" or not. All that matters is if looks and acts like a Card.
- Scarblac 11y agoI've never agreed with that. Without a good definition of what exactly it means to "look and act like a Card", large projects can easily get several slightly different definitions of what a Card is like, and nobody knows exactly which methods to use where (so what exactly do I need to implement so my class is a "file-like object"?). Horrible. I call it smurf typing. If it smurfs like a smurf, smurfs like a smurf and possibly smurfs like a smurf, we consider it a smurf. Good luck with that information.