Function,函数,主要是为了:1提高代码的复用程度,2将程序模块化。

定义函数

在Python中,使用def 用来定义函数,一般函数的定义如下:

  1. def name(arg1,arg2,....):
  2. statements
  3. return value

其中,return 用来返回函数执行的结果

一个简单的sample如下:

  1. >>> def times(x,y):
  2. ... return x*y
  3. ...
  4. >>> times(5,2)
  5. 10
  6. >>>

函数执行的结果可以放入到一个变量中:

  1. >>> result=times(5,2)
  2. >>> result
  3. 10
  4. >>>

Python 不需要定义参数的类型,函数结果的返回完全依赖于传入参数的类型,在上例中,Python自动识别传入的参数为两个数字,并作出返回值,当传入一个列表参数的时候,结果如下:

  1. >>> li=[1,2,3]
  2. >>> times(li,2)
  3. [1, 2, 3, 1, 2, 3]
  4. >>>

传入字符串的时候,结果如下:

  1. >>> a='Hello'
  2. >>> times(a,3)
  3. 'HelloHelloHello'
  4. >>>

所以简单的Summary一下,传入的函数参数会被python自动识别,也就是在运算的时候'*'识别并对不同类型的参数变量作出了不同的应对。但是如果'*'不能识别或者不支持传入的参数,那么在函数运行的时候还是会报错的,如下:

  1. >>> b='x'
  2. >>> times(a,b)
  3. Traceback (most recent call last):
  4. File "<stdin>", line 1, in <module>
  5. File "<stdin>", line 2, in times
  6. TypeError: can't multiply sequence by non-int of type 'str'
  7. >>>

所以,在不确定的情况下,可以先实验一下,传入的参数会不会造成error。

函数参数的类型

一般参数

关键字参数:通过参数名进行匹配

默认参数:没有传入值的参数定义的默认值

可变参数:*开头,可以是多个基于位置或者关键字的参数

具体,如下的函数定义中传入了不同的参数,代表了不同的含义:

  1. def fun(*name) #传入不定量的参数,这些参数会被组成一个元祖
  2. def func(name=value) #定义了参数的默认值
  3. def func(**name) #传入不定量的参数,这些参数会被组成一个字典
  4. def func(name,*args) #混合方式,多余的参数会被组成一个元祖传入
  5. def func(name,**args) #混合方式,多余的参数会被组成一个字典传入
  6. def func(*,name=value) #混合方式,后面的参数name必须通过关键字参数传入

生成器(generator)

生成器是用来创建python序列的对象。生成器是一种迭代器,使用它可以迭代庞大的序列,且不需要在内存中创建和存储整个序列。

在python中,一个函数中如果使用了yield,那么这个函数就是一个生成器。

有关生成器内容点这里

装饰器(decorator)

有关装饰器的内容点这里

Python学习之--函数/生成器/装饰器的更多相关文章

  1. Python学习笔记九:装饰器,生成器,迭代器

    装饰器 本质是函数,装饰其他函数,为其他函数添加附加功能 原则: 1不修改原函数的源代码 2不修改原函数的调用方式 知识储备: 1函数即变量 使用门牌号的例子说明函数,调用方式与变量一致 2高阶函数 ...

  2. 【Python学习之二】装饰器

    装饰器 首先,给出装饰器的框架: def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return ...

  3. python 学习笔记7(装饰器)

    闭包(closure)是函数式编程的重要的语法结构. 定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). def outer ...

  4. Python入门之函数的装饰器

    本章目录: 装饰器: 一.为什么要用装饰器 二.什么是装饰器 三.无参装饰器 四.装饰器语法糖 五.认证装饰器实现 六.叠加多个装饰器 七.带参装饰器 ======================== ...

  5. Python入门day04_函数与装饰器

    一.函数入门 什么是函数: # 函数:函数是一系列代码的集,用来完成特定功能的代码块,类似于工具,可以重复不但的去使用 为什么要有函数: # 优点:# 1. 避免代码的冗余 # 2. 让程序代码结构更 ...

  6. python学习,day4:装饰器的使用示例

    ---恢复内容开始--- 装饰器:本质是函数,(装饰其他函数)就是为其他函数添加附加功能 装饰器有其独特的原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 例子 import ...

  7. Python基础之函数与装饰器

    阅读目录 一.为什么要使用函数 二.函数的定义与调用 三.函数返回值 四.函数的参数 五.本章小结 六.装饰器 一.函数流程图: 函数名的命名规则: 1.函数名必须由字母下划线数字组成,不能是关键字和 ...

  8. python基础-闭包函数和装饰器

    闭包函数和装饰器 闭包函数 概念:在函数中(嵌套)定义另一个函数时,内部函数引用了外层函数的名字. 特性 闭包函数必须在函数内部定义 闭包函数可引用外层函数的名字 闭包函数是函数嵌套.函数对象.名称空 ...

  9. Python学习第十一课——装饰器

    #装饰器:本质就是函数,为其他函数附加功能原则:1.不修改被修饰函数的源代码2.不修改被修饰函数的调用方式 装饰器=高阶函数+函数嵌套+闭包 #高阶函数 ''' 高阶函数定义: 1.函数接受的参数是一 ...

随机推荐

  1. PHP之最长回文串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: " ...

  2. Windows Server 2003服务器清理C盘空间的资料多个解决方法

    一.关闭IIS HTTPRERR日志功能 默认情况下,2003服务器会把所有IIS访问错误的记录写入 C:WINDOWSsystem32LogFilesHTTPERR 下的 log 文件中,如果访问量 ...

  3. python3文件方法

    Python3 File(文件) 方法 需要注意:打开文件的 mode 参数注意区别文件指针位置 rw/rw+ 文件指针是在文件的开头,w任何模式都是会删除之前原有的内容的, a是追加且,打开文件指针 ...

  4. 解析JQuery Ajax

    jQuery是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封 ...

  5. expect离线安装

    expect5.45.4.tar.gz和tcl8.4.11-src.tar.gz压缩包请前往以下链接下载: https://download.csdn.net/download/gangzi221/1 ...

  6. MyEclipse搭建Structs2开发环境

    MyEclipse10搭建Strust2开发环境 - 孤傲苍狼 - 博客园https://www.cnblogs.com/xdp-gacl/p/3496242.html

  7. (1)python tkinter-窗体

    1.导入自带的包名 import tkinter 2.创建一个窗体对象 form=Tkinter.Tk() 3.显示窗体(这句应该是所有的设置部署完最后执行的一句代码) form.mainloop() ...

  8. windows系统下jupyter notebook使用虚拟环境

    目录 [亲测好使]windows系统下jupyter notebook使用虚拟环境 在虚拟环境中安装jupyter,并添加到jupyter kernel 参考 [未测试,但觉得比上面那方法好,因为上面 ...

  9. selenium基础(警告框的处理)

    selenium基础(警告框的处理) 在webdriver中处理JavaScript所产生的的警告框有三种类型 alert confirm prompt 划转到警告框的方法是:driver.switc ...

  10. WebClient 上传文件 上传文件到服务器端

    一直对于上传文件到服务器端困惑:以前,现在,学到了关于WebClient的post知识 瞬间对于上传文件到服务器觉得好轻松: 原理很简单:我们通过post服务器的页面:把本地的文件直接传递过去: 现在 ...