Python中的函数定义及参数

来源:互联网 发布:丝路传说 依人网络 编辑:程序博客网 时间:2024/06/05 07:11
1、函数必须先声明在使用,自定义函数采用关键字def,返回语句return,同时可以支持pass语句占位,标明函数为空函数:
#~ 函数
 
# 自定义求绝对值函数
def myAbs (x):
if not isinstance(x, (int, float)):
raise TypeError('Illigel argument.')
if (x > 0):
return x
else:
return -x
 
myAbs(1)
 
# 可以使用pass关键字,标明该函数什么事情也不做。主要用于函数占位
def passTest ():
pass
 
print('passTest() : ', passTest()) # 输出结果:passTest() : None
2、函数的默认参数:
默认参数必须在参数列表的最后定义,用于防止参数不匹配。当有多个默认参数,需要指定某一个默认参数的值时,可以带上参数的名称:
def power(x, n = 2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
 
s = power(2, 3)
d = power(2)
print('s = %s, d = %d' % (s, d)) # 输出结果: s = 8, d = 4
 
# 多个默认参数
def add(name, age, sex, province = '四川', city = '成都'):
print ('name = %s, age = %s, sex = %s, province = %s, city = %s' % (name, age, sex, province, city))
 
add('张三', 10, '男') # 输出结果:name = 张三, age = 10, sex = 男, province = 四川, city = 成都
add('李四', 9, "女", city = '广安') # 输出结果:name = 李四, age = 9, sex = 女, province = 四川, city = 广安

3、可变参数:
Python支持可变参数传递,采用前参数前边加一个星号(*)来标明参数类型是可变参数,可变参数实际上是采用tuple来接收参数信息,所以可以直接用for in循环遍历参数:
# 可变参数
 
# 定义求和参数
def sum(*number):
res = 0
for v in number:
res += v;
return res
 
print ('1 + 2 + 3 =', sum(1, 2, 3))
print ('1 + 2 =', sum(1, 2))
arg = [1, 2, 3, 4]
print ('1 + 2 + 3 + 4 =', sum(*arg))
4、关键字参数:
关键字参数用两个星号表示(**),内部自动组装成dict类型:
# 关键字参数
 
def reg(name, age, **other):
print ('register infomation : name %s, age %s, other %s' % (name, age, other))
# 注意这里的province、city为参数名称,而不是普通字符串
reg('dendy', 20, province = 'sc', city = 'cd') # 输出:register infomation : name dendy, age 20, other {'city': 'cd', 'province': 'sc'}
arg = {'province' : 'sc', 'city' : 'cd'}
reg('lily', 18, **arg) # 输出:register infomation : name lily, age 18, other {'province': 'sc', 'city': 'cd'}
5、各种参数的混合使用:
必选参数、默认参数、可变参数和关键字参数4种参数都可以混合使用,注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数
# 各种参数类型混合使用
 
def show(a, b, *args, **kw):
print ('%s, %s, %s, %s' % (a, b, args, kw))
 
show('haha', 'xixi', 'a', 'b', p1 = 'p1', p2 = 'p2') # 输出: haha, xixi, ('a', 'b'), {'p1': 'p1', 'p2': 'p2'}
arg = ('haha', 'xixi', 'a', 'b')
kw = {'p1' : 'p1', 'p2' : 'p2'} # 输出: haha, xixi, ('a', 'b'), {'p1': 'p1', 'p2': 'p2'}
show(*arg, **kw)
0 0