Skip to content

Instantly share code, notes, and snippets.

@chrisfauerbach
Created August 20, 2018 15:45
Show Gist options
  • Save chrisfauerbach/859d62d210ce90cc8fdb31fbc4095cd0 to your computer and use it in GitHub Desktop.
Save chrisfauerbach/859d62d210ce90cc8fdb31fbc4095cd0 to your computer and use it in GitHub Desktop.
Learning python parameters. Curious how to do a mix of arguments, with *args, keyword arguments with *kwargs
#!/usr/local/bin/python3
### Chris. Fauerbach.
### MIT License.
### Most flexible callback method signature if you have
### required and commonly expected keyword arguments
# fn
# callback is a required argument
# *args is everything optional
# counter is a named argument with a default value
# **kwargs is a way to get ANY other keyword arguments
def fn(callback, *args, counter=0, **kwargs):
print("-----------------")
print("fn: ", callback)
print(args)
print(kwargs)
print(kwargs['fake'])
if __name__ == "__main__":
fn("dog", fake="one")
"""
-----------------
fn: dog
()
{'fake': 'one'}
one
"""
fn("cat", "one", "two", fake='fake', counter=10, undefined=12)
"""
-----------------
fn: cat
('one', 'two')
{'fake': 'fake', 'undefined': 12}
fake
"""
fn("heather","another", fake="one")
"""
-----------------
fn: heather
('another',)
{'fake': 'one'}
one
"""
fn("frankenstein", fake="one")
"""
-----------------
fn: frankenstein
()
{'fake': 'one'}
one
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment