在这里补充一点关于 global 和 nonlocal 的知识:
nonlocal 只能修改外层函数的变量而不能修改外层函数所引用的全局变量,给一个例子如下:
x = 0 def outer(): global x x = 1 def inner(): nonlocal x x = 2 print(x) inner() outer() print(x)
结果会报错:
line 6 nonlocal x ^ SyntaxError: no binding for nonlocal 'x' found
1.内部函数,不修改全局变量可以访问全局变量
a = 10 def test(): b = a + 2 #仅仅访问全局变量 a print(b) test()
输出结果为:
12
2.内部函数,修改同名全局变量,则python会认为它是一个局部变量(同教程最后一个例子)
#!/usr/bin/python3 a = 10 def test(): a = a + 1 #修改同名的全局变量,则认为是一个局部变量 print(a) test()
3.在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError
函数的装饰器
在不改变当前函数的情况下, 给其增加新的功能:
def log(pr):#将被装饰函数传入 def wrapper(): print("**********") return pr()#执行被装饰的函数 return wrapper#将装饰完之后的函数返回(返回的是函数名) @log def pr(): print("我是小小洋") pr()
回调函数和返回函数的实例就是装饰器。
更多内容可参考:Python 函数装饰器
函数返回值的注意事项: 不同于 C 语言,Python 函数可以返回多个值,多个值以元组的方式返回:
def fun(a,b): "返回多个值,结果以元组形式表示" return a,b,a+b print(fun(1,2))
(1, 2, 3)
可以通过 函数名.__doc__ 的方式来显示函数的说明文档,感觉这个如果在阅读比较大的程序时应该会有用,同时也在提示自己在写函数时注意添加文档说明。
def add(a,b): "这是 add 函数文档" return a+b print (add.__doc__)
这是 add 函数文档
更多内容可参考:Python 文档字符串(DocStrings)
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1133Python3 函数
在这里补充一点关于 global 和 nonlocal 的知识:
nonlocal 只能修改外层函数的变量而不能修改外层函数所引用的全局变量,给一个例子如下:
结果会报错:
1132Python3 函数
1.内部函数,不修改全局变量可以访问全局变量
输出结果为:
2.内部函数,修改同名全局变量,则python会认为它是一个局部变量(同教程最后一个例子)
3.在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError
1131Python3 函数
函数的装饰器
在不改变当前函数的情况下, 给其增加新的功能:
回调函数和返回函数的实例就是装饰器。
1130Python3 函数
函数返回值的注意事项: 不同于 C 语言,Python 函数可以返回多个值,多个值以元组的方式返回:
输出结果为:
1129Python3 函数
可以通过 函数名.__doc__ 的方式来显示函数的说明文档,感觉这个如果在阅读比较大的程序时应该会有用,同时也在提示自己在写函数时注意添加文档说明。
输出结果为: