上一篇python笔记学习了什么是function(python笔记:Functions),以及function的结构和如何call function。这一篇笔记记录的是如何将你的function储存在Modules里。
在你读python代码的时候,一定看到过下面这样的代码:
import ***
或者
import *** as ***
或者
from *** import ***
你真的明白它们的意思吗?
通过function的功能,可以把我们的代码分成“一块一块的”,通过添加描述,使我们的代码更加容易阅读。进一步的,我们可以把我们的functions储存在一个单独的文件里,这个文件称为“module”,使用的时候只需要在我们的主体代码里import就行了。使用“import”告诉python,在当前这个运行的代码里,我要使用某个module。
把我们的function储存在一个单独的文件里,可以使你在不同的程序里随时调用你的function。同时也方便其他人使用。
在开始import我们的function之前,我们第一步需要做的是创建一个module。module文件一般是以“.py”为后缀的文件。里面包含了你想import的function。举个例子,我们创建一个名为“pizza.py”的文件,其中的代码:
def make_pizza(size, *toppings):
"""Summarize the pizza we are about to make."""
print(f"\nMaking a {size}-inch pizza with the following toppings:")
for topping in toppings:
print(f"- {topping}")
然后将这个文件保存。
现在打开一个新的文件.py文件,或者.ipynb文件,这时我们想call上面的这个function,实际上现在的步骤就不是call function了,是import:
import pizza
pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
第一行import pizza,是告诉python打开文件pizza.py,并且复制function到新的程序里。这时,在这个pizza.py文件里的所有functions都可以在新的程序里使用。
接着,为了调用这个function,首先要先打出module的名字,这里是“pizza”。随后跟着“.”,然后是function的名字,这个例子里,function的名字是“make_pizza”。然后括号里是这个function需要的参数。
这时运行这个程序,输出的结果是:
Making a 16-inch pizza with the following toppings:
- pepperoni
Making a 12-inch pizza with the following toppings:
- mushrooms
- green peppers
- extra cheese
如果一个module里包含多个function,你可以使用下面的公式来调用它们:
module_name.function_name()
(一)import指定的function
在import module时,为了import某一个特殊的function,你可以使用下面这个代码:
#method 1
from moudle_name import function_name
#method 2
from module_name import function_0,function_1,function_2
所以上面的例子,我们也可以使用这样的代码来import module:
from pizza import make_pizza
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
NOTE: 如果你使用这样的方法来调用function,就不用再在make_pizza前加上“pizza.”了。因为你在import里已经特定的指出我们使用的是“make_pizza”这个function了。
(二)使用as给function一个别名
如果你的这个function的名字与一个已经存在的名字冲突了,或者这个function的名字特别长,你可以给你的function起个别名。
举个例子,以上面的pizza为例,我们可以把make_pizza这个function名字起个别名“mp”。然后再import:
from pizza import make_pizza as mp
mp(16, 'pepperoni')
mp(12, 'mushrooms', 'green peppers', 'extra cheese')
这里可以看出来,当你再call这个function的时候,你只需要使用mp来call它就行了。
(三)使用as给Module一个别名
同样的,你也可以给module起个别名:
import pizza as p #给module起个别名p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
(四)importing module里所有的function
你可以使用*来import一个module里的所有function:
from pizza import *
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
这个星号就是告诉python,我要把这个module里所有的function都import过来。但是如果你使用的module很大,最好不要这么干。
网友评论