zoukankan      html  css  js  c++  java
  • Python学习之--函数/生成器/装饰器

    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)

    有关装饰器的内容点这里

  • 相关阅读:
    SVN的安装和使用手册2
    svn安装
    【1】第一篇 Postman的初级使用之设置环境快速切换生成环境与测试环境
    【4】Postman之Tests(断言)
    RIDE,如何指定report,log,output的存放位置
    python启动robotframework-ride失败,解决方案
    Python安装第三库超时的解决方法
    python 识别登陆验证码图片(完整代码)
    代码-字典
    Python数据分析入门
  • 原文地址:https://www.cnblogs.com/cedrelaliu/p/5151817.html
Copyright © 2011-2022 走看看