python边界函数 python边框( 十 )


"""
#p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)
p = re.compile(r"^name:(?P.*)\n^Address:(?P.*)\n", re.M)
for m in p.finditer(x):
print m.span()
print "here is your friends list"
print "%s, %s"%m.groups()
Compile Flag
用re.compile得到RegxObject时,可以有一些flag用来调整RegxObject的详细特征.
DOTALL, S 让.匹配任意字符,包括换行符\n
IGNORECASE, I 忽略大小写
LOCALES, L 让\w \W \b \B和当前的locale一致
MULTILINE, M 多行模式,只影响^和$(参见上例)
VERBOSE, X verbose模式
Python中递归函数的边界设置时什么意思就是递归到什么时候该停下来 。
比如斐波那契数列,1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n=2 , n∈N*) 。
可以看到他的规律为,第N个数的值为第N-1和第N-2个数的值之和 。比如要求F(10),得先求F(9)和F(8),要求F(9)得先求F(8)和F(7)……如此递归下去,但是F(1)和F(2)的值始终是1,那n=1或者n=2就可以作为递归的终止条件 。
def fib(n):
if n=2 :
return 1
else:
return fib(n-1)+fib(n-2)
Python中定义函数的使用方法?4.6. 定义函数
python边界函数我们可以创建一个用来生成指定边界的斐波那契数列的函数:
def fib(n):# write Fibonacci series up to n
..."""Print a Fibonacci series up to n."""
...a, b = 0, 1
...while an:
...print(a, end=' ')
...a, b = b, a+b
...print()
...
# Now call the function we just defined:
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
关键字 def 引入了一个函数 定义 。在其后必须跟有函数名和包括形式参数的圆括号 。函数体语句从下一行开始,必须是缩进的 。
函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring 。(更多关于 docstrings 的信息请参考 文档字符串) 有些工具通过 docstrings 自动生成在线的或可打印的文档,或者让用户通过代码交互浏览python边界函数;在你的代码中包含 docstrings 是一个好的实践 , 让它成为习惯吧 。
函数 调用 会为函数局部变量生成一个新的符号表 。确切的说,所有函数中的变量赋值都是将值存储在局部符号表 。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表 。因此 , 全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管python边界函数他们可以被引用 。
函数引用的实际参数在函数调用时引入局部符号表,因此,实参总是 传值调用 (这里的 值 总是一个对象 引用,而不是该对象的值) 。[1] 一个函数被另一个函数调用时,一个新的局部符号表在调用过程中被创建 。
一个函数定义会在当前符号表内引入函数名 。函数名指代的值(即函数体)有一个被 Python 解释器认定为 用户自定义函数 的类型 。这个值可以赋予其python边界函数他的名字(即变量名) , 然后它也可以被当作函数使用 。这可以作为通用的重命名机制:
fib
f = fib
f(100)
0 1 1 2 3 5 8 13 21 34 55 89
如果你使用过其他语言,你可能会反对说:fib 不是一个函数 , 而是一个方法,因为它并不返回任何值 。事实上,没有 return 语句的函数确实会返回一个值,虽然是一个相当令人厌烦的值(指 None ) 。这个值被称为 None (这是一个内建名称) 。如果 None 值是唯一被书写的值,那么在写的时候通常会被解释器忽略(即不输出任何内容) 。如果你确实想看到这个值的输出内容 , 请使用 print() 函数:

推荐阅读