12 函数再进阶

将函数存储在模块中

上面的意思就是如何把我们写好的函数存储起来待用?
这需要一个功能稍多一些的编译器比较方便,这次用的是Pycharm,首先在Pycharm里新建一个工程。
至于什么是工程Project --- 就相当于一个“文件夹”,后面写的程序都直接放在这个“文件夹”里,因为有些程序相互之间有依赖关系,所以这样方便调用。
我们以一个例子来说明:
def make_pizza(size, *toppings):
    """概述要制作的pizza"""
    print("\nMaking a " + str(size) +
          "-inch pizza with the following toppings:")
    for topping in toppings:
        print("-" + topping)
# 这是已经编好的函数
我们在新建的工程里新建Python程序。上面是我们已经写好的一个函数程序---pizza.py,我们将其保存。
下面我们再在工程里新建一个Python文件---making_pizza.py
import pizza  # 导入目录下的pizza函数
pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushroom', 'green peppers', 'extra cheese')

# Python在读取这个文件时,import pizza让Python打开文件pizza.py并复制其中的所有函数。

再我们看下添加进工程是什么样子。(先忽略下面的两个print文件)
图片.png

可以看到making_pizza代码里用到了import pizza意思就是将目录下的pizza程序导入调用一下

Result

Making a 16-inch pizza with the following toppings:
-pepperoni

Making a 12-inch pizza with the following toppings:
-mushroom
-green peppers
-extra cheese

当然你也可以调用pizza里的部分函数

(只是这个例子里就一个函数哈哈)

# 也可以只导入指定模块的某个函数 --- 如只导入pizza文件里的make_pizza函数
from pizza import make_pizza
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushroom', 'green peppers', 'extra cheese')
# 导入多个函数时用逗号隔开

还可以给函数重新命名 --- 不仅仅是为了简写


# 还可以给函数取个缩写名,或者是为了防止与本身程序中的函数重名
from pizza import make_pizza as mp
mp(16, 'pepperoni')
mp(12, 'mushroom', 'green peppers', 'extra cheese')

下面print_3D例子是前面的一个更改

函数部分

##### --- 模拟3D打印的制作过程
def print_models(unprinted_designs, completed_models):
    """
    模拟打印每个设计,直到没有未打印的为止
    打印设计后,将其移至completeed_models列表   
    """
    while unprinted_designs:
        current_design = unprinted_designs.pop() 

        # 模拟根据设计制作3D打印的过程
        print("Printing model: " + current_design)
        completed_models.append(current_design)  


def show_completed_models(completed_models):
    """显示打印好的所以模型"""
    print("\nThe following models have been printed:")
    for completed_model in completed_models:
        print(completed_model)

在模块中使用函数

#在print_3D模块中导入相应的函数并取缩写
from print_3D import print_models as pm
from print_3D import show_completed_models as scm

# 下面假设未打印的模型列表
unprinted_designs = ['plane', 'car', 'bicycle']
# 定义一个空列表,打印好的移至completed_models
completed_models = []

# 下面调用第一个函数去处理
pm(unprinted_designs, completed_models)

# 再调用第二个函数去show
scm(completed_models)



# 还可以直接导入所有函数
import print_3D
# 下面假设未打印的模型列表
unprinted_designs = ['plane', 'car', 'bicycle']
# 定义一个空列表,打印好的移至completed_models
completed_models = []

# 下面调用第一个函数去处理
pm(unprinted_designs, completed_models)

# 再调用第二个函数去show
scm(completed_models)
5e20d8e15336d1261281cb01eb31f7ef.jpeg

你可能感兴趣的:(12 函数再进阶)