I've been training in Lua and Python this week - and the two languages are very diferent, but in many ways they're also much the same. Both languages are slim (ie not bloated with facilities). For example neither supports the
++ operator which those of us who do a lot of coding in Perl, PHP, C and C++ are s familiar with.
One of the other big surprises for newcomers to both Python and Lua is that functions (named blocks of code) are themselves first class variables within the same name space and storage space. On one hand this means that you can't have data stored with the same name as a function (but then you don't want to anyway), but on the other hand this gives you a truely refreshing way of doing lots of dynamic coding which can be really exciting too. (And dangerous - it gives you the tools to do really silly things).
Let me give you an example that shows you the way you can manipulate code:
Defining two functions in Lua:
function footie(some)
return math.floor(some / 11)
end
function boat(more)
return math.floor(more / 9)
end
footie and
boat are regular first class variables, so I can put them into a table (Lua's collection structure - a bit like a list or an array):
games = {footie, boat}
And I can them loop through them, running each of them in turn using a pair of round brackets to say "run this as a function":
for _,play in pairs(games) do
teams = play(staff)
print (teams)
end
Complete source example
[here]. And a complete Python example
[here].
(written 2012-04-13, updated 2012-04-14)
Associated topics are indexed under
U106 - Lua - Functions. [2949] Lua - variable function arguments and select - (2010-09-08)
[2723] Returning multiple values from a function - Lua - (2010-04-15)
[2455] Lua examples - coroutines, error handling, objects, etc - (2009-10-15)
[2356] Passing multiple results back from a function - Lua, Python, etc - (2009-08-13)
[2347] Dot, dot, dot in Lua - variable length parameter lists - (2009-08-11)
[2312] What are closures in Lua? - (2009-07-31)
[1847] Lua - IAQ (Infrequently Answered Questions) - (2008-10-18)
[1744] Lua examples, Lua Courses - (2008-08-08)
[1743] First class functions in Lua lead to powerful OO facilities - (2008-08-07)
[1699] If you are learning Lua, here are some more examples - (2008-07-06)
[1697] Sorting in lua - specifying your own sort routine - (2008-07-05)
[1685] Short circuit evaluation (lazy operator) in Lua - (2008-06-22)
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)
[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)
[3280] Passing parameters to Python functions - the options you have - (2011-05-07)
[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)
55bc
Some other Articles
Bristol 50? Bristol 25?How to stop forms on other sites submitting to your scriptsEvents in Melksham - read all about them, and tell us about yoursMelksham government and business organisationsFunctions are first class variables in Lua and PythonSpecial __ methods you can use in Lua metatablesWiltshire Business Support ServiceDeeper than Art - An exhibition of the tattoo Canvas - MelkshamBack in Cambridge to give a Lua courseChanges in Lua 5.2 - Garbage Collection