将函数存储在模块中
函数的优点之一是可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在称为模块的独立文件中,再将模块导入到主程序中。import 语句允许在当前运行的程序文件中使用模块中的代码。
导入模块
得先创建模块。模块是扩展名为.py的文件,包含要导入到
程序中的代码。下面来创建一个包含函数make_pizza() 的模块。
def make_pizza(size,*toppings):
"""打印顾客点的所有配料"""
print(f"披萨的尺寸为:{size}。")
print(f"需要添加的配料:{toppings}")
接下来,在pizza.py所在的目录中创建一个名为making_pizzas.py的文件。这个文件导入刚创建的模块,再调用make_pizza()函数。
import name_cases #导入name_cases模块
name_cases.make_pizza('16','ttt','aaa','bbb')
#调用name_cases模块中的make_pizza函数
结果:
导入模块中特定函数
还可以导入模块中的特定函数,这种导入方法的语法如下:
from module_name import function_Name
#从模块module_name中导入函数function_Name
通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数:
from module_name import function_0,function_1,function_2
#从模块module_name中导入函数function_0,function_1,function_2
这种方法,在使用函数时,无需使用句点,可直接使用。
使用as给函数指定别名
如果要导入函数的名称可能与程序中现有的名称冲突,或者函数的名称太长,可指定简短而独一无二的别名:函数的另一个名称,类似于外号。要给函数取这种特殊外号,需要在导入它时指定。
如:
from module_name import function_Name as fn
#从模块module_name中导入函数function_Name,并命名为fn
使用时,直接使用fn()
使用as给模块指定别名
还可以给模块指定别名。通过给模块指定简短的别名(如给模块pizza指定别名p),让你能够更轻松地调用模块中的函数。
如:
import pizza as p
p.make_pizza('16','ttt','aaa','bbb')
导入模块中的所有函数
使用星号(*)运算符可让Python导入模块中的所有函数:
from pizza import *
make_pizza('16','ttt','aaa','bbb')
import 语句中的星号让Python将模块pizza 中的每个函数都复制到这个程序文件中。由于导入了每个函数,可通过名称来调用每个函数,而无须使用句点表示法。然而,使用并非自己编写的大型模块时,最好不要采用这种导入方法。这是因为如果模块中有函数的名称与当前项目中使用的名称相同,可能导致意想不到的结果:Python可能遇到多个名称相同的函数或变量,进而覆盖函数,而不是分别导入所有的函数。
最佳的做法是,要么只导入需要使用的函数,要么导入整个模块并使用句点表示法。这让代码更清晰,更容易阅读和理解。这里之所以介绍这种导入方法,只是想让你在阅读别人编写的代码时,能够理解类似的语句。