Parameters to Python functions / methods are (by default) position dependent. If you
def a function with 2 parameters, and call it with two, the first incoming address is taken as being the incoming address saved accessed through the first variable, and the second incoming address is taken as being the incoming address accessed through the second variable.
Thus
def pax(npacks,njokers)
and
canasta = pax(2,nj)
will pass the value 2 into npacks, and it will pass nj into njokers. Pedantically speaking, you're passing addresses - so if you were to pass in a list or something else that's muttable (changeable in situ), a change to the object within the function will change the object in the calling code too. Where the value passed in the result of a calculation, it will be saved in a temporary object so changes won't effect anything in the calling code, and where it's a constant passed in, that's going to be immutable so a fresh object at a new address will be created if you should change it - thus not altering the constant value in the caling code.
Where you are calling an
object method rather than a
function in Python, you'll have the object on which the method is called picked up as the first parameter, so the function declaration will appear to have one more parameter than the call (it hasn't really - the first parameter in the calling syntax is outside the brackets:
def morepeeps(this,that):
and
larger = bertie.morepeeps(thomas)
You can specify default values for parameters too - by giving an assignment of a default value in the declaration:
def pax(npacks=gdv(),njokers=0):
so now pax called with 2 parameters sets npacks and njokers to values in the call, with one parameter sets npacks to that value and sets njokers to 0, and without parameters sets njokers to 0 and npacks to the result of running the gdv function.
You are also allowed to call by name to fill specific parameters:
crackle = pax(njokers=2)
There are examples of calls as I've described so far in a complete demo program
[here].
Definitions may include as their very last parameter a parameter who's name is preceeeded by ** - and that's a dictionary that mops up all remaining named parameters that the function has been called with, and as their last parameter (except for any ** one) they may be given the name of a list that will pick up any other unnamed parameters. So you may end up with a call like:
demofunc(values,34,65,44,43,34,22,ice="solid",water="liquid")
being collected into a function defined like
def demofunc(must, may=15, *others, **named):
Full sample -
[here].
Finally, note that a function may return a comma separated tuple of values which you may pick up in your calling code into multiple variables - flexible stuff!
tom, dick = demofunc(values)
may be used to call a function with a return line like
return may/2, may+2 (written 2011-05-07)
2286
Associated topics are indexed under
Y105 - Python - Functions, Modules and Packages [4029] Exception, Lambda, Generator, Slice, Dict - examples in one Python program - (2013-03-04)
[3945] vargs in Python - how to call a method with unknown number of parameters - (2012-12-06)
[3931] Optional positional and named parameters in Python - (2012-11-23)
[3885] Default local - a good choice by the author of Python - (2012-10-08)
[3852] Static variables in Python? - (2012-08-29)
[3766] Python timing - when to use a list, and when to use a generator - (2012-06-16)
[3695] Functions are first class variables in Lua and Python - (2012-04-13)
[3662] Finding all the unique lines in a file, using Python or Perl - (2012-03-20)
[3474] Python Packages - groupings of modules. An introduction - (2011-10-11)
[3472] Static variables in functions - and better ways using objects - (2011-10-10)
[3464] Passing optional and named parameters to python methods - (2011-10-04)
[3459] Catching the fishes first? - (2011-09-27)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[2998] Using an exception to initialise a static variable in a Python function / method - (2010-10-13)
[2994] Python - some common questions answered in code examples - (2010-10-10)
[2929] Passing a variable number of parameters in to a function / method - (2010-08-20)
[2878] Program for reliability and efficiency - do not duplicate, but rather share and re-use - (2010-07-19)
[2766] Optional and named parameters to Python functions/methods - (2010-05-15)
[2718] Python - access to variables in the outer scope - (2010-04-12)
[2520] Global and Enable - two misused words! - (2009-11-30)
[2506] Good example of recursion in Python - analyse an RSS feed - (2009-11-18)
[2481] Sample code with errors in it on our web site - (2009-10-29)
[2440] Optional parameters to Python functions - (2009-10-07)
[2439] Multiple returns from a function in Python - (2009-10-06)
[2011] Conversion of OSI grid references to Eastings and Northings - (2009-01-28)
[1879] Dynamic code - Python - (2008-11-11)
[1871] Optional and named parameters in Python - (2008-11-05)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1869] Anonymous functions (lambdas) and map in Python - (2008-11-04)
[1790] Sharing variables with functions, but keeping them local too - Python - (2008-09-09)
[1784] Global - Tcl, PHP, Python - (2008-09-03)
[1464] Python Script - easy examples of lots of basics - (2007-12-08)
[1202] Returning multiple values from a function (Perl, PHP, Python) - (2007-05-24)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[1134] Function / method parameters with * and ** in Python - (2007-04-04)
[959] It's the 1st, not the 1nd 1rd or 1th. - (2006-12-01)
[949] Sludge off the mountain, and Python and PHP - (2006-11-27)
[913] Python - A list of methods - (2006-11-03)
[912] Recursion in Python - (2006-11-02)
[900] Python - function v method - (2006-10-20)
[821] Dynamic functions and names - Python - (2006-08-03)
[775] Do not duplicate your code - (2006-06-23)
[749] Cottage industry or production line data handling methods - (2006-06-07)
[745] Python modules. The distribution, The Cheese Shop and the Vaults of Parnassus. - (2006-06-05)
[668] Python - block insets help with documentation - (2006-04-04)
[561] Python's Generator functions - (2006-01-11)
[418] Difference between import and from in Python - (2005-08-18)
[386] What is a callback? - (2005-07-22)
[340] Code and code maintainance efficiency - (2005-06-08)
[308] Call by name v call by value - (2005-05-11)
[303] Lambdas in Python - (2005-05-06)
[294] Python generator functions, lambdas, and iterators - (2005-04-28)
[105] Distance Learning - (2004-10-31)
[96] Variable Scope - (2004-10-22)
57f4
Some other Articles
What to do in the evening during a Tcl courseThe jugglerThe future of canal management and charities - Kennet and Avon Canal biasDoes Well House Manor Hotel in Melksham offer lots of discounts?Passing parameters to Python functions - the options you haveLetter to The EditorDo I need to initialise variables - programming in C, C++, Perl, PHP, Python, Ruby or Java.Between a rock and a hard place.International travel to the UK - coming to MelkshamMelksham Chamber of Commerce - grows to appoint new Press Officer. Welcome. Sam