python函数 - 14 函数的封装(模块)

封装函数-模块

定义: 一个.py文件就是一个模块(把一个函数写入py文件中存起来被其它py文件调用)

1.模块管理函数

定义: 模块管理函数就是将函数的定义放到一个.py文件中.可以在其他.py文件中通过import关键字导入模块.导入

后就可以使用模块名+函数名的方式去使用其他模块中的函数.(也就是说把一个函数独立封装到一个py文件中,在另

一个py文件中,要想使用这个函数,首先导入模块名,然后再调用模块中的函数名(模块名就是把函数封装到那个py文件的文件名))

注意: 模块中的变量不能在模块之外单独使用,模块中的变量只针对模块中的代码使用(比如:你想在py文件1中调用

py文件2中的变量,那是不得行的.)

2.使用模块

方法(1):

要想使用模块中的函数需要:模块名+函数名
  
import  module  #这个module就是封装函数的那个文件名
aa = module.sum(1, 2)   #模块名.函数名
print(aa)

方法(2):

导入指定模块中指定的函数:form 模块名 import 函数名
  
form module import count_letter_number     #例如导入以下函数

import的功能:相当于把被导入的模块中的代码拷贝到import的位置.

方法(3):

如果函数名相同,我们又想不改变函数名.可以通过as关键字可以更改模块名和函数名.目的是防止命名相同,产生冲突.

form module import count_letter_number as sum     #这里的sum是将封装好的函数名count_letter_number在调用时零时更改为sum

注意: 函数如果同名:后面的函数会覆盖前面的函数.模块下的函数名与被导入模块中的函数名相同时,则会执行模块下的函数,不会执行模块中的函数.

3.不导入执行语句,只导入函数

if __name__ == '__main__':     #把它看成一把闭加锁
  
使用它就相当于一把锁.把执行语句放在它下面可以阻止其它模块去执行这些内容.要想不被模块调用函数中的执行语句,就把函数名放在它下面,保护起来.
例如:
def count_letter_number(string):
    letter_count = 0
    digit_count = 0
    for ch in string:
        if 'a' <= ch <= 'z' or 'A' <= ch <= 'Z':
            letter_count += 1
        elif '0' <= ch <= '9':
            digit_count += 1
    return letter_count, digit_count

# 比如我们只想导入以上这一部分函数,不需要导入以下的main()函数,那么我们就把main()函数执行的返回值放在if里面.main()函数只能在本文件名中执行,不会被其他模块调用.

def main():
    print(count_letter_number('a1b2c3d4'))  # (4, 4)
    print(count_letter_number('a123456b'))  # (2, 6)      #执行语句
    print(count_letter_number('123456!!'))  # (0, 6)

if __name__ == '__main__':
    main()
    
# 总结:如果对封装的函数返回的结果不想在导入的模块中执行,那么就把函数执行返回的函数名放在if __name__ == '__main__':下面保护起来.它就相当于一把闭加锁.

猜你喜欢

转载自blog.csdn.net/hanbo6/article/details/80355795