Python核心编程---读书笔记:第1章~第3章

所读的内容来源《Python核心编程》一书,以下是自己读书一些笔记。如有侵权,还请指出,会删除该博文。


Python核心编程

第一章 欢迎来到python世界

python特点:可移植性(C写的),内存管理由python解释器负责,无需编译(字节码解释器)

Windows环境:PythonWin是Python的windows解耦

Jython是Java开发的Python解释器,有Java虚拟机就能运行Jython,可访问Java包

 

第二章Python起步

_  :最后一个表达式的值

%s :实现字符串替换

%f:浮点数,%d

>> :重定向输出

 

def raw_input_test():
    #user = raw_input("Enter name:") 现在input取代了raw_input
   
user = input("Entername:")
    print("user : %s"% (user))

 

2.4运算符

/ /:整数除法

/ :浮点数除法

** :乘方

 

def operator_test():
    # / 浮点数除法, /整数除法, **乘方
    a = 5 / 3
    b = 5 // 3
    c = 2**3
    print("a: %f , b: %d , c: %d" % (a, b , c))

 

2.6 数字

5种基本数字类型:3中是整数

int,long,bool,float,complex(复数)

长整数类似Java中BigInteger

True如果与另一个数字相加,会被当成整数值1

decimal:十进制浮点数,非内建类型,需要导入

 

2.7字符串

单引号,双引号,三引号(三个连续的单引号可包含特殊字符)

第一个索引是0,最后一个字符索引是-1

 

2.8列表和元组

[0:3],等同于[0,3)

元组=只读列表

 

2.9字典

dict: 实际是哈希表实现,键值对出纳处

 

2.10代码块缩进对齐

无大括号,使用缩进

 

2.11 if语句

if expr:

         if_suite

 

2.12 while循环

while expr:

         while_suite

 

2.13 for循环和range()内建函数

for接受可迭代对象

range函数用于数组中元素遍历: for i inrange(len(nums))

如果也要循环索引,用enumerate

 

def enumerate_test():
    nums = range(10,15)
    for index ,  num in enumerate(nums):
        print("index: %d , element: %d" % (index , num) )

 

2.14列表解析

使用for循环将所有值放到一个列表中

例如:挑选出偶数(even)的平方

evenNums = [x ** 2 for x in range(8) if notx % 2]

 

2.15 文件和内建函数open(),file()

myfile = open(file_name , access_mode = ‘r’)

‘r’:读取,’w’:写入,’a’:添加

读取成功,返回文件句柄

myfile.readlines()

myfile.close()

 

属性:与数据有关的项目,类,模块。

 

2.16 错误和异常

try:

 ….

except:

 ….

 

 

2.17函数

函数用()调用,无return 返回None对象

函数通过引用调用,参数该百年会影响原始对象。

 

 

2.18类

class ClassName(base_calss[es]):

         静态成员声明

         方法声明

如果没有合适基类,用object。

class之后可以声明静态成员,比如

class Test(object)”

         version= 0.1

__init__():类似C++构造函数

self:类实例自身的引用,等同于C++中的this

 

2.19模块

将有关系的代码组织到独立文件中

模块名不带.py,通过import导入

import module_name

 

2.20使用的函数

内建函数:在__builtins__里面,在global里面直接能用

dir([obj]):显示对象属性,其所有成员变量和方法

 

class Person(object):
    def __init__(self , name , age):
        self._name = name
        self._age = age

    def show(self):
        print(self._name)

def builtFunctions_test():
    nums = range(10)
    person = Person("chen" , 28)
    print(dir(person)) #dir返回对象的成员变量和方法
    print(type(person)) # type返回对象的类型,比如返回是一个类

 

 

第3章 Python基础

3.1语句和语法

\ 表示继续上一行

; 将两个语句连在一行中

 

3.2变量赋值

采用”=”是将对象引用赋值给变量

增量赋值 : x += 1,不支持x++这种

多重赋值:x = y = 1

多元赋值:将多个变量同时赋值

x,y,z = 1,2,’a string’

(x,y,z) = (1,2,3)

 

 

3.3标识符

合法标识符:第一个字符是字母或下划线

关键字:iskeyword()设置keyword模块以便查询

内建:build-in是__builtins__模块成员

_xxx:不用from module import* 倒入

__xxx__:系统定义名字

__xxx:类中的私有变量名

避免用下划线作为变量名开始

 

主程序调用main()函数: 检查__name__变量的值热案后执行调用

__name__指示模块加载

__name__的值为模块名字:模块被导入

__name__的值为__main__:模块会被执行

 

可以将测试代码放入到main()中

Pyunit是测试框架

 

3.5内存管理

del语句能够直接释放资源

变量定义

动态类型:对象类型和内存是运行时确定,解释型语言

内存分配:python解释器进行内存管理

引用计数:会记录使用的对象有多少引用,有引用计数器,计数为0,被回收

增加引用计数:初始时,对象被创建,计数为1;然后每次赋值,引用计数加1

比如

x=1

y=x

会有两个引用指向同一个对象。

引用计数累加在:赋值,传参,成为容器元素

1】赋值引用计数:x=1

2】作为函数参数传递也会引用计数如:test(x)

3】成为容器对象中的元素也会引用计数mylist= [123,x]

 

引用计数减少在:

1本地引用离开作用域,2被删除(del x),

3对象别名被重新赋值(x=1;x=2);4对象被从容器(数组)中删除(nums.remove(x));

5容器(数组)本身被删除(delnums)

 

删除

def del_test():
    x = 1
    y = 1
    del y
    print(x)

 

3.5.5垃圾收集

垃圾收集器释放内存,是独立代码。

寻找引用计数为0的对象和计数大于0,但是需要被销毁的对象

解决:互相引用

3.6 相关模块和开发工具

degugger: pdb,允许设置断点,支持调试

logger: logging,调试,信息,警告,错误,,紧急

profile,hotshot:性能测试模块

 

 


你可能感兴趣的:(python)