signed

QiShunwang

“诚信为本、客户至上”

Python函数的使用范围:Python 作用域

2021/4/26 13:15:55   来源:

函数的使用范围:Python 作用域

  • 函数是有使用范围的,在一个模块中,我们可以定义很多函数和变量。但我们希望有的函数和变量别人可以使用,有的函数和变量仅仅可以在模块内部使用,这就是
    Python 作用域的相关问题。让学习者了解并掌握函数的使用范围,即 Python 作用域的相关知识。

相关知识

  • 在 Python 中,正常的函数和变量名是公开的(public),是可以被直接引用的。比如abs()、abc、dir()等。
  • 类似__xxx__这种格式的变量是特殊变量,允许被直接引用,但是会被用作特殊用途。比如__author__、__name__就是属于特殊变量。hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己编程定义的变量一般不会用这种变量名。
  • 类似_xxx和__xxx这种格式的函数和变量就是非公开的(private),不应该被直接引用。
  • 补充:_xxx的函数和变量是protected,我们直接从外部访问不会产生异常。__xxx的函数和变量是private,我们直接从外部访问会报异常,我们要注意前缀符号的区别。

我们要注意用词的区别,我们说的private函数和变量是“不应该”被直接引用,而不是“不能”被直接引用。这是因为在 Python
中并没有一种方法可以真正完全限制访问private函数或变量。但是我们为了养成良好的编程习惯,是不应该引用private函数或变量的。private函数的作用是隐藏函数的内部逻辑,让函数有更好的封装性。例如:

def _private_1(name):
    return 'Hello, %s' % name
def _private_2(name):
    return 'Hi, %s' % name
def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)

我们在上述程序块里公开了 greeting() 函数,greeting() 函数需要使用 _private_1()_private_2() 函数。学习者并不需要知道greeting() 函数中的内部实现细节,所以我们可以将内部逻辑用private函数隐藏起来,这是一种十分常用的代码封装的方法。

小结

  • 为了让程序的封装性更好,我们一般都限定函数的使用范围。一般我们把外部需要使用的函数定义为public函数,而把只在内部使用而外部不需要引用的函数定义成private函数。

编程要求

实现相应的功能。具体要求如下:

编写程序,功能是求两个正整数的最小公倍数;
1.要求实现方法:先定义一个private函数_gcd()求两个正整数的最大公约数
2.再定义public函数lcm()调用 _gcd()函数求两个正整数的最小公倍数
3.调用函数lcm(),并将输入的两个正整数的最小公倍数输出。

# coding=utf-8
# 输入两个正整数a,b
a = int(input())
b = int(input())
# 请在此添加代码,求两个正整数的最小公倍数
########## Begin ##########
########## End ##########
# 调用函数,并输出a,b的最小公倍数
print(lcm(a,b))
  • 测试说明

测试输入:

5
6

预期输出:

30

测试输入:

8
10

预期输出:

40

测试输入:

16
24

预期输出:

48

测试输入:

132
214

预期输出:

14124

上代码:
在这里插入图片描述