由于学习数据分析,让我接触到了python语言,长期使用java语言,让刚刚入门python的我有点蒙圈,python言语非常的灵活,同时可以大大的降低代码量,又有十分丰富的第三方库。下面是我在学习函数的参数时,总结的一些经验。
关于在python中定义的函数,其参数可以分为:必选参数,默认参数,可变参数,命名关键字参数,和关键字参数。参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。各种参数用法灵活,以下是各种参数的具体用法:(代码经过实际运行,使用python3.6)
# 带默认参数
def
power(x
, n=
2):
result =
1
for i
in
range(n):
result *= x
return result
print(power(
2
,
3))
# 带多个默认参数
def
student(name
,age
,city=
"合肥"
,zip=
"230009"):
print(
"name:"
, name)
print(
"age:"
, age)
print(
"city:"
, city)
print(
"zip:"
, zip)
# print(student("zhouyonghang",23,zip="230004"))
# 默认参数必须是不可变的,否则会出现意外错误,python会记住每次调用的默认参数的引用,当默认参数不可避免为可变参数时:
def
add_end(li=
None):
if li
is None:
li = []
li.append(
"END")
return li
print(add_end())
# 对于可变参数,则向函数传入一个tuple或者list
def
cal_add(para):
result =
0
for i
in para:
result += i
print(result)
cal_add([
1
,
2
,
3])
cal_add((
2
,
3
,
4))
#对于传入任意个数的参数来说,可以在参数名前面加上*
def
cal_add_onestar(*param):
result =
0
for i
in param:
result += i
print(result)
cal_add_onestar(
1
,
2
,
3
,
4
,
5)
cal_add_onestar(
3
,
5)
# 关键字参数,关键字参数允许传入0个或者多个参数,在函数内部,传入的参数会和参数名构成一个dict,如果为other传入一个字典,那么other得到的是字典的副本
def
person(name
,age
,**other):
print(
"name:"
, name)
print(
"age:"
, age)
print(
"other"
, other)
person(
name=
"zhouyonghang"
,
age=
23
,
city=
"hefei"
,
zip=
230009)
person(
"zhouyonghang"
,
23
,
city=
"hefei"
,
zip=
230009)
# 如果需要限制关键字的名称,则需要使用命名关键字,在其他参数后面加上单独的*,*号后面的部分就是提供命名限制的关键字.如果参数列表中已经有了可变参数,那么就不需要加上单独的*号
# 命名关键字作为必要的关键字,必须传入调用的函数中
def
person_with_namedpara(name
,age
,*
,job
,city=
"hefei"):
print(name+
"{0} ".format(age))
print(job)
print(city)
def
person_with_namedpara_(name
,age
,*args
,job
,city):
print(name +
"{0} ".format(age))
print(args)
print(job)
print(city)
atuple=(
1
,
2
,
3
,
3)
person_with_namedpara(
"zhouyonghang"
,
23
,
job=
"cs")
person_with_namedpara_(
"zhouyonghang"
,
23
,*atuple
,
job=
"programmer"
,
city=
"hefei
”)