python 内建属性及内建函数有哪些?

python3中查看类的内建属性和方法:

子类没有实现__init__方法时,默认自动调用父类的。 如定义__init__方法时,需自己手动调用父类的 __init__方法。

创建实例后,赋值时使用,在__new__
实例字符串表示(可读性) print(类实例),如没实现则使用repr结果
实例字符串表示(准确性)
6 # 属性访问时拦截器:当访问属性或方法名时,均会调用此方法 7 # 作用:扩展功能,比如记录日志、过滤拦截等 12 else: # 测试时注释掉这2行,将找不到其他属性,均返回None,但不会报错

程序执行else里面的代码时,即return self.test,因为return需要把self.test的值返回,那么首先要获取self.test的值(test方法名所对应的函数体的地址),因为self此时就是t这个对象,所以self.test就是t.test,此时要获取t这个对象的test属性,那么就会跳转到__getattribute__方法去执行,即此时产生了递归调用,由于这个递归过程中没有判断什么时候推出,所以这个程序会永无休止的运行下去,又因为每次调用函数,就需要保存一些数据,那么随着调用的次数越来越多,最终内存吃光,所以程序崩溃。

启动python解释器,输入dir(__builtins__),,可以看到很多python解释器启动后默认加载的属性和函数,这些函数称之为内建函数(Build-in Function),这些函数因为在编程时使用较多,cpython解释器用c语言实现了这些函数,启动解释器时默认加载。

这些函数数量众多,不宜记忆,开发时不是都用到的,待用到时再使用 help(function) 查看如何使用,或结合百度查询即可,在这里介绍些常用的内建函数。

python2中range返回列表,python3中range返回一个迭代器。如果想得到列表,可通过list函数:

map函数会根据提供的函数,对指定序列做映射。

  • sequence:是一个或多个序列,取决于function需要几个参数

参数序列中的每一个元素分别调用function函数,返回包含每次function函数返回值的list(python3中返回迭代器)。

filter函数会对指定序列执行过滤操作。

  • function:接受一个参数,返回布尔值

filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素。返回值的类型和参数sequence的类型相同(python3中返回迭代器)。

reduce函数会对参数序列中元素进行累积。

  • function:该函数有两个参数

#返回一个可打印的字符串对象,类似eval()

#返回一个反转的迭代器

#取小数点精度,会四舍五入,不加ndigits则取整

#设置属性值,该属性必须存在,如果不存在则不做修改

# 用于切片,主要用在切片操作函数里的参数传递。

#对可迭代对象进行排序,返回一个新的列表

key -- 主指定用来比较的元素,只有一个参数。

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

t.f() # 也可以实例化后调用

# 求和。Sums 从左到右开始和迭代的项目并返回总数。 开始默认为0。该迭代的项目通常是数字,起始值不允许是一个字符串。

# 指定start,则前面相加之后再加上start值并返回结果,返回值是int类型。

# super() 函数是用于调用父类(超类)的一个方法。

#返回对象object的属性和属性值的字典对象。

#返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。

#zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回一个对象,py2.x直接返回一个列表,py3.x需使用列表转换。

# 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

#__import__() 函数用于动态加载类和函数,如果一个模块经常变化就可以使用该函数来动态载入。

#这是日常Python编程中不需要的高级函数。


## 在分隔符首次出现位置拆分字符串,并返回包含分隔符之前部分、分隔符本身和分隔符之后部分的3元组 ## 返回字符串的一个拷贝,其中所有的子串old通过new替换。如果指定了可选参数count,则只有前面的count个出现被替换。 ##如果给出maxsplit,则至多拆分maxsplit次(因此,列表中将最多有maxsplit+1个元素)。如果没有指定maxsplit或为-1,那么分割的数量没有限制(进行所有可能的分割)

2.6.2. 字符串的格式化操作

xrange类型是不可变的序列,通常用于循环。xrange类型的好处是xrange对象始终占用相同数量的内存,无论它表示的范围的大小。但它没有始终一致的性能优势

集合对象是一个不同可哈希对象组成的无序集合。常见的使用包括成员测试、从序列中删除重复项和计算数学运算(如交、并、差和对称差)。(其它容器请参阅内建的字典、列表和元组类和collections模块。)

类似其它容器,集合支持x in set、 len(set)以及for x in set。作为一个无序的集合,集合不记录元素位置和插入顺序。因此,集合不支持索引、 切片、 或其它类似于序列的行为。

目前有两个内置的集合类型,set和frozenset。

文件对象使用C的stdio包实现并可以用内置的open()函数创建。文件对象也会由一些其它内置的函数和方法返回,如os.popen()os.fdopen()以及套接字对象的makefile()方法。临时文件可以通过tempfile模块创建,高级的文件操作如复制、移动和删除文件和目录可以通过shutil模块完成。

  • 当with代码块退出时,下面的代码将自动关闭f
注 Python中不是所有的"类文件式"类型支持用作with语句的上下文管理器。如果你的代码是用于处理任何类似文件的对象,你可以使用函数contextlib.closing()而不是直接使用对象。

如果每次都这么手动转换编码嫌麻烦(写程序怕麻烦是好事,不怕麻烦就会写出又长又难懂又没法维护的代码),Python还提供了一个codecs模块帮我们在读文件时自动转换编码,直接读出unicode:

2.11. 上下文管理器类型

2.12. 其他的内建类型

  • 既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
  • map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
  • reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
  • filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
  • sorted:Python内置的sorted()函数就可以对list进行排序,此外,sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。比如,如果要倒序排序,我们就可以自定义一个reversed_cmp函数:
  • 当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数:
注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。
另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()才执行

  • functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:
  • 导入模块时,还可以使用别名,这样,可以在运行时根据当前环境选择最合适的模块。比如Python标准库一般会提供StringIO和cStringIO两个库,这两个库的接口和功能是一样的,但是cStringIO是C写的,速度更快,所以,你会经常看到这样的写法:
  • 类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
  • 类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;
  • 之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

4.3 第三方模块使用(安装)

1.在可以联网的开发机器上安装好需要的包

1.下载指定的包到指定文件夹

我要回帖

更多关于 python内建数据类型有哪些 的文章

 

随机推荐