Python部分知识点总结

这几天按照章节顺序整理了一些Python的知识点,便于以后查看。

  1. Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。一切变量在使用前必须赋值,变量赋值以后该变量才会被创建。一个变量可以通过赋值指向不同类型的对象。
  2. Python属于强类型编程语言,Python是一种动态类型语言,变量的类型是可以随时变化的。
  3. Python采用的是基于值的内存管理方式,如果为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一块内存地址。
  4. Python具有自动内存管理功能,对于没有任何变量指向的值,Python自动将其删除。
  5. int 型的最大值 sys.maxint = 2**31-1
  6. 由于Python语言所有变量都可以看做类,因此其有固定的成员变量和方法。C.real,c.imag,c.conjugate()返回共轭复数
  7. 使用dir(builtins)命令查看Python的内置函数。BIF(Bulit In Function)意为内置函数,是Python自身提供的函数功能。使用keyword.kwlist查看关键字。
  8. 变量命名不能使用关键字
  9. 注释: #开头的行,或者使用三个单引号 ‘’‘内容’’’ , 也可以使用三个双引号 “”“内容”""。
  10. Python 通常是一行写完一条语句。当语句较长时,可以使用反斜杠()来实现多行语句。
  11. Python最具特色的就是使用缩进来表示代码块,不需要使用大括号{}。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
  12. input()函数的返回结果都是字符串,eval(input(prompt)),可以把默认的字符串转化为原有的数据类型
  13. 执行help(‘modules’)查看所有python自带模块列表。可以使用sys.modules.items()显示所有预加载模块的相关信息。
  14. ord() 用来返回单个字符的序数或Unicode码;chr()用来返回某序数对应的字符
  15. enumerate()函数用来枚举可迭代对象中的元素,返回可迭代的enumerate对象,其中每个元素都是包含索引(下标)和值的元组。
  16. 判断是否为闰年:import calender; calendar.isleap(2016)
  17. break语句在while循环和for循环中都可以使用,一般放在if选择结构中,一旦break语句被执行,将使得整个循环提前结束。continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。
  18. bai, shi, ge = map(int, str(i)),i=223
  19. 列表List、元组Tuple、字典Dictionary、字符串String等数据类型虽然是可迭代的,但都不是迭代器,因为它们都没有next( )方法。
  20. reversed() 函数是使程序进行反向遍历的函数,然后返回一个“反序排列”的可迭代对象。reversed()之后,只在第一次遍历时返回反序的序列值,若再次调用,则会返回空值的结果。
  21. 列表使用使用append对象方法可原地址修改列表,即原地操作,效率高;使用“+”又创建了一个新列表,效率慢
  22. 将列表与整数相乘,生成一个新列表,新列表是原列表中元素的重复。
  23. Pop()括号里是下标;del –删指定位置;remove()删具体值;
  24. 列表中存储的是元素的内存地址,而非元素的值
  25. 利用切片可以截取现有列表的部分或整理,返回一个新列表;切片是列表的浅复制,不适合所有的列表;使用切片可以原地址修改列表内容。
  26. 使用内置函数sorted对列表进行排序并返回新列表;使用内置函数reversed方法对列表元素进行逆序排列并返回迭代对象
  27. 当元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
  28. 元组中的数据一旦定义就不允许更改。从效果上看,tuple( )冻结列表,而list( )融化元组
  29. globals()返回包含当前作用域内所有全局变量和值的字典。locals()返回包含当前作用域内所有局部变量和值的字典
  30. 对象的get方法获取指定键对应的值,并且可以在键不存在的时候返回指定值。
  31. 使用字典对象的items()方法可以返回字典的键、值对列表
    使用字典对象的keys()方法可以返回字典的键列表
    使用字典对象的values()方法可以返回字典的值列表
  32. 字典:不加特殊说明,默认输出键
  33. 使用字典对象的update方法将另一个字典的键、值对添加到当前字典对象
  34. 集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据
  35. 创建空集合用set();{}创建一个空字典。
  36. 集合对象的pop()方法弹出并删除其中一个元素
  37. 集合添加元素用add()对象方法
  38. 字符串驻留机制:
    仅包含下划线(_)、字母和数字的字符串会启用字符串驻留机制驻留。
    即将一个值赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。
    Python只会针对整数范围为[-5, 256]的整数启用字符串驻留
  39. 字符串:find()和rfind方法分别用来查找一个字符串在另一个字符串指定范围(默认是整个字符串)中首次和最后一次出现的位置,如果不存在则返回-1;
  40. 字符串:index()和rindex()方法用来返回一个字符串在另一个字符串指定范围中首次和最后一次出现的位置,如果不存在则抛出异常;
  41. 字符串:count()方法用来返回一个字符串在另一个字符串中出现的次数
  42. 字符串:split()和rsplit()方法分别用来以指定字符为分隔符,将字符串左端和右端开始将其分割成多个字符串,并返回包含分割结果的列表;如果不指定分隔符,则字符串中的任何空白符号(包括空格、换行符、制表符等等)都将被认为是分隔符,返回包含最终分割结果的列表。
  43. 字符串:partition()和rpartition()用来以指定字符串为分隔符将原字符串分割为3部分,即分隔符前的字符串、分隔符字符串、分隔符后的字符串,如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。
  44. 不推荐使用+运算符连接字符串,优先使用join()方法
  45. 字符串:lower():返回小写字符串、upper():返回大写字符串、capitalize():字符串首字符大写、title():每个单词的首字母大写、swapcase():大小写互换
  46. 字符串:查找替换replace(),类似于“查找与替换”功能,第一个参数可为待替换字符串组成的元组
  47. 字符串对象的maketrans()方法用来生成字符映射表,而translate()方法用来根据映射表中定义的对应关系转换字符串并替换其中的字符,使用这两个方法的组合可以同时处理多个不同的字符,replace()方法则无法满足这一要求。
  48. strip():删除指定字符,不是字符串、rstrip():删除字符串右端指定字符、lstrip():删除字符串左端指定字符
  49. 成员判断,关键字in,in左边的字符串作为一个整体对待
>>> 'abcd' * 3      
    'abcdabcdabcd'
  1. s.startswith(t)、s.endswith(t),判断字符串是否以指定字符串开始或结束
  2. center()、ljust()、rjust(),返回指定宽度的新字符串,原字符串居中、左对齐或右对齐出现在新字符串中,如果指定宽度大于字符串长度,则使用指定的字符(默认为空格)进行填充。
  3. zfill()返回指定宽度的字符串,在左侧以字符0进行填充。
    ‘abc’.zfill(2) #指定宽度小于字符串长度时,返回字符串本身’abc’
  4. zip()也可以作用于字符串;切片也适用于字符串,但仅限于读取其中的元素,不支持字符串修改。
  5. Python标准库string中定义数字字符、标点符号、英文字母、大写字母、小写字母等常量:
>>> import string
>>> string.digits
'0123456789'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.ascii_letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1. #处理连续的重复单词
>>> s = "It's a very good good idea"
>>> re.sub(r'(\b\w+) \1', r'\1', s)        
    "It's a very good idea"
  1. 函数return语句用来从一个函数中返回一个值给外部调用者,同时结束函数。如果函数没有return语句,或者有return语句但是没有执行到,或者只有return而没有返回值,Python将认为该函数以return None结束。
  2. 函数形参和实参的功能是数据传送
  3. 位置参数(positional arguments)是比较常用的形式,调用函数时实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同
  4. 默认值参数必须出现在函数参数列表的最右端,且任何一个默认值参数右边不能有非默认值参数。调用带有默认值参数的函数时,可以不对默认值参数进行赋值,也可以赋值。
  5. 关键参数主要指实参,即调用函数时的参数传递方式。
  6. 可变长度参数主要有两种形式:
    *parameter用来接受多个实参并将其放在一个元组中
    **parameter接受关键参数并存放到字典中
  7. 传递参数时,实参为元组,列表或字典时,可以通过在实参序列前加星号将其解包,然后传递给多个单变量形参
  8. 调用函数时如果对实参使用一个星号*进行序列解包,这么这些解包后的实参将会被当做普通位置参数对待,并且会在关键参数和使用两个星号**进行序列解包的参数之前进行处理:
    >>> demo(b=1, *(2, 3))                                   
    Traceback (most recent call last):                            
    TypeError: demo() got multiple values for argument 'b'
    >>> demo(c=1, *(2, 3))
    2 3 1
  1. 接64 :#序列解包相当于位置参数,优先处理;#序列解包不能在关键参数和两个星号**解包之后
  2. 全局变量和局部变量即使同名,也是不同的变量。在函数中更改全局变量时,原全局变量并未改变,而是在函数内创建了一个和要改变变量名字一样的变量,新创建的变量的有效范围是该函数,原全局变量未变。
  3. 一个全局变量已在函数外定义,如果在函数内需要为这个变量赋值,并要将这个赋值结果反映到函数外,可以在函数内用global声明这个变量,将其声明为全局变量。
    在函数内部直接将一个变量使用global声明为全局变量,在函数外没有声明,该函数执行后,将增加为新的全局变量。
  4. 在嵌套函数中,如果嵌套函数引用了外层函数的变量,则称之为闭包。
  5. 在内嵌函数中试图修改num1时,外部函数num1的值会被屏蔽起来,此时在内嵌函数中num1并未赋值,因此不能进行运算赋值。 解决方案:nolocal关键字
  6. 局部变量为组合数据类型且未创建,等同于全局变量。不需要global关键字
    def fun1():
    num1.append(3)
    print(‘函数内num1=’,num1) 运行结果:函数内num1= [1, 2, 3]
    num1 = [1,2] 函数外num1= [1, 2, 3]
    fun1()
    print(‘函数外num1=’,num1)
  7. 闭包中变量为组合数据类型时,不需要nolobal关键字
  8. 函数和对象是代码复用的两种主要形式
  9. random.shuffle(data) #打乱顺序
  10. 修饰器(decorator)是函数嵌套定义的另一个重要应用。其本质上也是一个函数,只不过这个函数接收其他函数作为参数并对其进行一定的改造之后返回新函数。
  11. lambda表达式可以用来声明匿名函数,也就是没有函数名字的临时使用的小函数
  12. Python中的一切内容都可以称为对象
  13. 类的所有实例方法都必须至少有一个名为self的参数,并且必须是方法的第一个形参(如果有多个形参的话),self参数代表将来要创建的对象本身。
  14. 在Python中,在类中定义实例方法时将第一个参数定义为”self”只是一个习惯,而实际上类的实例方法中第一个参数的名字是可以变化的,而不必须使用”self”这个名字,尽管如此,建议编写代码时仍以self作为方法的第一个参数名字。
  15. a.show() #在外部通过对象名调用对象方法时并不需要传递这个参数
    A.show(a) #如果在外部通过类名调用对象方法则需要显式为self参数传值。
  16. 实例的数据成员一般是指在构造函数__init__()中定义的,定义和使用时必须以self作为前缀;类的数据成员是在类中所有方法之外定义的。
  17. MethodType用来将方法绑定到类或对象
  18. (第一个参数是要绑定的方法,第二个参数是要绑定的对象,第三个参数是类名(可省略))import types,car1.setSpeed = types.MethodType(setSpeed, car1)动态增加成员方法
  19. Python类型的动态性使得我们可以动态为自定义类及其对象增加新的属性和行为,俗称混入(mixin)机制,这在大型项目开发中会非常方便和实用。
  20. 类中变量名:__xxx:私有成员,只有类对象自己能访问,子类对象不能直接访问到这个成员,避免与子类中的属性命名冲突,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。
  21. 类:使用@porperty装饰器装饰方法:只读,无法修改和删除;value = property(__get, __set):可读、可写属性,不可删除;value = property(__get, __set, __del):可读、可修改、可删除
  22. 构造函数__init__()不能有任何返回,只能返回None
  23. 把int,float,str,list,tuple这些内置函数转化为工厂函数。工厂函数看上去有点像函数,实质上它们是类,当你调用它们时,实际上是生成了该类型的一个实例
  24. 重写了__init__ 时,要继承父类的构造方法,可以使用 super 关键字:
    super(子类,self).init(参数1,参数2,…)
    还有一种经典写法:
    父类名称.init(self,参数1,参数2,…)·
  25. 文件是数据的抽象和集合
  26. 所有文件以二进制形式存储,形式上采用两种形式展示
  27. 打开文件:open(file, mode=‘r’, encoding=None)
  28. 当对文件内容操作完以后,一定要关闭文件对象,这样才能保证所做的任何修改都确实被保存到文件中。
  29. with open(filename, mode, encoding) as fp: #这里写通过文件对象fp读写文件内容的语句
  30. with open(‘sample_pickle.dat’, ‘wb’) as f:
    pickle.dump(item, f) #写入数据
    n = pickle.load(f) #读出文件的数据个数
    for i in range(n):
    x = pickle.load(f)
    print(x)
  31. os.getcwd():返回当前工作目录
  32. os.walk返回一个元组,包括3个元素:所有路径名、所有目录列表与文件列表
  33. 自定义异常类必须直接或者间接继承内置异常类Exception
  34. try-except:try子句中的代码块放置可能出现异常的语句,except子句中的代码块处理异常。
  35. try:
    try块 #被监控的语句
    except Exception[ as reason]:
    except块 #处理异常的语句
  36. try…except…else结构:如果try范围内捕获了异常,就执行except块;如果try范围内没有捕获异常,就执行else块。
  37. ry…except…finally结构
    在该结构中,finally子句中的内存无论是否发生异常都会执行,常用来做一些清理工作以释放try子句中申请的资源。
  38. 如果try子句中的异常没有被处理,或者在except子句或else子句中出现了异常,那么这些异常将会在finally子句执行完后再次抛出。
  39. 使用带有finally子句的异常处理结构时,应尽量避免在finally子句中使用return语句,否则可能会出现出乎意料的错误。
  40. Python异常处理结构中可以同时包含多个except子句、else子句和finally子句
  41. 断言语句的语法是: assert expression[, reason]
    当判断表达式expression为真时,什么都不做;如果表达式为假,则抛出异常。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值