Python 函数(四)
在编程语言中,函数的优点之一就是可以实现代码块与主程序的分离。并且还可以进一步将函数存储在被称为模块的独立文件中,再将模块导入主程序中。在Python程序中,可以使用import语句导入并使用其他模块中的代码。
一、导入整个模块文件
在Python程序中,导入模块中的方法有很多种,下面将首先讲解导入整个模块的方法。要想让函数变为是可导入的,需要先创建一个模块。模块式扩展名为“.py”格式的文件,在里面包含了要导入到程序的代码。例如下面的实例,创建了一个被包含导入函数make()的模块,将这个函数单独放在一个程序文件pizz.py中,然后在另外一个独立文件making.py中调用文件pizz.py中的函数make(),在调用时调用整个文件。 实例文件pizz.py的功能是编写函数make(),实现制作披萨的功能,具体实现代码如下所示:
def make(size,*toppings):
print("\n制作一个" + str(size) +"寸的披萨需要的配料")
for topping in toppings:
print("-" + topping)
实例文件making.py的功能是,使用import语句调用外模块文件pizz.py,然后使用文件pizz.py中的函数make()实现制作披萨的功能,具体代码如下:
import pizza
pizza.make(16,'黄油','虾','芝士')
pizza.make(12,'黄油','洋葱')
在上述代码中,第一行让python打开文件pizz.py,并将代码复制到程序中(开发者看不到复制的代码),第2和3行调用模块中的函数,执行结果如下:
二、只导入指定函数
在Python程序中还可以根据项目的需要只导入模块文件中的特定函数,这种导入方法的语法格式如下:
from module_name import function_name
如果需要从一个文件中导入多个指定的函数,可以使用逗号隔开多个导入函数的名称:
from module_name import function_name1,function_name2,function_name3
示例如下: 文件jiafa.py的功能是编写printinfo():
def printinfo(arg1,*vartuple):
"打印任何传入的函数"
print(arg1)
for var in vartuple:
print(var)
return;
文件yong.py的功能是导入文件jiafa.py中的函数printinfo():
from jiafa import printinfo
print("考试项目:")
printinfo("数学","语文",'英语')
print("考试分数:")
printinfo(100,95,98)
上述代码中,只是导入文件jiafa.py中的函数printinfo(),即使文件jiafa.py中还有其他函数,也不会被调用。
三、使用as设置函数的别名
在Python程序中,如果要从外部模板文件中导入的函数名称可能与程序中现有的名称发生冲突,可以使用关键字“as”设置一个新的别名。借用上面的例子,在文件yong.py中导入文件jiafa.py的函数时,将printinfo()名称改为“mm()”:
from jiafa import printinfo as mm
print("考试项目:")
mm("数学","语文",'英语')
print("考试分数:")
mm(99,90,88)
执行结果如下:
四、使用as设置模块别名
在Python程序中,除了可以使用关键字“as”给函数设置一个别名,还可以使用关键字“as”给模块文件指定一个别名。依然使用上面的例子,将导入模块文件jiafa.py的别名设置为“kk”。具体代码如下:
import jiafa as kk
print("考试项目:")
kk.printinfo("数学","语文",'英语')
print("考试分数:")
kk.printinfo(90,96,97)
执行结果如下:
五、导入所有函数
在Python程序中,可以使用星号运算符“ * ”导入外部模块文件中的所有函数。演示实例如下:
from jiafa import *
print("考试项目:")
printinfo("数学","语文",'英语')
print("考试分数:")
printinfo(86,90,86)
执行结果如下: 提示:在Python中,当使用的并非自己编写的大型模块时,最好不要采用导入全部函数,因为如果在模块中有函数名与你的项目中使用的名称一致,就会导致意想不到的结果。而且这种错误往往不好差错。
|