将函数存储在模块中
上面的意思就是如何把我们写好的函数存储起来待用?
这需要一个功能稍多一些的编译器比较方便,这次用的是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文件)
可以看到making_pizza代码里用到了
import pizza
意思就是将目录下的pizza程序导入调用一下
Result
Making a 16-inch pizza with the following toppings:
-pepperoniMaking 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)