ITPub博客

首页 > 应用开发 > IT综合 > Python函数参数传递以及变量作用域

Python函数参数传递以及变量作用域

IT综合 作者:DicksonJYL560101 时间:2017-12-26 11:19:34 0 删除 编辑

1.传递多个参数

使用*号,表示函数接受多个参数
  1. >>> def f(*args):  
  2.     print args  
  3. >>> f(1)  
  4. (1,)  
  5. >>> f(1,2,3)  
  6. (123)  
  7. >>> f()  
  8. ()  
  9. >>> f(1,2)  
  10. (12)  

2.传递字典参数

使用**号,表示传递的是字典参数
  1. >>> def f1(**args):  
  2.     print args  
  3.   
  4. >>> f1(a=1,b=2)  
  5. {'a'1'b'2}  

3.将函数名作为参数传递
  1. #coding=utf-8               #用来支持中文,=号前后不能有空格  
  2. #minmax.py  
  3. def minmax(test,*args):  
  4.     res=args[0]  
  5.     for arg in args[1:]:    #循环args中内容副本  
  6.         if test(arg,res):  
  7.             res=arg  
  8.     return res  
  9.   
  10. def lessthan(x,y):return x<y  
  11. def grtrthan(x,y):return x>y  
  12.   
  13. print minmax(lessthan,4,7,9,22,2,18)  
  14. print minmax(grtrthan,4,7,9,22,2,18)  

4.传递混合参数
  1. >>> def f2(a,*pargs,**kargs):  
  2.     print a,pargs,kargs  
  3.   
  4. >>> f2(1,2,3,4,5,x=11,y=12)  
  5. 1 (2345) {'y'12'x'11}  

5.练习--字符串∪和∩运算
  1. >>> def intersct(*args):  
  2.     res=[]  
  3.     for x in args[0]:  
  4.         for other in args[1:]:  
  5.             if x not in other:break  
  6.             else:res.append(x)  
  7.     return res  
  8.   
  9. >>> def union(*args):  
  10.     res=[]  
  11.     for seq in args:  
  12.         for x in seq:  
  13.             if not x in res:  
  14.                 res.append(x)  
  15.     return res  
  16.   
  17. >>> s1,s2,s3="SPAM","SCAM","SLAM"  
  18. >>> intersct(s1,s2)  
  19. ['S''A''M']  
  20. >>> union(s1,s2)  
  21. ['S''P''A''M''C']  

6.类成员变量和实例变量
  1. >>> class C:  
  2.         X = 33  
  3.         def m(self):  
  4.             X = 44  
  5.             self.X = 55  
  6. >>> obj = C()  
  7. >>> print obj.X  
  8. 33  
  9. >>> obj.m()  
  10. >>> print obj.X  
  11. 55  
  12. >>> C.X  
  13. 33  

6.练习--打印类的继承关系树
  1. <span style="font-size: 12px;">>>> def classtree(cls,indent):  
  2.     print '.'*indent,cls.__name__  
  3.     for supercls in cls.__bases__:  
  4.         classtree(supercls,indent+3)  
  5.   
  6.       
  7. >>> def instancetree(inst):  
  8.     print 'Tree of ',inst  
  9.     classtree(inst.__class__,3)  
  10.   
  11.       
  12. >>> def selftest():  
  13.     class A:pass  
  14.     class B(A):pass  
  15.     class C(A):pass  
  16.     class D(B,C):pass  
  17.     class E:pass  
  18.     class F(D,E):pass  
  19.     instancetree(B())  
  20.     instancetree(F())  
  21.   
  22.       
  23. >>> selftest()  
  24. Tree of  <__main__.B instance at 0x012E1A08>  
  25. ... B  
  26. ...... A  
  27. Tree of  <__main__.F instance at 0x012E1A08>  
  28. ... F  
  29. ...... D  
  30. ......... B  
  31. ............ A  
  32. ......... C  
  33. ............ A  
  34. ...... E  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29829936/viewspace-2149294/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Python 字符串
下一篇: Python多线程
请登录后发表评论 登录
全部评论
行万里路,读万卷书,阅无数人。 吃货一枚,爱吃湘菜,川菜,粤菜与杭帮菜,尝遍天下美食。 摄影爱好者,游遍名川大山,江河胡海,赏遍人间春色。 爱看影,尤其是港片,好莱坞大片。英文名:DicksonJin, 网名:风一样的BOY。精通SAP供应链咨询。2017年开始研习人工智能。

注册时间:2014-08-27

  • 博文量
    1940
  • 访问量
    3113996