标签:
# coding=gbk # python 函数的参数:包括必选参数,默认参数,可变参数,关键字参数 # 1 必选参数,就是每次必选要输入的参数 def abs1(num): #计算绝对值 if isinstance(num,[int,float]): return abs(num) else : raise TypeError ("num is not the right type") a = abs(1) print (a)
# 2 默认参数,就是每次如果不输入,则使用系统默认值 def sqrt_n(x,n=2): #计算n次方 s=1 while n>0: s=s*x n=n-1 return s print (sqrt_n(5)) print (sqrt_n(5,3)) # 当有多高默认参数的时候,可以再调用的时候指定某个参数的值 def student_enroll(name,age,city="beijing",gender=‘male‘): return name,age,city,gender student1 = student_enroll("Jim",18) student2 = student_enroll("Obama",18,gender="female") print ("st1 is: ",student1,‘\nst2 is: ‘,student2)
# 3 可变参数,传入的参数的个数是变的,他们调用时自动组装为一个tuple 举例说明 def sum2(*numbers): #计算几个数的和 sum2=0 for i in numbers: sum2=sum2+i return sum2 a=(1,5,2,6,2) #这里使用list同样有效,方法一样 print (sum2(*a)) #此处输入的是tuple,所以a的前面加*表示可变参数,实际可以这么写 print (sum2(1,5,2,6,2)) # 或者 print (sum2(a[0],a[1],a[2],a[3],a[4]))
# 4 关键字参数,允许传入0个或者任意个含参数名的参数,这些关键字参数自动组装为一个dict def matriculate(name,age,**kw): #此处的kw是keyword的缩写,也可以用其他字符替代 return(name,age,kw) s1 = matriculate("tom",18) s2 = matriculate("Jack",18,city = ‘beijing‘,gender = ‘male‘) print (‘s1 is: ‘,s1,‘\n‘,‘s2 is:‘,s2) #也可以提前定义好关键字参数kw(这里用sim代替),然后直接用如 sim={‘city‘:‘beijing‘,‘job‘:‘teacher‘,‘gender‘:‘male‘} s3= matriculate(‘Hu‘,18,**sim) print (s3)
#网上的例子 #最神奇的是通过一个tuple和dict,你也可以调用该函数: def func(a, b, c=0, *args, **kw): print (‘a =‘, a, ‘b =‘, b, ‘c =‘, c, ‘args =‘, args, ‘kw =‘, kw) args = (1, 2, 3, 4) kw = {‘x‘: 99} func(*args, **kw) #所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它
# 注意 ‘‘‘ 默认参数一定要用不可变对象,如l[]=none,否则运行会有逻辑错误 *args 是可变参数,args接收的是一次tuple() **kw 是关键字参数,接收的是一个dict{} 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法 ‘‘‘ #部分参考自网络,特此声明
标签:
原文地址:http://www.cnblogs.com/lizhaoxian/p/4189997.html