简体   繁体   中英

Blocks of code in Python

Can you elaborate on the current state of "blocks" (in the Ruby sense) in Python?

What are the language constructs that exist in Python? How do they compare to other languages (like Ruby, Smalltalk, [insert more])? Or does Python lack such constructs?

I have so far understood the lambda thing; it is only one-line, but maybe it comes close. What about "decorators" and yield in this context?

I am also using old Python versions in some projects. Which constructs were introduced in which Python version (2.5, 2.6, etc.) or are planned in future versions?

Can you link interesting articles on the subject that explain this stuff for Python and also comparing to other languages and could be interesting for someone who wants to extend basic Python knowledge?

Functions are the first-class members in Python:

def add(x, y):
    return x + y

a = add          # Bind
b = a(34, 1)     # Call

So you can pass functions around all you want. You can do the same with any callable object in Python.

lambda is the closest equivalent to a Ruby block, and the restriction to one line is intentional . It is typically argued that multiline anonymous functions (blocks, in Ruby) are usually less readable than defining the function somewhere with a name and passing that, as illustrated in SilentGhost's answer .

There are good discussions on comp.lang.python that compare to other languages:

The def is equivalent of an assignment statement which only binds the function object to the object reference variable.

The object reference variable can then be used to call the function object to execute.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM