主要涉及的知识点如下数据类型应用学会如何灵活准确地应用数据类型让数据为我所用。循环逻辑应用在所有计算机语言程序设计中读者都需要具备常量变量等基础知识及使用表达式比较各种值的能力。迭代器生成器应用学会访问集合元素及实现延迟计算。装饰器应用学会如何对已经存在的对象完成额外功能的添加。面向对象应用编写出更好的程序。多线程多进程应用如何提高代码的执行效率。一.数据类型实战实例1.字符串格式符问题首先来了解什么是字符串。在python中字符串是一个不可变的对象类型即所有修改和生成字符串的操作都是调用另一个内存片段中新生成的字符串对象实现的。在Python中如果需要实现格式化操作直接使用%即可。示例1存在一个变量number 1如果需要输出格式001应如何实现number 1 print(%03d%number)如果需要格式化字符串输出则需要使用%d可以通过使用03d表示输出3位数值型如果真实数值只有1位则会在高位自动补0输出所以结果可以得到001。示例2存在一个变量number11.222222如果需要保留两位小数如何实现number 1.222222 print(%.2f%number)小数的格式化输出需要使用%f保留两位小数表示%0.2f。示例3存在一个变量number21,如果需要输出“%d1”应如何实现number2 1 print(%%d%d%number2)需要输出“%d”字符串在字符串格式化输出中%d表示整型占位符如果需要以字符串的形式输出则需要在%d前面添加%进行转义。2. 字符串驻留机制问题在Python中会出现字符串驻留(intern)的情况这是由于CPython的优化产生的即在某些情况下尝试使用现有的不可变对象而不是每次创建一个新对象这些驻留的对象在内部使用类似字典的结构(驻留池)进行驻留。在被驻留之后许多变量可能指向内存中的相同字符串对象从而节省内存。简单来说字符串驻留表示一种方法能够实现仅仅存储一份相同而又不可变的字符串。2.1 基本原理系统会维护一个interned字典类型用于记录已经被驻留的字符串对象。在使用过程中如果字符串对象a需要驻留那么会在interned字典类型中检测其是否存在若存在则指向存在的字符串对象a引用计数减1若不存在则记录a到interned字典中。(1) 字符串编译时驻留非运行不驻留。str1 helloworld print(str1 is helloworld) str2 hello str3 world print(str2str3 is helloworld)(2) 如果字符串长度等于0或1则默认实现驻留。(3) 如果字符串长度大于1且只包含字母数字下划线时则默认实现驻留。(4) 字符串由intern模块指定驻留。3.字典键值对互换字典是Python中的一种常用数据结构用于存放具有映射关系的数据。定义语法变量名 {key1:value,key2:value2,...}3.1 键名定义要求键名必须是可哈希的类型(如元组字符串数值型.....)不可哈希的类型(如列表字典)无法定义实际也是对应着可变对象(不可哈希)和不可变对象(可哈希)。(1)可变对象listdictset。3.2 键名重名问题在声明或者更新字典时如果键名重复则后续的键值对会覆盖前面的键值对。3.3 字典键值对互换问题dict1 {username:zhangsan,password:123456} d1 {value:key for key,value in dict1.items()} print(d1)先使用for循环完成字典dict1的键值对获取然后结合字典推导式即可实现要求。将一个数据序列结构构建成另一个新的数据序列结构的过程称为推导式又可以叫解析式这也是Python语言中一种独特的特性。下面列举三种推导式对应的语法。(1) 列表(list)推导式[expression(i) for i in old_list if condition(i)](2) 字典(dict)推导式{key:value for key:value in iterable}(3)集合(set)推导式{value for value in iterable}4.使用字典表示字符串统计结果str2 hello world result {} for i in str2: result[i] str2.count(i) print(result)
Python 实例驱动(1.1)
主要涉及的知识点如下数据类型应用学会如何灵活准确地应用数据类型让数据为我所用。循环逻辑应用在所有计算机语言程序设计中读者都需要具备常量变量等基础知识及使用表达式比较各种值的能力。迭代器生成器应用学会访问集合元素及实现延迟计算。装饰器应用学会如何对已经存在的对象完成额外功能的添加。面向对象应用编写出更好的程序。多线程多进程应用如何提高代码的执行效率。一.数据类型实战实例1.字符串格式符问题首先来了解什么是字符串。在python中字符串是一个不可变的对象类型即所有修改和生成字符串的操作都是调用另一个内存片段中新生成的字符串对象实现的。在Python中如果需要实现格式化操作直接使用%即可。示例1存在一个变量number 1如果需要输出格式001应如何实现number 1 print(%03d%number)如果需要格式化字符串输出则需要使用%d可以通过使用03d表示输出3位数值型如果真实数值只有1位则会在高位自动补0输出所以结果可以得到001。示例2存在一个变量number11.222222如果需要保留两位小数如何实现number 1.222222 print(%.2f%number)小数的格式化输出需要使用%f保留两位小数表示%0.2f。示例3存在一个变量number21,如果需要输出“%d1”应如何实现number2 1 print(%%d%d%number2)需要输出“%d”字符串在字符串格式化输出中%d表示整型占位符如果需要以字符串的形式输出则需要在%d前面添加%进行转义。2. 字符串驻留机制问题在Python中会出现字符串驻留(intern)的情况这是由于CPython的优化产生的即在某些情况下尝试使用现有的不可变对象而不是每次创建一个新对象这些驻留的对象在内部使用类似字典的结构(驻留池)进行驻留。在被驻留之后许多变量可能指向内存中的相同字符串对象从而节省内存。简单来说字符串驻留表示一种方法能够实现仅仅存储一份相同而又不可变的字符串。2.1 基本原理系统会维护一个interned字典类型用于记录已经被驻留的字符串对象。在使用过程中如果字符串对象a需要驻留那么会在interned字典类型中检测其是否存在若存在则指向存在的字符串对象a引用计数减1若不存在则记录a到interned字典中。(1) 字符串编译时驻留非运行不驻留。str1 helloworld print(str1 is helloworld) str2 hello str3 world print(str2str3 is helloworld)(2) 如果字符串长度等于0或1则默认实现驻留。(3) 如果字符串长度大于1且只包含字母数字下划线时则默认实现驻留。(4) 字符串由intern模块指定驻留。3.字典键值对互换字典是Python中的一种常用数据结构用于存放具有映射关系的数据。定义语法变量名 {key1:value,key2:value2,...}3.1 键名定义要求键名必须是可哈希的类型(如元组字符串数值型.....)不可哈希的类型(如列表字典)无法定义实际也是对应着可变对象(不可哈希)和不可变对象(可哈希)。(1)可变对象listdictset。3.2 键名重名问题在声明或者更新字典时如果键名重复则后续的键值对会覆盖前面的键值对。3.3 字典键值对互换问题dict1 {username:zhangsan,password:123456} d1 {value:key for key,value in dict1.items()} print(d1)先使用for循环完成字典dict1的键值对获取然后结合字典推导式即可实现要求。将一个数据序列结构构建成另一个新的数据序列结构的过程称为推导式又可以叫解析式这也是Python语言中一种独特的特性。下面列举三种推导式对应的语法。(1) 列表(list)推导式[expression(i) for i in old_list if condition(i)](2) 字典(dict)推导式{key:value for key:value in iterable}(3)集合(set)推导式{value for value in iterable}4.使用字典表示字符串统计结果str2 hello world result {} for i in str2: result[i] str2.count(i) print(result)