在写python函数时,要注意区分参数类型,现总结如下:
1、无参数
# 1、无参数
def f1():
print("无需传入参数。")
# 调用方法
f1()
执行结果:
无需传入参数。
2、位置参数
按函数原型参数所在位置传入数值
# 2、位置参数(按函数原型参数所在位置传入数值)
def f2(value):
print("value = ", value)
# 调用方法
f2(5)
def f3(int_value, string_value):
print("整型参数为:", int_value, "字符串参数为:", string_value)
# 调用方法
f3(6, "abcd")
执行结果:
value = 5
整型参数为: 6 字符串参数为: abcd
3、关键字参数
指定关键字传入数值,顺序可以颠倒
3、关键字参数(指定关键字传入数值,顺序可以颠倒)
def f4(int_value, string_value):
print("整型参数为:", int_value, "字符串参数为:", string_value)
# 调用方法
f4(int_value=10, string_value="ABC")
f4(string_value="DEF", int_value=6)
执行结果:
整型参数为: 10 字符串参数为: ABC
整型参数为: 6 字符串参数为: DEF
4、默认值参数
如果不传入参数,就会自动赋默认值,参数个数由函数原型确定
# 4、默认值参数(如果不传入参数,就会自动赋默认值,参数个数由函数原型确定)
def f5(value=6):
print("value = ", value)
# 调用方法
f5() # 不传参
f5(4) # 使用位置参数指定传参
f5(value=4) # 使用关键字参数指定传参
def f6(value1=5, value2="abcd"):
print("value1 = ", value1, "value2 = ", value2)
# 调用方法
f6() # 不传参
f6(4) # 使用位置参数传一个
f6(4, "ABC") # 使用位置参数全部传参
f6(value2="fgh") # 使用关键字参数指定传参一个
f6(value1=4, value2="hello") # 使用关键字参数全部传参
执行结果:
value = 6
value = 4
value = 4
value1 = 5 value2 = abcd
value1 = 4 value2 = abcd
value1 = 4 value2 = ABC
value1 = 5 value2 = fgh
value1 = 4 value2 = hello
5、不定长参数
传参个数由调用方法确定
# 5、不定长参数(传参个数由调用方法确定)
# 以*开头的为元组形式,以**开头的为字典形式
def f7(value1, *value2):
print("确定参数value1 = ", value1)
print("不确定参数value2 = ", value2)
# 调用方法
# f7() # 报错,至少传参一个
f7(5) # 使用位置参数传一个
f7(5, 60, 70, 80) # 使用位置参数传两个
f7(value1=10) # 使用关键字参数传一个
def f8(value1, **value2):
print("确定参数value1 = ", value1)
print("不确定参数value2 = ", value2)
# 调用方法
# f8() # 报错,至少传参一个
f8(5) # 使用位置参数传一个
f8(5, name="ZML", age=19, sex="Male") # 使用位置参数传两个
f8(value1=10, name="ZML", age=19, sex="Male") # 使用关键字参数和位置参数传两个
执行结果:
确定参数value1 = 5
不确定参数value2 = ()
确定参数value1 = 5
不确定参数value2 = (60, 70, 80)
确定参数value1 = 10
不确定参数value2 = ()
确定参数value1 = 5
不确定参数value2 = {}
确定参数value1 = 5
不确定参数value2 = {‘name’: ‘ZML’, ‘age’: 19, ‘sex’: ‘Male’}
确定参数value1 = 10
不确定参数value2 = {‘name’: ‘ZML’, ‘age’: 19, ‘sex’: ‘Male’}
6、强制关键字传入
单独使用*号,*号后面的参数必须为关键字参数,之前的不受影响
# 6、强制关键字传入(单独使用*号,*号后面的参数必须为关键字参数,之前的不受影响)
def f9(value1, value2, *, value3):
print("参数value1 = ", value1, ",参数value2 = ", value2, ",关键字参数value3 = ", value3)
# 调用方法
# f9(1, 2, 3) # 报错
f9(3, 4, value3=9)
f9(0, value3=10, value2=7)
f9(value3=10, value2=6, value1=9)
执行结果:
参数value1 = 3 ,参数value2 = 4 ,关键字参数value3 = 9
参数value1 = 0 ,参数value2 = 7 ,关键字参数value3 = 10
参数value1 = 9 ,参数value2 = 6 ,关键字参数value3 = 10
7、强制位置传入
单独使用/号,/号前面的参数必须为位置参数,之后的不受影响
def f10(value1, value2, /, value3):
print("位置参数value1 = ", value1, ",位置参数value2 = ", value2, ",参数value3 = ", value3)
# 调用方法
f10(1, 2, 3)
# f10(value1=3, value2=8, value3=7) #报错
f10(4, 6, value3=9)
执行结果:
位置参数value1 = 1 ,位置参数value2 = 2 ,参数value3 = 3
位置参数value1 = 4 ,位置参数value2 = 6 ,参数value3 = 9
8、/和*的混合使用
# 8、/和*的混合使用
def f11(value1, value2, /, value3, value4, *, value5, value6):
print("位置参数value1 = ", value1, ",位置参数value2 = ", value2, ",参数value3 = ", value3\
, ",参数value4 = ", value4, ",关键字参数value5 = ", value5, ",关键字参数value6 = ", value6)
# 调用方法
f11(3, 4, 6, value4=10, value5=9, value6=14)
f11(3, 4, 6, 10, value5=9, value6=14)
f11(3, 4, value3=6, value4=10, value5=9, value6=14)
执行结果:
位置参数value1 = 3 ,位置参数value2 = 4 ,参数value3 = 6 ,参数value4 = 10 ,关键字参数value5 = 9 ,关键字参数value6 = 14
位置参数value1 = 3 ,位置参数value2 = 4 ,参数value3 = 6 ,参数value4 = 10 ,关键字参数value5 = 9 ,关键字参数value6 = 14
位置参数value1 = 3 ,位置参数value2 = 4 ,参数value3 = 6 ,参数value4 = 10 ,关键字参数value5 = 9 ,关键字参数value6 = 14