函数


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

  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. 【Swift 2.1】为 UIView 添加点击事件和点击效果

    前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 声明 欢迎转载,但请保留文章原始出处:) 博客园: ...

  2. RoboGuice 3.0 (三)总结篇

    经过前两篇的介绍,我们了解了如何使用RoboGuice方便的为我们注入需要的对象,这篇将着重说明原理. 一.Guice与RoboGuice Guise是Google开发的一个轻量级的依赖注入框架,主要 ...

  3. C语言关于利用sscanf实现字符串相加减

    #include<stdio.h>#include<string.h>void main(){ int a; int b; char str1[10] = "9999 ...

  4. TableViewCell重影问题

    UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击 ...

  5. Android 面试题及答案(2)

    1.Activity相关.launchmode,OnSaveInstnceState,生命周期等. 4种默认的launchmode,以及OnNewIntent的回调. OnNewIntent-> ...

  6. JS实现HTML标签转义及反转义

    今天我用ueditor时候遇到一个问题: 我从数据库中读取内容进行编辑的时候,不是有一些html标签嘛,从数据库读出来没有问题: 但是我用asp.net mvc,把读取出来的内容通过ueditor的a ...

  7. ORACLE等待事件:enq: TX - row lock contention

    enq: TX - row lock contention等待事件,这个是数据库里面一个比较常见的等待事件.enq是enqueue的缩写,它是一种保护共享资源的锁定机制,一个排队机制,先进先出(FIF ...

  8. 实时事件统计项目:优化solr和morphline的时间字段

    morphline优化,如下: 传过来的时间戳被复制到3个字段:eventTimeInMinuteChina_tdt ,eventTimeInMinuteUTC_tdt ,eventTimeInHou ...

  9. MySQL SQL 注入

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本博文将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是 ...

  10. 【hadoop】如何向map和reduce脚本传递参数,加载文件和目录

    本文主要讲解三个问题:       1 使用Java编写MapReduce程序时,如何向map.reduce函数传递参数.       2 使用Streaming编写MapReduce程序(C/C++ ...