为什么 Python 允许在 for 循环中使用 def 函数

use*_*142 5 python-2.7

我是 Python 新手,但我尝试过一些东西,但它对我来说很模糊。为什么Python允许在循环内执行def of function?我怎样才能从中受益?

for i in range(2):
  def f():
     print 'f'

  f()
Run Code Online (Sandbox Code Playgroud)

Thr*_*esh 3

因为 python 是一种高级编程语言,所以你实际上可以返回函数。下面是一个简单但示范性的函数。

def multiplier(multiple):
  def f(number):
    return multiple * number
  return f
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式使用该函数:

double = multiplier(2)
print double(3)
Run Code Online (Sandbox Code Playgroud)

这将打印 6。

例如,如果您想创建多个函数并将它们存储在列表中或适合您需要的任何其他目的,则相同的概念也适用于循环。

list_of_functions = [] #list of functions
for i in range(2):
  def f(n):
    def printer():
      print "f"*n
    return printer
  list_of_functions.append(f(i+1))
Run Code Online (Sandbox Code Playgroud)

现在您可以调用 list_of_functions [0]() 来打印“f”,[1调用 list_of_functions ]() 来打印“ff”。

  • 除了导致“NameError”之外,这些“end”还在那里做什么?另外,[请不要使用 `l` 作为变量名](http://legacy.python.org/dev/peps/pep-0008/#prescriptive-naming-conventions)... (4认同)
  • “函数列表”的“list_of_functions”怎么样?_可读性很重要。_ (2认同)