Python函数——关于模块

下面我们更进一步, 将函数存储在称为模块独立文件
将函数存储在独立文件中, 可以隐藏程序代码细节, 将重点放在程序的高层逻辑中
模块是扩展名为.py的文件, 包含要导入到程序中的代码
下面的每个例子都是一个文件, 并且他们都在同一个目录
文件的后缀名(.py)是编译器自己加的不需要我们写

1.导入整个函数

我使用了书上的关于制作披萨的例子
首先创建一个名为pizza.py的文件在里面编写函数

# 这是一个模块其文件名叫pizza.py
def make_pizza(size, *toppings):
    print(f"\n使用以下配料制作一个{size}寸的披萨")
    for topping in toppings:
        print(f"-{topping}")

然后再创建一个名为making_pizzas.py的文件

# 这是一个文件, 用来调用pizza模块里的函数
import pizza  # 让Python打开文件pizza.py, 并将其中所有的函数都复制到这个程序中
pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

2.导入特定的函数

对之前的pizza.py文件做些修改让它也能做蛋糕

# 这是一个模块其文件名叫pizza.py
def make_pizza(size, *toppings):
    print(f"\n使用以下配料制作一个{size}寸的披萨")
    for topping in toppings:
        print(f"-{topping}")


# 披萨店有了新业务, 他们开始做蛋糕了
def make_cake(size, *toppings):
    print(f"\n使用以下配料制作一个{size}寸的蛋糕")
    for topping in toppings:
        print(f"-{topping}")

下面是创建一个making_cakes.py的文件

from pizza import make_cake  # 此处导入的是make_cake函数因此make_pizza函数不能在此处使用
make_cake(12, '海带', '海蜇', '海参', '海瓜子')  # 段非然想给朋友点一个海鲜蛋糕
# 使用导入特定函数就不需要在前面加文件名了

3.用as给函数指定别名

下面是之前的making_pizzas.py文件

from pizza import make_pizza as mp  # 此语句给make_pizza函数指定了叫做mp的别名
# 直接使用mp的命名即可使用函数
mp(12, '枸杞', '党参', '肉桂', '白术', '白芍')  # 这次段非然给朋友点了大补的中药披萨

4.用as给模块指定别名

下面我又创建了一个名为cakes_and_pizzas.py的文件
调用了上面的pizza.py文件

# 有时候我们定义的模块名字比较长, 这时我们可以给模块的名字指定别名
# 调用函数时直接用别名即可
import pizza as p
p.make_pizza(16, '枸杞', '党参', '肉桂', '白术', '白芍')  # 上次朋友们说披萨不好吃, 段非然不信决定亲自尝一尝
p.make_cake(12, '海带', '海蜇', '海参', '海瓜子')  # 朋友们还说海鲜蛋糕不好吃, 段非然也决定尝一尝

5.不写模块名的调用

下面我创建了名为function_module.py的文件

# 这是函数模块里面的函数用于实现加法和打印
def plus_function(a, b):
    return a+b


def print_function(c):
    print(c)

之后我又创建了名为python_main_1.py的文件

# 论如何优雅的实现1+1等于2
from function_module import *  
answer = plus_function(1, 1)
print_function(answer)


def plus_function(a, b):
    return a+b+b


print(plus_function(1, 1))  # 两次打印会有不同的结果

使用“from function_module import * ”的好处是可以不用写模块名, 但坏处就是若当前文件有同名函数时将会出现意外的结果

猜你喜欢

转载自blog.csdn.net/m0_46255324/article/details/115253904
今日推荐