python学习笔记(六)——函数的作用域和装饰器

函数作用域

global和nonlocal关键字

思考:

def func():
    name = 'laowang'
print(name)  #  能打印吗?

func()
print(name)  #  能打印吗?

执行结果:
laowang
NameError: name 'name' is not defined   为什么没有被定义?

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。

调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

1、global

能够在函数里修改全局变量的值。

a = 100   # 全局变量
def func1():
	global a  # 修改全局变量
	a = 200
	print(a)
func1()
print(a)

执行结果:
200
200

2、nonlocal

让嵌套函数能够修改嵌套函数之外的值,就是用来修改嵌套作用域的变量的。

def func1():
    x = 100
    def func2():
        nonlocal x
        x += 100
        return x
    return func2()

a = func1()
print(a)

执行结果:
200

递归

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

实例 1:

# 递归
def fibonacci(a):
    if a == 0:              #  简写  if a == 0 or a == 1:    与或非  逻辑运算符
        return 0
    elif a == 1:
        return 1
    else:<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值