20201025_085.LEGB规则

LEGB 规则

Python 在查找变量时,是按照 LEGB 规则的顺序查找的:
Local–>Enclosed–>Global–>Built in

Local 指的就是函数或者类的方法内部
Enclosed 函数所在闭包的外层函数中(一个函数包裹另一个函数就是闭包)
Global 指的是模块中的全局变量
Built in 指的是 Python 平台本身保留的特殊名称。

如果某个 name 映射在局部(local)命名空间中没有找到,接下来就会在闭包作用域(enclosed)进行搜索,如果闭包作用域也没有找到,Python 就会到全局(global)命名空间中进行查找,最后会在内建(built-in)命名空间搜索 (如果一个名称在所有命名空间中都没有找到,就会产生一个 NameError)。

【案例】

# str = 'global'


def outer():
    # str = 'outer'

    def inner():
        # str = 'inner'
        print(str2)
    inner()


outer()

依次将几个 str 注释掉,观察控制台打印的内容,可以体验到 LEBG 的搜索顺序。

实操作业

  1. 定义一个函数实现反响输出一个整数。比如:输入 3245,输出 5432.
  2. 编写一个函数,计算下面的数列:
    在这里插入图片描述
  3. 输入三角形三个顶点的坐标,若有效则计算三角形的面积;如坐标无效,则给出提
    示。
  4. 输入一个毫秒数,将该数字换算成小时数,分钟数、秒数。
  5. 使用海龟绘图。输入多个点,将这些点都两两相连。

我的解答:

'''
# 1. 反向输出一个整数
def reverse_int():
    a = input('请输入要反向输出的整数:')
    a = int(a[::-1])
    print(a)


reverse_int()
'''

'''
# 2. 编写一个函数,计算下面的数列:
def m_function(n):
    res = 0
    a = 1
    b = 2
    while b <= n:
        res += a/b
        a += 1
        b += 1
    print(res)


m_function(5)
'''

'''
# 3. 输入三角形三个顶点的坐标,若有效则计算三角形的面积;如坐标无效,则给出提示。
# 三角形面积为: S=(1/2)* | (x1y2+x2y3+x3y1-x2y1-x3y2-x1y3) |
def func3(a):
    x1 = a[0][0]
    x2 = a[1][0]
    x3 = a[2][0]
    y1 = a[0][1]
    y2 = a[1][1]
    y3 = a[2][1]
    s = 0.5 * abs(x1*y1 + x2*y3 + x3*y1 - x1*y3 - x2*y1 - x3*y2)
    if s == 0:
        print('3个顶点在一条直线上,坐标无效。')
    else:
        print('该三角形的面积为:{}'.format(s))


spots = [(0, 0), (30, 0), (0, 20)]
func3(spots)
'''

'''
# 4. 输入一个毫秒数,将该数字换算成小时数,分钟数、秒数。
def func4():
    ms = float(input('请输入需要转化的毫秒数:'))
    s = ms / 1000
    m = s / 60
    h = m / 60
    print('{}毫秒等于{}秒,等于{}分钟,等于{}小时。'.format(ms, s, m, h))


func4()
'''

'''
# 5. 使用海龟绘图。输入多个点,将这些点都两两相连。
def func5(a):
    import turtle

    n = len(a)
    for i in range(n - 1):
        x1 = a[i][0]
        y1 = a[i][1]
        for j in range(i + 1, n):
            x2 = a[j][0]
            y2 = a[j][1]
            turtle.penup()
            turtle.goto(x1, y1)
            turtle.pendown()
            turtle.goto(x2, y2)
    turtle.hideturtle()  # 隐藏画笔
    turtle.done()  # 画完之后绘图窗口不关闭


# 输入多个点,并运行函数
spots = [(20, 40), (60, 80), (40, 100), (80, 100)]
func5(spots)
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值