Head First Python 1-4章学习感悟
一、学习知识总结
(1)迭代
range(起始值,结束值,步长):包含起始值,不包含结束值,步长为正数
(2)导入模块
from datetime import datetime
(3)查看帮助
dir(random) help(random.randint)
(4)4个内置的数据结构:列表、字典、元组和集合
列表:
if letter not in found:
nums=[1,2,3,4]
nums.remove(3)
nums.pop() #如果没有指定弹出哪个索引则默认弹出最后一项。也可以指定nums.pop(1)
nums.extend([5,6])
nums.insert(0,0)
nums.append(7)
nums.copy() #这是浅copy
列表的切片:letters[start:stop:step] step为正,从左往右;step为负,从右往左。如果没有指定结束值,则默认到结尾
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
字典:
字典的键必须初始化。
fruits={} #空集合是temp=set()
if 'bananas' in fruits:
fruits['bananas']+=1
else:
fruits['banana']=1
或
if 'bananas' not in fruits:
...................
或
fruits.setdefault('bananas',0)
found[letter]+=1
美化打印:ppprint.pprint(people) #people为字典类型
-------------------------------------------------------------------------------------------------------------------------------
集合:
集合是不能重复的。集合和字典的区别是字典有冒号而集合没有冒号。
vowels=set('aeiou')
union (并集) intersection(交集) difference(差集)
-------------------------------------------------------------------------------------------------------------------------------
元组:
元组是不可变数据类型。形式为(1,2,3)。另外如果只有一个元素时,应使用(1,)以表示其为一个元组
(5)函数和模块
函数定义使用def 函数名(参数名:str) ->‘html’:
return set('aeiou')
''' docstring '''
位置赋值和关键字赋值
模块:模块就是包含函数的文件。
模块主要搜索的位置有:当前工作目录;site-packages位置;标准库位置。
可以使用setuptools将模块安装到site-packages
a:在要打包的文件夹中创建一个发布文件
from setuptools import setup
setup(
name='vsearch',
py_modules=['vsearch'],
version='1.0',
description='',
author='',
author_email='',
url=''
)
b: 在要打包的文件夹中目录下通过命令把文件打包(py -3 setup.py sdist)
c: 安装site-packages
py -3 -m pip install vsearch-1.0.zip
备注:列表、字典、集合都是按引用传递总是会按引用传入函数。
字符串、整数和元组都是不可变数据类型总会按值传入函数。
(6)安装测试开发工具:
a:在windows上使用pip安装pytest: py -3 -m pip install pytest
b:使用pip安装pep8插件:py -3 -m pip install pytest-pep8
c:安装完成后,可以运行py.test这个程序来检查vsearch.py代码的pep8兼容性。确保在vsearch.py文件所在的同一个文件夹中,然后执行:
py.test --pep8 vsearch.py
二、感悟:
a: 四种数据类型:元组是C#没有的,但是C#语言的readonly和其相似。列表中的切片功能与C#中的字符串截取相似,只是python的写法更简洁。
b:模块只有安装到sitepackages后通过import导入使用,这点感觉有些麻烦。
c:重用代码是构建一个可维护系统的关键。
d:符合一定规则的代码会增加代码的可读性和美观性,减少维护难度。在python中程序员普遍遵守PEP8原则。
e:函数需要一定的注解。通过注解无需读函数内部的代码,就能知道这个函数需要接收什么类型的数据以及返回什么类型的数据。
Head First Python 1-4章学习感悟的更多相关文章
- 201671010142 2017-2 《java第十二十三章学习感悟》
Swing编程第一步,需要导入Swing相关包,即javax.swing.*. 接下里需要设置界面外观风格,使用到UIManager类. 设置完外观之后一定要调用 SwingUtilities.upd ...
- 201671010142 2017-2 《java第十二章学习感悟》
Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕 ...
- 201671010142 2017-2 《java第十一章学习感悟》
事件处理基础 事件源,事件监听器,事件监听器 监听器接口的实现,监听器对象所属类必须实现与事件源相对应的接口,即必须提供接口中方法的实现. 适配器类 当程序用户试图关闭一个框架窗口时,Jframe对 ...
- 201671010142 2017-2 《java第九章学习感悟》
一,数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. 二.几种重要 ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- 《Think Python》第17章学习笔记
目录 <Think Python>第17章学习笔记 17.1 面向对象的特性(Object-oriented features) 17.2 打印对象(Printing objects) 1 ...
- 《Think Python》第16章学习笔记
目录 <Think Python>第16章学习笔记 16.1 Time 16.2 纯函数(Pure functions) 16.3 修改器(Modifiers) 16.4 原型 vs. 方 ...
- 《Think Python》第15章学习笔记
目录 <Think Python>第15章学习笔记 15.1 程序员定义的类型(Programmer-defined types) 15.2 属性(Attributes) 15.3 矩形( ...
随机推荐
- orcal操作锦集
更新时间:update qs_settle_dt_cfg set end_date=to_date('9999-12-31','yyyy-MM-dd');查询时间:select to_char( e ...
- spring boot: 一般注入说明(五) @Component, application event事件为Bean与Bean之间通信提供了支持
spring的事件,为Bean与Bean之间通信提供了支持,当一个Bean处理完成之后,希望另一个Bean知道后做相应的事情,这时我们就让另外一个Bean监听当前Bean所发送的事件. spring的 ...
- 十五 Django框架,缓存
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- Unity3D之Mesh(七)绘制长方体
前言: 从现在开始,终于感觉进入一点点正题了!动态创建三维立体模型mesh!依然从简单入手:长方体. 一.基本思路 由于是创建长方体mesh,由之前的研究得知,两个数据必须要有,即:顶点的数据:ver ...
- 转载 解决Android与服务器交互大容量数据问题
对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题.本文根据笔者的一个项目实战经验出发,解决 ...
- SQLite优化方法
1.建表优化 SQLite的数据库本质文件读写操作,频繁操作打开和关闭是很耗时和浪费资源的: 优化方法事务机制: 这里要注意一点:事务的开启是要锁定DB的,其他对DB的写入操作都是无法成功的. db. ...
- cocos2dx & cocostudio 实现模态对话框
用cocos2dx实现模态对话框 http://www.cnblogs.com/mrblue/(转自于) ui部分使用了cocoStudio,注意这里没有实现怎么屏蔽其他的输入事件,其他的文档已经太多 ...
- luogu2627 修剪草坪
dp[i]表示1~i最大效率 记一下前缀和 转移就是f[i]=max(f[i],f[j-1]-sum[j])+sum[i] (i-k<=j<=i) 发现括号里的只与j有关 开一个单调队列维 ...
- HBase的bulkLoad
HBase的BulkLoad有两种方式: thinrow的机制是flatmap把cell的信息进行flatmap:适合少于1万列的数据集:thinrow的涵义就是少行多列: bulkload的机制则是 ...
- Django-进阶 分页,中间件
知识预览 分页 中间件 回到顶部 分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Cr ...