*跳转到文章结尾*
https://www.cnblogs.com/Asterism-2012/p/10047356.html
目录
青魔法Python-圣诞快乐
python源于圣诞节,他的创造者是Guido van Rossum(贤者-龟叔)。
- 操作系统:Windows10,Linux Ubuntu
编译器:Pycharm 2018.1.3
常用操作:
- Ctrl+W 选中词组,再次按下则选中句子
- Shift+Enter 将光标直接另起一行
- Ctrl+Shift+上/下键 将选中行上移或下移一行
- Ctrl+Y 删除光标所在行
- Ctrl+Shift+Z 反撤销
- Alt+F12 呼出terminal(终端),就是底下那个小黑框(目录默认位置为当前项目内根目录下)
- Ctrl+Alt+S 直接弹出设置窗口(setting)
- Ctrl+Shift+U 把所选词组变成大写
- Alt+左键或者右(方向键) 切换文档(子窗口)
- Ctrl+F4 关闭当前文档(子窗口)
- 快速搜索 Ctrl+W & Ctrl+F
- Ctrl+左键或者右键(方向键)跨越空格进行光标移动
在Pycharm中配置为我们的虚拟环境
先后点击:file—settings—Project-----project Interpreter用的时间长了自然就会了。
推荐书单:《python程序设计(第二版)》
- 美国标准信息交换码 ASCII
- UTF-8 “万国码” GB2312 “中文编码”
┌────────────────────────────────────────────────────────┐
│Command Prompt - python _ □ x │
├────────────────────────────────────────────────────────┤
│>>> print("Here not a world.") │
│Here not a world. │
│>>> _ │
│ │
│ │
│ by: Asterism2012 |
└────────────────────────────────────────────────────────┘
知道创宇·任务四象限
第一象限:紧急重要·赶紧搞定
第二象限:重要,不紧急·保持关注
第三象限:紧急不重要·学会拒绝
第四象限:不紧急,不重要·靠自律
——来自知道创宇技能表·受益匪浅
计算机本质:
- 根据指令操作数据的设备。
- 功能性和可编程性。
- 电子计算机、光计算机、超导计算机、量子计算机、生物计算机,这些都是不同材质的计算机。
摩尔定律:
- 英特尔创始人之一的 戈登·摩尔提出
- 单位面积集成电路上可容纳的晶体管数量,大约每两年翻一倍。
- 如果能够里用技术视角和专业精神去审视那些当代重要的预测法则,将使这些技术人才能够“借助规律预测未来”,更好地迎接每一个技术震撼带来的时代变革。
计算机的时代性总结
-
第一阶段:“计算机系统结构阶段”,由1946年开始,持续了35年,直到1981年。
- 1972年,计算需求催生了高效执行的C语言,通过指优化底层内存使用。
- 1981年,随着IBM PC为代表的个人计算机推出,计算机走向了大众视野。
-
第二阶段:“计算机网络和视窗阶段”。由1982年开始,直到2007年。持续了25年。
- 面向全球子网连接的TCP/IP网络协议为标志,互联网时代到来。
- 计算机围绕网络技术、视窗技术、多媒体技术发展,个人计算机和服务器为主要平台,提供视窗应用和网络服务。
- 由于网络将不同类型系统互联,催生了具备跨平台功能的语言JAVA。
- 视窗应用开发需求催生了VC、VB等视窗编程语言。
- 2007年,美国iphone智能手机推出,计算机技术进入了面向移动网络应用的新阶段。
-
第三阶段:“复杂信息系统阶段”,这个阶段由2008年发展至今。
- Andriod开源移动操作系统发布为起点,一大批新的概念和技术同时提出并且显著推动了计算技术的更新换代。
- 包括移动互联网、多核众核、云计算、大数据、可穿戴计算、物联网、互联网加等等。
- 反映了平台与应用的多样性,也带来了更复杂的安全问题。所有的技术与系统都在不断完善的过程中提供更安全可靠、用户体验更好的功能服务。
- 人类会逐渐认识到计算机复杂性会达到人类能掌控的边界。
- 面对复杂的功能性和紧迫的迭代周期,计算机需要更高抽象级别的语言来表达可编程性。(2008年Python3版本,已经成为了这个时代的主流编程语言。)
-
第四阶段:约2035年左右,步入“人工智能阶段”:
- 随着深度学习、开源硬件、智能机器人、在线搜索引擎、量子计算等计算的逐步发展,未来某个时期会出现人工只能主导的计算的技术阶段。
- 计算机或许已经没有了独立的载体,它整合一切可用自然资源,接管人类所有非创造性工作。计算机技术将会进入一个未知的新阶段。
- 计算机功能性和可编程性的发展存在相互促进的关系,计算机长在借助人类智慧不断“进化”。
-
问题:
- 计算机的定义是什么?它有哪两个显著特点?
- 请调研并阐述不少于三个计算机领域中类似摩尔定律的预测法则或评估法则。
- 请列出并阐述不少于五个近十年出现的计算机技术名词。
通用编程语言与专用编程语言
- 机器语言>汇编语言>高级语言
- 尽管科学家做出过很多努力,仍然无法再可预见的未来设计出能完全理解人类语言的计算机。
- 一般来说,通用编程语言比专用编程语言生命力更强。应用范围狭窄的则相反。
- Python、C/C++、C#、Go、Java是通用编程语言;
解释与编译:静态语言与动态语言
Python是一种计算机编程语言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能有歧义,所以,任何一种编程语言都有自己的一套语法,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。——廖雪峰
- 静态语言和动态语言各有优缺
- 解释:是将源代码转换成目标代码的同时逐条执行目标代码的过程,速度相较慢。在意解释速度,解释速度和运行速度是相互作用的。
- 编译:将源代码转换成目标代码的过程,可以立即或稍后运行目标代码。不在意编译速度,而在于运行速度。交互运行与文件运行。
- 编译只用执行一次,而解释每次都需要源代码执行。区别相当于翻译资料与同声传译。
- 编译的好处:
- 同等代码,代码执行更快
- 已生成了的目标代码不依赖编译器,在同类型操作系统上使用灵活。
- 代表性语言:C语言,Java语言
- 解释的好处:
- 解释执行需要保留源代码,程序纠错和维护十分方便。
- 只要存在编译器,源代码的移植性很好,可以在任何操作系统上运行。
- 代表性语言:Javascript,PHP,Python
编程
- 编程的目的是:“使用计算机解决问题”。
- 编程训练思维,增进认识
- 带来乐趣,提高效率
- 带来就业机会,程序员是信息时代最重要的岗位之一。
- 计算思维:是区别于以数学为代表的逻辑思维,和物理为代表的证实思维的第三种思维方式。体现了一种抽象交互方式,形式化方法执行的思维模式。
- Python是一个开源语言,其解释器也是开源的,在Python主网站(www.python.org)可以自由下载。
- “Python2已经是遗产,Python3才是现在和未来。”
- 问题:
- CPU可以直接理解什么样的程序设计语言?
- 阐述解释和执行的区别与优缺点。
- 列出三个学习编程的理由。
Python的特点
- 粘性扩展:通过语法扩展接口,可以整合多种编程语言。
- 强制缩进:显著提高了程序的可读性。
- 库类丰富:是真的丰富。
- 跨平台:动态语言都是跨平台的。
- 语法简介:几乎是最简洁的
- 应用广泛:这个是真的广泛。
- 编码支持中文:默认以UTF-8的形式编码
集成开发环境
- Python解释器是一个轻量级小尺寸软件,可以在Python语言主网站下载(大约20~35M).
- IDLE(自带的集成开发环境):在开始菜单中搜索即可。(小规模)
- Notepad++:第三方开源记事本增强工具,反正我不用。(小规模)
- sublime:轻量级,全能型集成开发工具。(大小规模)
- Pycharm:这个是全宇宙最强的PythonIDE.(中大规模)
著名的IPO编程方式
- IPO就是(Input-Process-Output):这几乎是统一的基本程序编写方法。更是描述计算问题的方式。
- 输入:
- 文件输入
- 网络输入
- 控制台输入
- 交互界面输入
- 随即数据输入
- 内部参数输入
- 输出:
- 控制台输出
- 图形输出
- 文件输出
- 网络输出
- 操作系统内部变量输出
- 处理:(Process):它是程序的灵魂部分,计算问题的处理方法统称为“算法”
- 无输入输出的程序:辅助测试CPU系统性能
定义空字典、空集合、空列表
>>>dic1 = dict()
>>>set1 = set()
>>>lis1 = list()
查看一下类型
>>> type(dic1)
<class 'dict'>
>>> type(lis1)
<class 'list'>
>>> type(set1)
<class 'set'>
代码注释方式
代码注释在每一个高级语言中都存在,用于用我们人的语言来为我们写的代码进行标注,提高我们代码的可读性,从而提高我们协同工作的效率,以及降低我们的维护代码的时间成本。
- 单行注释 (
#
号):
# 我是一段注释,我写的代码意思是这样的
- 多行注释 (
''' '''
三引号):
'''我是多行注释,我是可以换行显示的,
你看,我换行了'''
值得一提的是:多行注释不能放在在列表、集合、字典中:
dic1 = {
│ lis1 = [ │set1 = {
'''Student dict''' │ '''New List''' │ '''New set'''
'name':'Tom', │ 1, │ 1,
'age':'18' # No │ 2 # No │ 2, # No
} │] │}
上面这种写法都是错误的。在容器类型的数据类型中,三引号囊括起来的内容会被视为字符串。
但是单行注释是被允许的:
set1 = [
# New set
1,2
]
像这样写是可以的,可以自己打印这些变量尝试一下。
别名
-
给导入的标准包起名
from lxml import etree as e
格式化输出format
- 对字符串的办法,等待更新中
- 图灵测试是人工智能(AI)领域中的重要概念,用于评判机器是否具有人的智能。
引用计数(内存管理)
- Python中没有真正意义上的赋值,也没有指针概念,但是引用计数却是类似指针的概念,系统会自行判断。
- 但是当a = 1;b = 1时,1这个数据所在的内存地址的引用计数为2,名为a,b。但我们del b时,1这个数据的引用计数为1,名为a。
容器数据类型
- 列表与元祖:元祖比列表更快,而且元祖更冷门
关于编码
- 看看廖雪峰老师讲的,非常的透彻易懂。(https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000)
Python列表的拆解
- join函数将列表元素连接,拆解为字符串
list = ["M","i","s","s"]
Python 面向对象编程-函数
函数名的本质
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
- max() 函数
max函数max()可以接收任意多个参数,并返回最大的那个:
>>> max(1, 2)
2
>>> max(2, 3, 1, -5)
3
Python 面向对象编程-类
- 正在更新中
Python local()函数用法
- 不作为返回值时候,会自动收集当前作用于内所有局部变量,保存为一个字典。作为返回值时,将函数作用域内所有局部变量以字典形式返回,注意不是键值对。
- 它的兄弟是globals(),法力无限,收集全局变量。
可变字符串与有序字典
- 正在更新中
Python range() 函数用法
- 在python2中,range函数被视为一个列表类型的对象(整数列表)。它会直接输出一个列表,通过更改参数来更改列表的值。
- 它拥有三个参数,依次分别是start(开始),stop(结束),step(步长)
range(start,stop,step)
- 参数说明:
start:计数从start开始,默认为0.
stop:计数到stop结束,但不包括stop。
step:计数跨度,默认为1。
-
指定一个参数
range(8)
[0, 1, 2, 3, 4, 5, 6, 7] -
指定两个参数
range(1,15)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] -
指定三个参数
range(1,100,20)
[1, 21, 41, 61, 81] -
支持负参数(越来越小)
range(-10,-20,-1)
[-10, -11, -12, -13, -14, -15, -16, -17, -18, -19] -
倒序
range(100,19,-5)
[100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20] -
指定参数0
range(0)
[] -
不指定参数
range()
Traceback (most recent call last):
File “”, line 1, in
TypeError: range expected at least 1 arguments, got 0
在python3中
-
range()被视为一个range类型(范围)的对象,使用type()函数则会看到
type(range(0))
<class ‘range’> -
使用help()函数则会看到
Help on class range in module builtins:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object -
在Python3中进行操作,不会返回列表,而是范围对象的内容。
range(0)
range(0, 0)range(-10,-20,-1)
range(-10, -20, -1)range(1)
range(0, 1)range(10,100,20)
range(10, 100, 20)
Python深入正则表达式:re模块
- 正则表达式是处理字符串非常强大的工具,拥有自己的语法结构
- 对字符串操作的一种逻辑公式,用来表达对字符串的一种过滤逻辑。
- 并非Python独有,由re模块实现
- 以括号来表示表达式或者来分组
- 回头把表格更新出来,字符串
match函数:
- re.match()
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回Nonere.match(正则表达式)
search()函数:
- re.search()
扫描整个字符串、返回第一个匹配到的内容
findall()函数
- re.findall()
扫描整个字符串,以列表形式返回所有匹配目标(分组),可以理解为一个大的group()
sub()函数
- re.sub() 也可以称作sub方法 : 用于替换字符串中的指定内容
# 普通替换
>>>result = re.sub("d+","Hi",'123 world')
>>>result
Hi world
'''进阶替换(插入)
包含源字符串本身的内容 规定原生(字符串)的r与Back slash slash(“\”)转义来保证字符串的正确性'''
>>>result = re.sub("(\d+)",r"\1 123","456")
>>>result
456 123
result.group(x) #获取正则表达式中第x个括号中的字符串内容
>>>result = re.match('.*(\d+)',"a123")
>>>result.group(1)
a12
>>>result = re.match('.*(\d+)',"a123")
>>>result.group(1)
a
- 匹配尽可能少的字符
-
匹配模式
- re.S 匹配包括换行符在内的所有字符
- 相关概念有常规匹配、泛匹配、匹配目标、贪婪匹配、非贪婪匹配等
-
转义
- 转义符号 “\” : 正则表达式识别不了大多数的特殊符号,所以我们需要把Back slash(反斜杠)来将它转义。
re.match('Hello \$world.','Hello $world.')
- 正则的空白字符\s
数学模块
- 正在更新中
生成式与生成器
深入理解Python生成器(Generator)
- 在Python中,这种一边循环一边计算的机制,称为生成器(Generator)
- 生成器的语法和列表生成式的语法非常相似,几乎让我低估它
- 值得一提的是,它与列表生成式有极大的不同——它具有很多内建方法
- 创建方法的说明:
通过生成式生成
通过函数生成
-
通过生成式生成
generator = (i for i in range(10))
python2.x中
- 使用类型检查、直接打印、以及帮助帮助信息
- python2.7与python3.5的版本没有区别
类型检查type()
>>> type(generator)
<class 'generator'>
直接打印
>>> generator
<generator object <genexpr> at 0x000002962143B938>
帮助信息
Help on generator object:
<genexpr> = class generator(object)
'''
译文:生成器的帮助信息:
'''
列表生成式
- 也可以叫做列表推导式,帮我们快速生成包含一堆数据的列表
>>>datelis = ["10月{}日".format for