函数


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

  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. 实现Discuz论坛客户端应用源码

    通过使用该源码,开发者可以迅速地将Discuz论坛迁移到Android客户端中.不需要任何的开发工作即可拥有属于自己论坛的Android客户端 源码下载:http://code.662p.com/vi ...

  2. IOS开发之功能模块--输入框随着键盘的位置移动而移动

    废话不多说,先直接上效果图: 先熟悉一下在Cocoa框架中会用到的key键: 然后直接上Demo的源码截图: 看代码之前,补充说一句,Demo中的文本框以及文本框的背后灰色的View是通过storyb ...

  3. 2-C程序结构

    一.代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下: #include <stdio.h> #include & ...

  4. js控制复选框checkbox 只能单选

    我们在页面经常会用到单选框,来提供单值选在字段,但是有一个问题就是:一旦选择了就不能去除(即--只要选择了就不能再以空值提交了). 所以为了解决这个问题,用复选框限制单选是一个不错的选择 <sc ...

  5. 聊下git pull --rebase

    有一种场景是经常发生的. 大家都基于develop拉出分支进行并行开发,这里的分支可能是多到数十个.然后彼此在进行自己的逻辑编写,时间可能需要几天或者几周.在这期间你可能需要时不时的需要pull下远程 ...

  6. .NET/ASP.NET MVC(模块化开发AraeRegistration)

    阅读目录: 1.开篇介绍 2.AreaRegistration注册路由(传递路由上下文进行模块化注册) 1]开篇介绍 ASP.NET Routing 路由功能非常强大,设计的也很巧妙:如果说ASP.N ...

  7. MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除

    回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...

  8. 集群(cluster)和高可用性(HA)的概念

    1.1 什么是集群 简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的集群是,用户从来不会意识到集群系统 ...

  9. 11、只允许在主目录下上传和下载文件,不允许用putty登录

    创建用户xiao,   使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ...

  10. Media Queries 详解

    Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码:  <link href="css/reset.css" rel ...