函数的参数可分为五类:位置参数、默认值参数、命名参数、可变参数、万能参数
1>位置参数指的是参数的位置,参数的位置固定,不同的参数位置,在函数中指代不同的值,所以输入的输入我们要按顺序输入参数的值。
2>默认值参数就是在定义函数的时候,给函数中的形参一个默认值,在调用函数时,如果没有给形参一个值则使用形参中的默认值。
注意:
1.
有默认值的参数要写在后面
2.参数
L
本身就是一个变量,
[] -----
指向的
List
对象,默认值非必要不要指向可变对象
(默认值必须指 向是不可变对象)
3>可变参数,
*
表示可变参数
允许调用函数的时候
传入0个或者任意个参数
,系统会将这些参数自动封装成
元组
def
num
(
*
numbers
):
sum
=
0
for
n
in
numbers
:
sum
=
sum
+
n
*
n
return
sum
# print(num([1,2,3,4]))
# print(num((1,2,3,4)))
print
(
num
(
1
,
2
,
3
,
4
))
print
(
num
(
1
,
2
,
3
))
list
= [
1
,
2
,
3
,
4
]
print
(
num
(
list
[
0
],
list
[
1
],
list
[
2
],
list
[
3
]))
该行代码相当于num(1,2,3,4)
print
(
*
list
) //
*遍历所有的list中的值
print
(
num
(
*
list
))
4>关键字参数
允许调用函数的时候传入
0个或者任意个参数
,系统会将这些参数自动封装成
字典
>>>
def
person
(
name
,
age
,
**
kw
):
...
print
(
"name:"
,
name
,
"age:"
,
age
,
"other:"
,
kw
)
...
>>>
person
(
"zhangsan"
,
18
)
name
:
zhangsan age
:
18
other
: {}
>>>
person
(
"zhangsan"
,
18
,
city
=
"Beijing"
)
name
:
zhangsan age
:
18
other
: {
'city'
:
'Beijing'
}
>>>
person
(
"zhangsan"
,
18
,
city
=
"Beijing"
,
gender
=
"
男
"
)
name
:
zhangsan age
:
18
other
: {
'city'
:
'Beijing'
,
'gender'
:
'
男
'
}
封装为字典的形式
命名关键字参数
>>>
def
person
(
name
,
age
,
*
,
city
,
gender
):
...
print
(
name
,
age
,
city
,
gender
)
...
>>>
person
(
"zhansgan"
,
24
,
city
=
"beijing"
,
gender
=
"
男
"
)
zhansgan
24
beijing
男
person("zhansgan",24,"beijing","
男
")
报错的原因是没有出现命名关键字,系统默认的是位置参
数,
person(name,age,*,city,gender)
函数位置参数只有两个,所以会报错
补充:
1
、如果函数参数中已经出现可变参数,可以省略命名关键字的
*
2
、也可以给命名关键字参数设置默认值
这五种参数类型可以组合使用,顺序是位置参数,默认值参数,可变参数,命名关键字参数,关键字参数。