1:enumerate

enumerate(sequence, start=0)

该函数返回一个enumerate对象(一个迭代器)。其中的sequence参数可以是序列、迭代器或者支持迭代的其他对象。该函数返回一个迭代器,其中的next方法返回一个元组,该元组包含从sequence获取的值,以及一个计数值(从start参数开始,该参数默认为0)。该函数的实现类似下面的代码:

def enumerate(sequence, start=0):
n = start
for elem insequence:
yield n, elem
n += 1

实例如下:

>>> seasons = ['Spring',  'Summer',  'Fall',  'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

 

2:range和xrange

range(stop)

range(start,stop, step)

range()会返回一个包含所有 k 的列表,这里 start <= k < top, 从 start 到stop , k 每次递增 step, step不可以为零,否则将发生错误。该函数经常用在for循环中,如果省略了step,则默认为1。如果省略了start,则默认为0。

如果step是正数,则生成列表中的最后一个元素是比stop小的,start+i*step型最大的数。如果step是负数,则生成列表中的最后一个元素是比stop大的,start + i*step型最小的树。例子如下

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5)
[0, 5, 10, 15, 20, 25] >>> range(0, 10, 3)
[0, 3, 6, 9] >>> range(0, -10,-1)
[0, -1, -2, -3, -4, -5, -6,-7, -8, -9] >>> range(0)
[] >>> range(1, 0)
[]

       xrange()类似于range(),不过当有一个很大的范围列表时,xrange()可能更为适合, 因为它不会在内存里创建列表的完整拷贝。它只被用在 for 循环中, 在 for 循环外使用它没有意义。它的性能远高出 range(),因为它不生成整个列表。

 

3:type和isinstance

class  type(object)

class  type(name,  bases,  dict)

一个参数的type,返回任意对象的类型,返回值为一个type对象。推荐使用内置函数isinstance来判断某个对象的类型。

type()内建函数接收任意的Python对象做为参数并返回他们的类型,不局限于标准类型。它的返回值是一个类型对象。比如:

>>> s = 'xyz'
>>> type(s)
<type 'str'> >>> type(0+0j)
<type 'complex'> >>> type(0.0)
<type 'float'> >>> type([])
<type 'list'> >>> type(42)
<type 'int'>

type函数的返回值<type 'int'>,实际上是一个类型对象。类型本身也是一种对象。

那么类型对象的类型是什么?:

>>> type(type(42))
<type 'type'> >>> type(int)
<type 'type'> >>> type(type)
<type 'type'>

没错,所有类型对象的类型都是type,它也是所有Python类型的根和所有Python 标准类的默认元类(metaclass)。

随着Python 2.2 中类型和类的统一。类(class)就是类型(type),实例(instance)是对应类型的对象(object)。(类<—>类型;实例<—>对象)

>>> class Foo: pass         # old-style class
>>> foo = Foo() >>> class Bar(object): pass # new-style class
>>> bar = Bar() >>> type(Foo)
<type 'classobj'> >>> type(foo)
<type 'instance'> >>>type(Bar)
<type 'type'> >>>type(bar)
<class'__main__.Bar'>

三个参数的type,返回一个新的type对象。这是一个声明类的动态方式。name字符串参数定义类的名字,并成为类__name__属性;bases元组参数列出该类的所有父类,并成为类的__bases__属性;dict字典参数是包含类内部定义的命名空间,并成为类的__dict__属性。比如,下面两种声明,创建了相同的type对象:

>>> class X(object):
... a = 1 >>> X = type('X', (object,),dict(a=1))

isinstance(object,  classinfo)

判断object是否为classinfo的实例(对象),或是其(直接、间接、virtual)子类的实例(对象)。(类<—>类型;实例<—>对象,python2.2之后,实现了类和类型的统一)。

classinfo可以是class对象(旧式类),也可以是type对象(新式类),或者是class或type对象组成的元组(只能是元组,其他序列不可以)。否则,会引发TypeError异常。

Python基础:常用函数的更多相关文章

  1. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  2. python基础——返回函数

    python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.  我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...

  3. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  4. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

  5. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

  6. 八. Python基础(8)--函数

    八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x):     ' ...

  7. java基础--常用函数总结

    java基础--常用函数总结 2019-3-16-23:28:01-----云林原创 1.split()字符串分割函数 将一个字符串分割为子字符串,然后将结果作为字符串数组返回. 2.Math.flo ...

  8. Python 基础 常用运算符

    Python 基础 常用运算符 计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算术运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算. 今天我们暂只学习 算术运算. ...

  9. python基础之函数详解

    Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...

  10. Python学习笔记(一)python基础与函数

    1.python基础 1.1输入与输出 输出 用print加上字符串,就可以打印指定的文字或数字 >>> print 'hello, world' hello, world > ...

随机推荐

  1. 玩转 Django2.0 笔记1

    模板静态  路由 urls.py urlpatterns = [ path("<year>/<int:month>/<slug:day>",my ...

  2. 3_58 csapp 第三版的答案

    参考代码了http://blog.csdn.net/scf0920/article/details/77543294 3.58 看汇编写c代码 long decode(long x, long y,l ...

  3. JSP-http和tomcat

    一 Http 1.1 javaweb概述 1.2 http协议的概述 1.什么是Http协议 HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 ...

  4. 对List<Map<String, Object>>集合排序

    private void mySort(List<Map<String, Object>> list) { //list为待排序的集合,按SEQ字段排序 Comparator& ...

  5. 浅析Vue响应式原理(三)

    Vue响应式原理之defineReactive defineReactive 不论如何,最终响应式数据都要通过defineReactive来实现,实际要借助ES5新增的Object.definePro ...

  6. Leetcode766.Toeplitz Matrix托普利茨矩阵

    如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵. 给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True. 示例 1: 输入: matrix = ...

  7. CentOS 上MySQL报错Can't connect to local Mysql server through socket '/tmp/mysql.scok' (111)

    好吧,这是最常见的MySQL服务没有打开 那就赶紧去打开啊! 在管理员模式下运行以下语句: /usr/local/mysql/bin/mysqld_safe --user=mysql & 成功 ...

  8. AS2.2使用CMake方式进行JNI/NDK开发

    之前写过一篇比较水的文章Android手机控制电脑撸出HelloWorld 里面用到了JNI/NDK技术. 这篇文章给大家介绍下JNI/NDK开发.采用的是Android Studio2.2开发环境, ...

  9. NOIP2016提高A组模拟9.28总结

    这次三道题都是可以AC的. 每道题思路都正确,但每道题都有细节没有注意. 第一题 1.没注意系数为1时可以省略系数: 2.没注意在第一项处理常数后,不能输出+号. 导致丢失20分:一定要多出特殊数据, ...

  10. 2019.10.24TCP协程处理

    server from gevent import monkey,spawn monkey.patch_all() import socket server = socket.socket() ser ...