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

定义函数

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

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

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

一个简单的sample如下:

>>> def times(x,y):
... return x*y
...
>>> times(5,2)
10
>>>

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

>>> result=times(5,2)
>>> result
10
>>>

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

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

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

>>> a='Hello'
>>> times(a,3)
'HelloHelloHello'
>>>

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

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

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

函数参数的类型

一般参数

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

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

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

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

def fun(*name)                    #传入不定量的参数,这些参数会被组成一个元祖
def func(name=value) #定义了参数的默认值
def func(**name) #传入不定量的参数,这些参数会被组成一个字典
def func(name,*args) #混合方式,多余的参数会被组成一个元祖传入
def func(name,**args) #混合方式,多余的参数会被组成一个字典传入
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. JAVA算法之递归

    Ⅰ.三角数字 首先我们来看一组数字:1,3,6,10,15,21.....,在这个数列中第n项是由n-1项加n得到的,这个序列中的数字称为三角数字因为他们可以形象化地表示成一个三角形排列.如下图 通过 ...

  2. canvas基础用法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 一阶段项目 总结 之 两张图片对比 手写 jquery 也可以使用beer slider 插件

    <!DOCTYPE html><html> <head>  <meta charset="utf-8">  <title> ...

  4. 阿里云在云栖大会发布SaaS加速器3.0版最新成果,让天下没有难做的SaaS

    2019年杭州·云栖大会顺利落幕,超过6万人次观展,200余位顶尖科学家分享了前沿技术.作为“阿里云不做SaaS”,坚持“被集成”战略的落地体现,阿里云SaaS加速器在云栖大会现场发布了SaaS加速器 ...

  5. re.groups取出来的空元祖??

    源自学习笔记: day23_1_re_ groups方法取出来的字符是空的元组??为啥? ''' # ------------------------------------------------- ...

  6. springmvc 拦截器不拦截jsp,只拦截控制器的访问

    spring是鼓励把jsp放到WEB-INF文件夹中,然后通过控制器进行访问

  7. Django的日常-AJAX

    目录 Django的日常-AJAX AJAX简介 AJAX与JQ的一个实例 AJAX与contentType AJAX传json格式 AJAX传文件 Django的日常-AJAX AJAX简介 首先A ...

  8. Spring 事务传播行为(12)

    事务传播行为 指定是Spring中一个事务方法调用另一个事务方法时.处理的行为 使用方式: @Transactional(propagation=Propagation.REQUIRED) 事务的使用 ...

  9. 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

    如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案 ...

  10. AndroidStudio 添加翻译插件

    添加方式 第一步 在AndroidStudio的菜单栏里找到 File > Settings > 点击 . 第二步 点击Plugins > 在点击Marketplace 等待插件列表 ...