cyrus 发表于 2018-8-14 11:35:10

python函数及文件操作

- 位置参数  
    def foo(x,y,z):
  
      print(x,y,z)
  

  
    foo(1,2,3) 实参位置和形参位置一一对应
  

  
- 关键字参数:
  
    def foo(x,y,z)
  
      print(x,y,z)
  

  
    foo(z=3,y=1,x=4)
  
    foo(1,z=3,y=5)
  

  
    注意点:
  
      1. 关键字实参必须在未知实参后面
  
      2. 不能重复对一个形参传值
  

  
- 默认参数
  
    def reg(name,age,sex='male'):
  
      print(name,age,sex)
  

  
    注意点:
  
      1. 定义函数时,默认参数必须在非默认参数之后
  
      2. 默认参数在定义阶段智能赋值一次
  
      3. 默认参数通常定义成不可变类型
  

  
- 可变长参数,
  
    1. *会把溢出的按位置定义的实参都接受,以元组形式赋值给args
  
    def foo(x,y,*args):
  
      print(x,y)
  
      print(args)
  
    foo(1,2,3,4,5,6)
  
    输出:
  
      1 2
  
      (3,4,5,6) tuple形式
  

  
    2. def foo(x,y,**kwargs):**会把溢出的按关键字定义的实参都接收,以字典的形式赋值给kwargs
  
         print(x,y)
  
         print(kwargs)
  
       foo(1,2,c=2,name='lh',age=18)
  

  
    输出:
  
      1 2
  
      {'c': 2, 'name': 'lh', 'age': 18}
  

  
    例子:
  
      def foo(name,age=10,*args,sex='male',height,**kwargs):
  
            print(name)
  
            print(age)
  
            print(args)
  
            print(sex)
  
            print(height)
  
            print(kwargs)
  
      foo('alex',1,2,3,4,5,sex='female',height='150',a=1,b=2,c=3)
  

  
      输出:
  
            alex
  
            1
  
            (2, 3, 4, 5)
  
            female
  
            150
  
            {'c': 3, 'a': 1, 'b': 2}
  

  

  
      def foo(x,y,z):
  
            print('from foo',x,y,z)
  
      def wrapper(*args,**kwargs):
  
            print(args)
  
            print(kwargs)
  
            foo(*args,**kwargs)
  

  
      # wrapper(1,2,3,a=1,b=2)
  
      wrapper(1,z=2,y=3)
  

  
      输出:
  
            (1,)
  
             {'z':z,'y':3}
  
             from foo 1 3 2
页: [1]
查看完整版本: python函数及文件操作