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

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/binhy0428/p/5154261.html

day③:函数式编程相关推荐

  1. 2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach

    目录 遍历  foreach 使用类型推断简化函数定义 使用下划线来简化函数定义 遍历  foreach 之前,学习过了使用for表达式来遍历集合.我们接下来将学习scala的函数式编程,使用fore ...

  2. 2021年大数据常用语言Scala(二十):函数式编程 介绍

    目录 函数式编程 介绍 函数式编程的意义在哪? 函数式编程 介绍 我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程.下面的这些操作是学习的重点. 现在我们将会逐渐接触函数式编程的方 ...

  3. Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...

  4. scala函数式编程(二) scala基础语法介绍

    上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容. 这里会先重点介绍scala的一些语法.当然,这里是假设你有一些ja ...

  5. [2017.02.23] Java8 函数式编程

    以前学过Haskell,前几天又复习了其中的部分内容. 函数式编程与命令式编程有着不一样的地方,函数式编程中函数是第一等公民,通过使用少量的几个数据结构如list.map.set,以及在这些数据结构上 ...

  6. 惰性求值 php,详细介绍C#函数式编程的示例代码

    public double MemoryUtilization() { //计算目前内存使用率 var pcInfo = new ComputerInfo(); var usedMem = pcInf ...

  7. java 函数式编程_函数式编程杂谈

    比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算.本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处. 一 ...

  8. 简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他...

    函数式编程 Lambda exec,eval和assert语句,repr函数 lambda语句 用来创建简短的单行匿名函数 print_assign = lambda name, value: nam ...

  9. spark编程基础--2.4函数式编程基础

    foreach遍历操作 映射操作map,flatmap 过滤操作filter 规约操作 reduce,fold方法 拆分操作partition,groupedBy,grouped,sliding Sc ...

  10. [译] Bob,函数式编程是什么鬼?

    原文地址:Intro to Swift Functional Programming with Bob 原文作者:Bob Lee 译文出自:掘金翻译计划 译者:Deepmissea 校对者:thank ...

最新文章

  1. Hadoop学习笔记(8) ——实战 做个倒排索引
  2. windows下生成github ssh key详解
  3. pixhawk硬件构架
  4. Mac OS X安装Lua
  5. 机器学习基础算法30-贝叶斯网络理论
  6. 广义表的存储结构算法c语言,广义表(一)
  7. android selector
  8. 蚂蚁金服所签署过战略协议-合作协议
  9. cad对计算机专业的用处,CAD软件的特点和用途
  10. Android扫描局域网内所有的ip地址
  11. EXCEL之对单元格批量填充内容
  12. 双硬盘分别装windows和linux,双硬盘分别安装windows和Ubuntu20双系统
  13. 清华大学计算机系学术委员会,清华大学学术委员会召开2018年度全体会议
  14. Javaweb分页技术实现
  15. Android集成友盟推送功能
  16. 办公软件不能打印能打印测试页,excel2010无法打印的解决方法
  17. Android通讯录(联系人)-ContentProvider
  18. 【Javascript】函数中的arguments
  19. 8月份开基飙升 股票基金最赚钱
  20. 【ALLEGRO】DRC错误代码

热门文章

  1. Qt学习之路(37): Qt容器类之关联存储容器
  2. 学习成为一个IT架构师
  3. 不重启程序使用最新版package
  4. 【不用拔插U盘也可以继续使用】
  5. Android中实现“程序前后台切换效果”和“返回正在运行的程序,而不是一个新Activity”...
  6. 基础学习 Linux命令
  7. SQL 中存放 varbinary型数据
  8. Tips/Tricks#4:不同页面之间传递值
  9. Python字符集编码和文件读写
  10. 【iOS】Touch Drag Inside 和 Touch Drag Outside、Touch Drag Enter、Touch Drag Exit的区别