liukaida 发表于 2018-8-11 06:50:06

Python入门篇(六)之函数

#1、位置参数:按照从左到右的顺序定义的参数  位置形参:必选参数
  位置实参:按照位置给形参传值
  def test1(x,y):
  print(x,y)
  test1(1,2) #位置参数
  test1(x=4,y=6) #关键字参数
  执行结果:
  1 2
  4 6
  #2、关键字参数:按照key=value的形式定义的实参
  无需按照位置为形参传值
  注意的问题:
  1. 关键字实参必须在位置实参右面
  2. 对同一个形参不能重复传值
  #3、默认参数:形参在定义时就已经为其赋值
  可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
  注意的问题:
  1. 只在定义时赋值一次
  2. 默认参数的定义应该在位置形参右面
  3. 默认参数通常应该定义成不可变类型
  def test2(x,y=3): #默认参数y的值为3
  print(x,y)
  test2(2)
  test2(2,6)
  执行结果:
  2 3
  2 6
  #4、可变长参数(*args,**kwargs):
  可变长指的是实参值的个数不固定
  而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它
  def test3(*args): #可变长参数,使用*args接收N个位置参数,并且以元组的方式存储
  print(args)
  test3(1,2,3,4,5,6)
  执行结果:(1, 2, 3, 4, 5, 6)
  def test4(name,*args): #可变长参数和位置参数混合使用
  print(name,args)
  test4('alex',4,5,6)
  test4(1,*)
  执行结果:
  alex (4, 5, 6)
  1 (1, 2, 3)
  def test5(x,y,**kwargs): #**kwargs接受N个关键字参数,以字典的方式进行存储
  print(x,y)
  print(kwargs)
  test5(1,2,c=3,d=4,e=5)
  test5(1,y=2,**{'a':1,'b':2,'c':3})
  执行结果:
  1 2
  {'d': 4, 'e': 5, 'c': 3}
  1 2
  {'a': 1, 'b': 2, 'c': 3}
  def test6(*args,**kwargs):
  print(args)
  print(kwargs)
  test6(5,6,7,a=1,b=5) #位置参数必须在关键参数的前面,否则会报错
  执行结果:
  (5, 6, 7)
  {'a': 1, 'b': 5}
页: [1]
查看完整版本: Python入门篇(六)之函数