转自本人旧博客
title: python
date: 2018-01-10 14:32:06
tags:
categories:
python核心
1. python基础
查漏补缺:
数字:
- python长整型仅受限于用户计算机的虚拟内存总数
- 第六种数字类型:decimal,用于十进制浮点数。不是內建类型,得先导入decimal模块
字符串
- 索引操作费([])和切片操作符([:])
列表、元祖
- 元祖不可修改,可看成是只读的列表
range() 、 enumerate()
- range()函数常和len()函数一起用于字符串索引
- enumerate()
for 索引, 元素 in enumerate(‘abcdef’):
文件:open()、file()
- open(filename, access_mode=‘r’)
- 默认是’r’
- 对于很大文件,最好一次读一行
- 文件中每行文本自带转行字符
类
- 类是面向对象编程的核心,扮演相关数据及逻辑容器的角色
- 当一个类实例被创建时, init()方法会自动执行,在类实例创建完毕后执行,类似构造器。
- self:是类实例自身的引用
模块
变量赋值
- 是将该对象的引用(并不是值)赋值给变量
标识符
- 是计算机语言中允许作为名字的有效字符串集合。
- 其中有一部分是关键字,构成语言的标识符
- 规则:
- 首字符:字母或下划线
- 其他字符:字母、下划线、数字
- 大小写敏感
- 专用下划线标识符
- _xxx_ 系统定义名字
- _xxx 类中的私有变量名
模块构造和布局
- 尽量用局部变量代替全局变量
测试代码
- unittest模块,有时候被称为PyUnit,是一个测试框架
内存管理
- 一个对象引用计数减少的情况:
- 一个本地引用离开了其作用范围
- 对象的别名被显式销毁:del y # or del x
- 对象的一个别名被赋值给其他对象
- 对象被从一个窗口对象中移除: myList.remove(x)
- 窗口对象本身被销毁: del myList
- 任何追踪或调试程序会给一个对象增加一个额外的引用,这会推迟对象被回收的时间。
- 在函数中频繁使用一个属性,建议为该属性取一个本地变量别名。查找速度回快很多
- 在查找全局变量前,总是先查找本地变量,是让程序跑更快的技巧
2. python对象
- 所有类型对象的类型都是type
- 帧对象:表示python的执行栈帧
- 在预定义缓存字符串表之外的字符串,如果不再有任何引用指向它,那这个字符串将不会被缓存
标准类型內建函数
-
type()
-
cmp()
- 用于比较两个对象。obj1 < obj2,返回负整型;obj1 > obj2,返回正整型;obj1 = obj2,返回0
- python3没有
-
str()、repr()(及``反引号操作符)
- rept()输出对python比较友好,str()输出对用户比较友好
-
type()和isinstance()
- isinstance()判断对象类型,(
isinstance(a, str)
标准类型的分类
- 基本: python提供的标准或核心类型
- 內建: python默认提供的
- 数据: 用于一般数据存储
- 对象: 是数据和功能的默认抽象
- 原始: 这些类型提供的是最底层的粒度数据存储
- 类型: 是数据类型
3. 数字
复数
- 复数的內建属性
- 复数的实部 num.real
- 虚部: num.imag
- 共轭复数: num.conjugate()
操作符
序列
cmp
- python3中由operator.eq()函数代替
其它
1. “_” 、 “_ _” 和 ‘_ _XX_ _’
1)"_" :
- python中不存在真正意义上的私有方法或属性,"_"只表示你不应该去访问这个方法或属性
2)"_ _"
- 避免子类覆盖父类
3)"_ _XX_ _"
- 魔法函数
- 表示这是python自己调用的。
2. 发布第三方包时,限制外部调用接口,_ _init_ _ .py中加_ _all_ _属性
from base import APIBase
...
__all__ = ['APIBase', ...]
3. 字符串格式化
>>>name = 'yq'
>>>"my name is {name}".format(name=name)
'my name is yq'