zoukankan      html  css  js  c++  java
  • 初识Python(六)

    特殊的方法

    在类中有一些特殊的方法具有特殊的意义,比如__init____del__方法,它们的重要性我们已经学习过了。

    一般说来,特殊的方法都被用来模仿某个行为。例如,如果你想要为你的类使用x[key]这样的索引操作(就像列表和元组一样),那么你只需要实现__getitem__()方法就可以了。想一下,Python就是对list类这样做的!

    名称说明
    __init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
    __del__(self) 恰好在对象要被删除之前调用。
    __str__(self) 在我们对对象使用print语句或是使用str()的时候调用。
    __lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
    __getitem__(self,key) 使用x[key]索引操作符的时候调用。
    __len__(self) 对序列对象使用内建的len()函数的时候调用。

    列表综合

    通过列表综合,可以从一个已有的列表导出一个新的列表。例如,你有一个数的列表,而你想要得到一个对应的列表,使其中所有大于2的数都是原来的2倍。对于这种应用,列表综合是最理想的方法。

    >>> a=[2,3,4,5]

    >>> b=[2*i for i in a if i>2]

    >>> print b

    [6, 8, 10]

    在函数中接收元组和列表

    当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用***前缀。

    由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是**前缀,多余的参数则会被认为是一个字典的键/值对。

    >>> def say(*a):

    b=()

    for i in range(0,len(a)):

    print a[i],

    >>> say(2,3,4)

    2 3 4

    >>> def say(*a):

    print a

    >>> say(2,3,4)

    (2, 3, 4)

    lambda形式

    lambda语句被用来创建新的函数对象,并且在运行时返回该函数

    >>> def say(n):

    return lambda s:s*n

    >>> func=say(2)    运行say()时返回了lambda创建的新函数s:s*2给func,此时func就是一个函数,其参数是s  计算的是s*2

    >>> print func

    <function <lambda> at 0x00B5D1B0>

    >>> print func(5)

    10

    exec语句与eval语句

    exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。

    >>> exec "print func(5)"   接上面的lambda形式

    10

    eval语句用来计算存储在字符串中的有效Python表达式。

    >>> eval("6>5")

    True

    assert语句

    assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError

    >>> mylist = ['item']

    >>> assert len(mylist) >= 1

    >>> mylist.pop()

    'item'

    >>> assert len(mylist) >= 1

    Traceback (most recent call last):

      File "<stdin>", line 1, in ?

    AssertionError

    repr函数

    repr函数用来取得对象的规范字符串表示。你可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。

    >>> a={'1':1,'2':2,'3':3}

    >>> repr(a)

    "{'1': 1, '3': 3, '2': 2}"

  • 相关阅读:
    数据库版本管理工具flyway
    spring webapp的配置文件放置在项目外的方法
    logback
    linux as4 bind9 设置进程中的一些小效果
    设置/勾销Debian的屏保
    Linux内存:内存管理的天禀
    用YUM晋级CentOS体系中PHP和MySQL
    solaris的故事
    Solaris 的防火墙ipfilter设置
    mysql安置设置文件的成绩
  • 原文地址:https://www.cnblogs.com/hanmeimei/p/python6.html
Copyright © 2011-2022 走看看