1 基本介绍
(1)通过return返回值;
(2)位置实参调用函数需要关注参数顺序,采用关键字实参调用函数不需要;
(3)三引号表示文档字符串(docstring)的注释,Python 使用它们来生成有关程序中函数的文档;
(4)函数中参数付默认值,调用时可以不传递参数会采用默认值(或称为让实参变成可选),不报错;
(5)如果函数所需要的参数为列表,而函数中会对改传递参数进行清空,为了不影响原有列表的数值,则不能按照function_name(list_name)传递,可以按照下面的方式传递function_name(list_name[:]);这种方式因为调用function_name需要列表的副本,会增加运行时间和内存;
(6) 在传递参数数量未知的情况下,可以使用*或**的方式。
TEST.py代码如下:
#函数可以指定默认值4,变成可选参数;也可以不指定,调用时必须赋值
def while_fun(message=4,max_num=10):
"""函数学习"""
while message < max_num:
message += 1;
if int(message) % 2 == 0:
continue #如果是偶数,则while循环从头执行,不执行下面的语句
#打印奇数
print(f"{message} is an even number")
return message
#函数调用
message_rt=[]
print("----message=默认值--------")
message_rt.append(while_fun())
print(message_rt)
print("----message=2--------")
#采用关键字实参方式赋值,无需关注参数顺序
message_rt.append(while_fun(max_num=8,message=2))
print(message_rt)
print("----message=3--------")
#形参方式赋值,需关注参数顺序
message_rt.append(while_fun(3,10))
print(message_rt)
运行结果:
----message=默认值--------
5 is an even number
7 is an even number
9 is an even number
[10]
----message=2--------
3 is an even number
5 is an even number
7 is an even number
[10, 8]
----message=3--------
5 is an even number
7 is an even number
9 is an even number
[10, 8, 10]
Process finished with exit code 0
2 导入函数模块
导入:import module_name
使用:module_name.function_name()
在TEST_import.py中调用TEST.py中函数,TEST_import.py的代码如下:
'''导入函数的整个模块'''
print("----import TEST.py--------")
#导入TEST.py模块
import TEST
message_rt=[]#定义空列表
#调用TEST.py中的函数,注意函数前需要加上TEST.
message_rt.append(TEST.while_fun(2,12))
print(message_rt)
运行结果(前面打印的结果魏TEST.py中代码打印出来的,后面一组打印结果是TEST_import.py打印的):
----import TEST.py--------
------while-------------
----message=默认值--------
5 is an even number
7 is an even number
9 is an even number
[10]
----message=2--------
3 is an even number
5 is an even number
7 is an even number
[10, 8]
----message=3--------
5 is an even number
7 is an even number
9 is an even number
[10, 8, 10]
3 is an even number
5 is an even number
7 is an even number
9 is an even number
11 is an even number
[12]
Process finished with exit code 0
注意:导入后,在调用while_fun函数后,在下一个函数之前的代码也会一并执行。
3 导入特定的函数
导入:from module_name import function_0, function_1, function_2
使用:function_name()
'''导入特定的函数模块'''
print("----import TEST.py--------")
#使用import语句显式的导入函数while_fun
from TEST import while_fun
message_rt=[]#定义空列表
#调用TEST.py中的while_fun函数,函数前无需加TEST.
message_rt.append(while_fun(2,12))
print(message_rt)
运行结果:
----import TEST.py--------
------while-------------
----message=默认值--------
5 is an even number
7 is an even number
9 is an even number
[10]
----message=2--------
3 is an even number
5 is an even number
7 is an even number
[10, 8]
----message=3--------
5 is an even number
7 is an even number
9 is an even number
[10, 8, 10]
3 is an even number
5 is an even number
7 is an even number
9 is an even number
11 is an even number
[12]
注意:导入后,在调用while_fun函数后,在下一个函数之前的代码也会一并执行。
4 导入时给函数指定别名
导入:from module_name import function_name as new_fc_name
使用:new_fc_name
'''导入特定的函数模块'''
print("----import TEST.py--------")
#使用import语句显式的导入函数while_fun,取名为WF_rename
from TEST import while_fun as WF_rename
message_rt=[]#定义空列表
#调用TEST.py中的while_fun函数,即WF_rename
message_rt.append(WF_rename(2,12))
print(message_rt)
运行结果:
----import TEST.py--------
------while-------------
----message=默认值--------
5 is an even number
7 is an even number
9 is an even number
[10]
----message=2--------
3 is an even number
5 is an even number
7 is an even number
[10, 8]
----message=3--------
5 is an even number
7 is an even number
9 is an even number
[10, 8, 10]
3 is an even number
5 is an even number
7 is an even number
9 is an even number
11 is an even number
[12]
注意:导入后,在调用while_fun函数后,在下一个函数之前的代码也会一并执行。
5 导入模块中的所有函数
将模块中的所有函数都复制到当前的程序文件中。
导入:from module_name import *
使用:跟导入特定的函数使用方法一致
6 传递任意数量的实参函数编写
(1)通过*variable传递不同数量的参数。
def MeasurementVariable(*variable):
print(variable)
MeasurementVariable('nmot','rl','zwout','zwspace','zwbase')
运行结果:
('nmot', 'rl', 'zwout', 'zwspace', 'zwbase')
(2)结合实参
def MeasurementVariable(position,*variable):
print(f"all input: {variable}.")
print(f"variable in pisition {position} is {variable[position]}")
MeasurementVariable(3,'nmot','rl','zwout','zwspace','zwbase')
运行结果:
all input: ('nmot', 'rl', 'zwout', 'zwspace', 'zwbase').
variable in pisition 3 is zwspace
(3)结合字典
有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键值对(通过**project_info)。
test_fun.py:
#定义函数
def Project_info_collect(vehicaltype,gearbox,**project_info):
project_info['vehical_type']=vehicaltype
project_info['gear_box']=gearbox
return project_info
#调用函数
vehical_info=Project_info_collect('CX001','CVT',
veh_color='white',
veh_emission='CN6B')
#打印结果
print(vehical_info)
运行结果:
{'veh_color': 'white', 'veh_emission': 'CN6B', 'vehical_type': 'CX001', 'gear_box': 'CVT'}