Python总结,python入门总结
为什么是Python?
同学经常问我为什么选择Python。我很喜欢这种语言,因为它简单灵活,易学,易读,便携,功能强大。
可以说,每一代编程语言,我们都会达到一个新的高度。从汇编语言到C Pascal,随着C语言的诞生,C、Java等现代编译语言应运而生,随之而来的是强大的解释性脚本语言Python和可以进行系统调用的Perl。
比如Python里面有一些高级的数据结构,列表和字典都是内置语言,可以直接使用。在核心语言中提供这些重要的构建块可以缩短开发时间和代码量,并产生更多可读的代码。
面向对象的
Python是面向对象的编程
内存管理器
或者说C最大的缺点就是内存管理是开发者的责任。因此,即使对于一个很少访问、修改和管理内存的应用程序,程序员也必须在基本任务之外执行这些职责。这些强加给开发人员的不必要的负担和责任通常会分散他们的精力。
在Python中,由于内存管理是由Python解释器处理的,开发人员可以从内存事务中解脱出来,专注于最直接的目标,只专注于开发计划中的第一个应用。这将导致更少的错误,更健壮的程序和更短的开发周期。
以及可解释性和可编译性。
Python是一种解释性语言,也就是说开发过程中没有编译。一般来说,纯解释语言通常比编译语言运行得慢,因为它们不在本机代码中运行。然而,与Java类似,Python实际上是字节编译的。因此,可以生成类似于机器语言的中间形式。这既提高了Python的性能,又保留了解释性语言的优点。
为什么Python运行速度比C语言慢?
因为Python等动态语言中每一个简单的操作都需要大量的指令来完成。Python是一种动态语言,变量只是对对象的引用。例如,对于一个简单的操作:a b,在C中,只需要一条机器指令ADD。对于Python来说,变量A和B没有类型,但是它们的值是有类型的,所以在添加之前需要判断类型。然后,读取这些值,将它们相加,生成一个新的对象,存储操作结果,并返回对象。当然,你也可以
Python基金会
数据类型
python中的数据类型可以分为:字符串、布尔类型、整数、浮点数、数字、列表、元组、字典、日期。
字符串
对于不可变对象,可以使用单引号,可以扩展双引号表示单行字符串,可以使用三引号表示多行字符串,在三引号中可以自由使用单引号和双引号。
ASCII码
众所周知,电脑是美国人发明的。起初,只有127个字母,包括大小写字母、数字和一些符号,被编码到计算机中。这个编码表叫做ASCII码表。
统一码
很明显一个字节不足以处理一个汉字,也不能和ASCII码冲突,所以我国制定了GB2312码。但是世界上有很多语言,在多语文本显示时会出现乱码。所以Unicode应运而生,它把所有语言统一成一套代码,所以不会出现乱码。ASCII代表一个字节的字符,而Unicode代表两个字节的字符。用Unicode表示的字符串用U . 表示。
UTF-8
开头写的 #coding:utf-8 是什么意思?py文件?我们知道,Unicode码的存储空间是ASCII码的两倍,在存储和传输上会非常不经济。如果所有的书面文本都是英文,那么使用Unicode编码将是一种浪费。于是UTF-8编码应运而生。UTF-8编码根据不同的数字将一个Unicode字符编码成1-6个字节,ASCII码可以看作是UTF-8的一部分。
解码
在Python2.7中,无论操作系统给它什么样的编码字符串,它都会接收任何格式的字符串。如果默认格式与使用的格式不同,将会出现各种错误。
解决方法:
1.了解系统使用的编码格式。
2.先对获取的页面进行系统格式解码,再进行utf8格式编码。
3.在你的脚本中统一使用uft8编码。
4.处理之后,首先用utf8解码你的字符串,然后用系统格式编码。
在Python中,decode()和encode()通常用于解码和编码。
布尔型
布尔值只有两个值:True和Flase。
包括整数和负整数。
浮点数
即十进制整数和浮点数在计算机中的存储方式不同,整数的运算总是准确的,而浮点运算可能会有舍入误差。
目录
List是一个变量有序表,是Python内置的数据类型。您可以随时添加、删除和替换其中的元素。
Python中的list是一个迭代器。我们知道Python是用C写的,那么链表的内部实现是怎样的呢?Python中的list是基于PyListObject实现的,这是一个可变长度的对象。它通过一些方法在内部维护链表的地址,并进行内存管理来实现链表的功能。
元组
元组之外的另一种有序表叫做tuple tuple,但是tuple一旦初始化就不能修改。当它被定义时,元组的元素被确定。为什么要引入元组?因为元组是不可变的,所以代码更安全。如果tuple可以代替list,尽量用tuple。
因为元组是不可变的,所以修改元素是非法的,但是元素是可以连接组合的,例如:tuple3=tuple1 tuple2。
使用del语句删除整个元组。
字典词典
Python有内置字典,用键值存储,查找速度极快。与list相比,搜索速度要高得多。
为什么dict查找这么快?因为dict的实现原理和查字典是一样的。假设字典包含10,000个汉字。我们必须查找某个单词。一种方法是把字典从第一页翻回来,直到找到我们想要的单词。这个方法是在列表中查找元素的方法。列表越大,搜索越慢。第二种方法是先在词典索引表(如部首表)中查找这个词对应的页码,然后直接翻到页面找到这个词。不管你找哪个词,这个搜索速度都是很快的,不会随着词典规模的增大而变慢。
dict的初始化如下:
a={}
A[A]=1
Dict和List的区别:Dict的搜索速度和插入速度极快,不会随着key的增加而增加;但是,dict占用了大量内存,浪费了大量内存。
Dict是一个不可变的对象,因为键是用来计算值的存储位置的。为了保证结果的正确性,作为键的对象是不能改变的,在Dict中可以使用字符串、整数等不可变的对象作为键。
联合机组
与setdict类似,dict也是一组键,但不同的是集合中没有重复的键。
可变的和不可变的
总结一下,Python中不可变的对象是:字符串、整数、元组;变量有:列表,集合,字典。
对于可变对象,比如list,列表中的内容会改变,而对于不可变对象,比如str,使用replace()方法。虽然值可以改变,但是变量的值不会改变。为什么?
例如:
# coding:utf-8a= ABC b=A . replace( A , A)print bprint a
是变量,而“abc”是字符串对象。为什么执行上述代码后,A的值仍然是 abc ?是因为A本身就是一个变量,指向‘ABC’。调用方法replace作用于字符串对象 abc ,但并不改变 ABC 的内容,只是创建一个新的对象并赋给B变量。
对于一个不可变的对象,调用它自己的任何方法都不会改变对象本身的内容。这些方法将创建一个新对象并返回它,确保不可变对象本身永远不可变。
传递一个值还是一个引用?
Python在参数传递中遇到的一个有趣的问题是:函数的参数是值还是引用?
对于作为函数参数的不可变对象,相当于C语言的值传递;
对于作为函数参数的变量对象,相当于C语言的引用传递。
高级功能
迭代程序
Python中的迭代器是什么?
迭代器是一种访问集合元素的方法。迭代器的对象从集合的第一个元素开始访问,直到所有的元素都被访问。迭代器只能前进不能后退。
对于遍历支持随机访问的数据结构(tuple,list),迭代器并不比For循环有优势,因为迭代器会丢失索引值。但是对于不能随机访问的数据结构,迭代器是访问元素的唯一方法。
迭代器不需要提前准备好整个迭代过程中的所有元素。迭代器只在迭代到一个元素时才计算它。迭代器只在迭代到一个元素时才计算它。在此之前或之后,元素可能不存在或被破坏。这个特性使得迭代器特别适合遍历一些巨大的或者无限的集合。
迭代器中有两种基本方法:
Next方法:返回迭代器的下一个元素。
__iter__方法:返回迭代器对象本身。
建设者
带yield的函数在Python中称为生成器。Yield就是把一个函数变成一个生成器。在函数执行的过程中使用yield,就像用yield多次中断执行,每次中断都会通过yield返回当前的迭代值。
当数据量很大时,使用生成器效率更高。
装饰装置
函数是对象,函数对象也可以赋给变量,所以函数也可以通过变量调用。在代码运行过程中动态添加函数的方式称为decorator。使用Python的@语法,将装饰器放在函数的定义处。
类是用于描述如何生成对象的代码段。在Python中,类也是对象。只要使用了class关键字,Python解释器就会在执行时创建一个对象。这个对象本身具有创建对象的能力,所以它是一个类,但它本身仍然是一个对象。因此可以实现以下操作:可以赋给变量,可以复制,可以添加属性,可以作为函数参数传递。
这也是动态语言和静态语言最大的区别。函数和类的定义不是在编译时定义的,而是在运行时动态创建的。也就是说,在Python中,类是可以动态创建的,类也是对象。这就是Python在使用关键字类时在幕后做的事情。这些都是通过元类实现的。
那么元类到底是什么?
类是用来创建类的东西,创建类是为了创建类的实例对象,但是我们知道类是对象,元类是用来创建这些类(对象)的,所以元类是类的类。
类是像类一样创建对象的东西,可以称为类工厂。
该类的主要用途是创建API。
Python中的闭包是什么?
如果外部作用域中的变量在内部函数中被引用,那么内部函数被认为是一个闭包。在Python中,调用一个函数A会返回一个函数B给你,返回的函数B叫做闭包。
装饰是一种终结。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。