day③:函数式编程

start

一.函数的定义和使用
  1. def 函数名(参数):
  2. ...
  3. 函数体
  4. ...
  5. return 返回值
  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

例子:
  1. #!/usr/bin/python
  2. #coding=utf-8
  3. def test(name,age="18"):
  4. print ("my name is %s,age: %s") %(name,age)
  5. obj=test("yaobin",24)
  6. obj2=test("yaobin")
  7. [root@localhost python]# python def_test.py
  8. my name is yaobin,age: 24
  9. my name is yaobin,age: 18



二.函数的参数
  • 普通参数
  • 默认参数
  • 动态参数

普通参数例子:
  1. def func(name): #name :形参
  2. print name
  3. func('chenyaobin') #'chenyaobin :实参'

默认参数例子:
注意:默认参数必须放在最后
  1. def func(name,age=24):
  2. print("my name is %s,age: %s") %(name,age)
  3. func("chenyaobin") #age用了默认参数
  4. func("hy","18") #指定参数
  5. 结果:
  6. my name is chenyaobin,age: 24
  7. my name is hy,age: 18


指定参数例子:
  1. def func(name,age=24):
  2. print("my name is %s,age: %s") %(name,age)
  3. func("chenyaobin") #age用了默认参数
  4. func("test",30) #按顺序的指定
  5. #func(age=30,"test") #不可以这样子,会报错
  6. func(age=30,name="test") #不按顺序的指定
  7. 结果:
  8. my name is chenyaobin,age: 24
  9. my name is test,age: 30
  10. my name is test,age: 30


动态参数例子:
  1. # 动态参数
  2. # 例子①:
  3. def func(*args):
  4. print args

  5. #执行方式一
  6. func(11,22,33,44,55,66)

  7. #执行方式二
  8. li = [11,22,33,44,55,66]
  9. func(*li)
  10. 结果:
  11. (11, 22, 33, 44, 55, 66)
  12. (11, 22, 33, 44, 55, 66)
解析: *args表示把传进来的位置参数存储在tuple(元组)args里面


  1. # 动态参数
  2. # 例子②:
  3. def func(**kwargs):
  4. print kwargs
  5. #执行方式一
  6. func(name="yaobin",age=18)
  7. #执行方式二
  8. li={"name":"yaobin","age":18,'gender':'male'}
  9. func(**li)
  10. 结果:
  11. {'age': 18, 'name': 'yaobin'}
  12. {'gender': 'male', 'age': 18, 'name': 'yaobin'}
解析: **kwargs表示把参数作为字典的健-值对存储在dict(字典)kwargs里面


  1. # 动态参数
  2. # 例子③:
  3. def foo1(arg1,arg2,key1=1,key2=2,*arg,**keywords):
  4. print "arg1 parameters is ",arg1
  5. print "arg2 parameters is ",arg2
  6. print "key1 parameter is ",key1
  7. print "key2 parameter is ",key2
  8. print "Arbitrary parameter is ", arg
  9. print "keywords parameter is ",keywords
  10. foo1(2,3,4,5,456,789,a1=10,a2=20,a3=30)
  11. 结果:
  12. arg1 parameters is 2
  13. arg2 parameters is 3
  14. key1 parameter is 4
  15. key2 parameter is 5
  16. Arbitrary parameter is (456, 789)
  17. keywords parameter is {'a1': 10, 'a3': 30, 'a2': 20}
解析:
函数参数分为四部分:
arg1、arg2、key1、key2普通参数,其中 key1和key2有默认值
*arg:  多余的非普通参数,组成一个元组存储在args中
**keywords: 多余的非普通参数,组成一个字典的健-值对存储在keywords里面

函数声名部分,参数的四个部分不可颠倒位置,可以没有其中某几部分。
python函数的这种特性使得函数参数更加灵活,参数个数也不受限制。





end




原文地址:https://www.cnblogs.com/binhy0428/p/5154261.html