Python def函数:如何指定函数的结尾?
我只是在学习python,并且在函数的“def”结束时感到困惑?
我看到如下代码示例:
def myfunc(a=4,b=6):
sum = a + b
return sum
myfunc()
我知道它并没有因为返回而结束(因为我已经看到了如果语句...如果FOO比返回BAR,否则返回FOOBAR)。 Python如何知道这不是一个自我调用的递归函数? 当函数运行时,它会继续执行程序,直到它找到返回值? 那会导致一些有趣的错误。
谢谢
在Python中,空白是很重要的。 当缩进变小(小)时,函数结束。
def f():
pass # first line
pass # second line
pass # <-- less indentation, not part of function f.
请注意,单行函数可以在一行中不缩进地写入:
def f(): pass
然后,使用分号,但不建议这样做 :
def f(): pass; pass
以上三种形式显示了函数的结尾是如何在语法上定义的。 至于语义,在Python中有三种退出函数的方法:
使用return
语句。 这与您可能知道的任何其他命令式编程语言相同。
使用yield
语句。 这意味着该函数是一个生成器。 解释它的语义超出了这个答案的范围。 看看有人可以解释我的Python产量声明?
通过简单地执行最后的语句。 如果没有更多的语句并且最后一个语句不是return
语句,那么该函数就像最后一个语句return None
。 也就是说,没有显式的return
语句,函数返回None
。 这个函数返回None
:
def f():
pass
这个也是如此:
def f():
42
对于缩进,Python是空白区域敏感的。 一旦缩进级别降回到定义该函数的级别,该函数就结束了。
确切地说,一个块在遇到一个非空行时最终与起始位置相同的级别缩进时结束。 此非空行不是该块的一部分例如,以下打印同时结束两个块:
def foo():
if bar:
print "bar"
print "baz" # ends the if and foo at the same time
缩进级别与def和if均小于或等于,因此它们都结束。
没有声明的行,无论是缩进,都没有关系
def foo():
print "The line below has no indentation"
print "Still part of foo"
但是,标记块结束的语句必须与任何现有缩进相同的级别缩进。 那么,以下是一个错误:
def foo():
print "Still correct"
print "Error because there is no block at this indentation"
一般来说,如果你习惯用大括号来表示语言,只需像他们那样缩进代码就可以了。
顺便说一句,“标准”的缩进方式仅限于空格,但当然只能使用制表符,但请不要将它们混合使用。
链接地址: http://www.djcxy.com/p/54779.html上一篇: Python def function: How do you specify the end of the function?