函数


函数式编程最重要的是增强代码的重用性和可读性

  1.  定义和使用

def 函数名(参数):

  ...

  函数体

  ...

  返回值

函数的定义主要有如下要点:

def:表示函数的关键字

函数名:函数的名称,日后根据函数名调用函数

函数体:函数中进行一系列的逻辑计算

参数:为函数体提供数据

返回值:当函数执行完毕后,可以给调用者返回数据

举例:

 def mail():
n = 123
n += 1
print(n)
mail()
f = mail
f()

结果:

124

124

1-1 返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

 def show():
print('a')
return [11,22]
print('b')
show()

结果:

a

1-2 参数

函数中有三种不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数

普通参数

 def show(a1,a2):
print(a1,a2) show(11,22)

结果:

11  22

默认参数:默认参数需要放在参数列表最后

 def show(a1,a2=99):
print(a1,a2) show(11)

结果:

11  99

指定参数

 def show(a1,a2):
print(a1,a2) show(a2=123,a1=190)

结果:

190  123

动态参数

 def show(*arg):# * - 接收参数并转换元组
print(arg,type(arg)) show(1,56,78,8979)

结果:

(1,56,78,8979) <class 'tuple'>
 def show(**arg): #  ** - 接收参数并转换字典
print(arg,type(arg)) show(n1=78,uu=123)

结果:

{'uu': 123, 'n1': 78} <class 'dict'>

 def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) show(12,34,34,54,n9=33,n2=99)# 一个*的在前,两*在后

结果:

(12, 34, 34, 54) <class 'tuple'>

{'n2': 99, 'n9': 33} <class 'dict'>

 def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) l = (11,22,3,4)
d = {'n1':89,'k1':'hello'}
show(l,d)

结果:

((11, 22, 3, 4), {'k1': 'hello', 'n1': 89}) <class 'tuple'>

{} <class 'dict'>

很明显,结果不是我们想要的。关键是如果我们使用show(l,d)

那么和我们使用show(1,56,78,8979) 没有什么区别。所以,为了解决这种冲突问题,只需要在 l 前加一个*,在 d 前加两个 * 即可:

 def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) l = (11,22,3,4)
d = {'n1':89,'k1':'hello'}
show(*l,**d)

结果:

(11, 22, 3, 4) <class 'tuple'>

{'n1': 89, 'k1': 'hello'} <class 'dict'>

符合我们的要求

动态参数实现字符串格式化:

 s1 = "{0} is {1}"
ret = s1.format('Young','handsome')
print(ret)

结果:

Young is handsome

 s1 = "{0} is {1}"
l = ['Young','handsome2']
ret = s1.format(*l)
print(ret)

结果:

Young is handsome2

 s1 = '{name} is {value}'# 字典这里就不是{0}、{1}了,而是用{key}、{value}
ret = s1.format(name='Young',value='handsome')
print('第一:',ret) s2 = '{name2} is {key}'
d = {'name2':'Young','key':'smart'}
ret = s2.format(**d)
print('第二:',ret)

结果:

第一: Young is handsome

第二: Young is smart

 2.  内置函数

any : 只要有一个是真的就是真的

ord 和 chr配合使用

chr    ord    random.randint 可以生产验证码

enumerate

eval

map

filter

 li=[1,22,33,45,74,788]
def func(num):
if num>33:
return True
else:
return False
n = filter(func,li)
print(list(n))

结果:

[45, 74, 788]

将列表中大于 33 的元素拿出来

Python学习笔记 之 函数的更多相关文章

  1. Python学习笔记之函数

    这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...

  2. 小甲鱼:Python学习笔记003_函数

    >>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...

  3. Python学习笔记 - day6 - 函数

    函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...

  4. Python学习笔记系列——函数

    今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...

  5. Python学习笔记(五)函数和代码复用

    函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...

  6. python学习笔记(4)--函数

    1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...

  7. Python学习笔记-Day3-python函数

    1.为什么要用函数? 提高代码重复利用率,减少代码冗余.封装模块化代码,便于调用 2.函数声明定义(注意:函数先声明后调用) 注意:函数的reture循环中的exit功能一样(函数不执行,终止) 函数 ...

  8. Python学习笔记11—函数

    建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...

  9. Python学习笔记7-把函数当参数传递、指定可变参数

    把函数当参数传递 # 函数参数传递 # 面向对象编程就是把对象传来传去 # 面向函数编程就是把函数传来传去 def mytest(num): return num * 2 # # 不光可以传递变量,还 ...

  10. Python学习笔记_week3_函数

    一.介绍 1.面向对象(华山派)--->类(独门秘籍)--->class(定义的关键字) 2.面向过程(少林派)--->过程--->def 3.函数式编程(逍遥派)---> ...

随机推荐

  1. ToolBar和DrawerLayout的使用实现侧拉栏抽屉的开闭

    1.如图可以看到textColorPrimary,colorPrimary,colorPrimaryDark,navigationBarColor等颜色属性代表的相应位置,如下图 2.具体属性在res ...

  2. NSError

    -(NSString * )backErrorString{ //    self.code; //http://blog.csdn.net/linkai5696/article/details/59 ...

  3. 项目管理详细任务(PMBOK2008)

    启动 规划 执行 监控 收尾 选择项目经理 确定你将如何做计划-作为项目管理计划的一部分 组建最终项目团队 根据绩效基线进行绩效测量 确定收尾过程 确定公司文化和现存组织形式 创建项目范围说明书 执行 ...

  4. 在Ubuntu上单机安装Hadoop

    最近大数据比较火,所以也想学习一下,所以在虚拟机安装Ubuntu Server,然后安装Hadoop. 以下是安装步骤: 1. 安装Java 如果是新机器,默认没有安装java,运行java –ver ...

  5. java 版本EChart使用

    一.简介 EChart是百度开发的js图表软件,用它我们可以很方便地以图形化的方式对数据进行分析统计.该种方式js在页面动态拼接json数据,再进行渲染.这种方法的优点是,灵活,可以随时进行修改.缺点 ...

  6. js,jq新增元素 ,on绑定事件无效

    在jquery1.7之后,建议使用on来绑定事件. $('.upload a').on('click',function(){ $(this).remove(); }) 在DOM渲染的时候,也就是ht ...

  7. ubuntu下设置开机启动服务

    原文:http://blog.csdn.net/dante_k7/article/details/7213151 在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本 ...

  8. Apple Watch的课表应用iOS源码项目

    源码Class-Timetable,小清新风格的课表应用,可以按周或按天显示课表.按天显示时,左右滑动屏幕可以查看前一天或后一天的课表.功能:可以双模式切换(按天显示,按周显示,可以和 Apple W ...

  9. EF级联删除

    引言     在主表中指定Key,子表中指定Required后,并不会在数据库中生成级联删除的外键.那怎么才能使EF在数据中生成级联删除的外键? SQLServer数据库中级联删除功能配置界面: 上图 ...

  10. phpqrcode 生成二维码

    这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...