Thanks for the great article!
I think Python's property() syntax is unwieldy compared with Ruby's for the same functionality, which may be the reason there are so many getters and setters in Python code that could have been properties.
Concerning Ruby code blocks: I have some ideas where requiring named functions can be quite tedious in addition to asynchronous code.
Function actions in SCons. The equivalent Rake syntax embodies this well:
task :sometask do # ... end
I've got code that repeats except for a place in the middle. Instead of:
def func(): # ... skeleton_code(params, func)
I could write:
skeleton_code(params) do # ... end
Assuming I name 'skeleton_code' wisely, this is a readability gain.
Practically anywhere lambda is used, a stronger mechanism to pass a code block could be useful. I agree it shouldn't be abused - even lambda's limited power is abused too often.
I feel that naming close_db_resources in your example serves a great purpose - documentation - but I often find myself naming functions with no gain.