python入门到精通
Posted XS_Harry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门到精通相关的知识,希望对你有一定的参考价值。
1.python基础知识
1.0 计算机组成原理和python基础知识
一,计算机基础
1、计算机硬件组成
1.1 一个程序的运行与三大核心硬件(cpu、内存、硬盘)的关系 (*****)
2、操作系统
2.1 计算机体系的三层结构 (*****)
2.2 平台与跨平台的概念 (*****)
3、扫盲(***)
cpu相关(x86-64代表的意义)
存储器相关(IO问题)
操作系统启动流程
1.1 计算机组成原理
二,计算机组成
1. 什么是计算机
计算机俗称“电脑”,包含人对计算机的终极期望,能够真的像人脑一样去工作
计算机(computer)俗称电脑,是现代一种用于高速计算的电子机器,可以进行数值计算,又可以进行逻辑判断,还具有存储记忆功能,且能够按照程序的运行,自动、高速处理数据,通俗理解就是一个存储和计算数据的电子设备。
计算机是20世纪最先进的科学技术发明之一。
2、为何要有计算机
为了执行人类的程序,从而把人类解放出来
大前提:计算机所有的组成都是模仿人的某一功能或器官
3、计算机的组成
计算机是由什么组成
一个完整的计算机系统,是由硬件系统和软件系统两大部分组成的。
3-1. 硬件系统:
主要分为主机和外设两部分,是指那些构成计算机系统的物理实体,它们主要由各种各样的电子器件和机电装置组成。
运算器: 负责数据的算术运算和逻辑运算,即数据的加工处理。
控制器: 是整个计算机的中枢神经,分析程序规定的控制信息,并根据程序要求进行控制,协调计算机各部分组件工作及内存与外设的访问等。
运算器和控制器统称中央处理器(即CPU)
存储器: 实现记忆功能的部件,用来存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
输入设备: 实现将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。
输出设备: 实现将计算机处理后生成的中间结果或最后结果(各种数据符号及文字或各种控制信号等信息)输出出来。
控制器:
作用:是计算机的指挥系统,负责控制计算机所有其他组件如何工作的
类比:控制器=》人类的大脑
运算器:
作用:运算包括数学运算与逻辑运算
类比:运算=》人类的大脑
控制器+运算器=》cpu===》人类的大脑
存储器/IO设备
作用:是计算机的记忆功能,负责数据的存取
分类:
内存(基于电工作):存取数据都快,断电数据丢失,只能临时存取数据
外存(硬盘,基于磁工作):存取速度都慢,断电数据也不丢,可以永久保存数据
类比:
内存===》人类的大脑的记忆功能
外存===》人的笔记本
输入设备input
如键盘、鼠标
输出设备output
如显示器、打印机
3-2. 软件系统:
主要分为系统软件和应用软件,是指计算机运行所需的各种各样的计算机程序。
系统软件的任务是既要保证计算机硬件的正常工作,又要使计算机硬件的性能得到充分发挥,并且为计算机用户提供一个比较直观、方便和友好的使用界面。
操作系统:是一种方便用户管理和控制计算机软硬件资源的系统软件,同时也是一个大型的软件系统,其功能复杂,体系庞大,在整个计算机系统中具有承上启下的地位。我们操作计算机实际上是通过操作系统来进行的,它是所有软件的基础和核心。
语言处理程序:也称为编译程序,作用是把程序员用某种编程语言(如Python)所编写的程序,翻译成计算机可执行的机器语言。机器语言也被称为机器码,是可以通过CPU进行分析和执行的指令集。
4、一个程序的运行与三大核心硬件的关系
人--------------编程语言------------->计算机
程序如下:
1、去包子店
2、付钱
3、把包子送回来
总结:
程序最先是存放于硬盘之上
程序的运行一定事先把程序的代码加载到内存
然后cpu从内存中读取指令执行
计算机是如何处理程序的?
1.用户打开程序,程序开始执行;
2.操作系统将程序内容和相关数据送入计算机的内存;
3.CPU根据程序内容从内存中读取指令;
4.CPU分析、处理指令,并为取下一条指令做准备;
5.取下一条指令并分析、处理,如此重复操作,直至执行完程序中全部指令,6.最后将计算的结果放入指令指定的存储器地址中。
编程语言是什么?
是用来定义 计算机程序 的形式语言。我们通过编程语言来编写程序代码,再通过语言处理程序执行向计算机发送指令,让计算机完成对应的工作。
简单来说,编程语言就是人类和计算机进行交流的语言。
操作系统
1、引入
用户/应用程序(暴风影音、腾讯qq、快播、哇嘎)
操作系统:控制程序(windows、linux)
p计算机硬件
2、操作系统概念
操作系统是一个协调、管理、控制计算机硬件资源与应用软件资源的一个控制程序
作用:
1、控制计算机硬件的基本运行
2、把使用硬件的复杂操作封装成简单的功能,给上层的应用程序使用
例如:文件就是操作系统提供给应用程序/用户操作硬盘的一种功能
3、程序的区分
计算机硬件是死的,计算机硬件的运行都受软件控制,所以说,软件相当于计算机的灵魂
具体来说软件分为两种:
1、应用软件:应用程序相关逻辑
2、系统软件:控制底层硬件的
4、计算机系统三层结构
应用程序
操作系统
计算机硬件
5、平台
计算机硬件+操作系统=》平台
软件的跨平台性指的是:一款软件可以任意平台上运行,是衡量软件质量高低的一个非常重要的指标
1、我们为何将内存称之为主存
计算机的内部存储器又称为主存储器,一般简称为内存。
2、x86-64代表的含义?简述cpu的向下兼容性
X86和X64都是PC处理器,
向下兼容(downward compatibility),又称向后兼容(backward compatibility)、回溯兼容,在计算机中指在一个程序和/或库更新到较新版本后,用旧版本程序创建的文档或系统仍能被正常操作或使用(包括写入),或在旧版本库的基础上开发的程序仍能正常编译运行的情况。
在文件系统中,ext4文件系统的设计就是向后兼容的,ext3的文件系统可以被当作ext4文件系统挂载。
1.2 编程语言和python
1、Python发展背景
1989年,为了打发圣诞节假期,龟叔开始写Python语言的编译器。Python这个名字,来自龟叔所挚爱的电视剧Monty Python's Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。
2、Python语言的诞生
1.1991年,第一个Python编译器诞生。
2.Python语法很多来自C,但又受到ABC语言的强烈影响。
3.Python从一开始就特别在意可拓展性。
4.最初的Python完全由龟叔本人开发。
5.计算机硬件越来越强大,Python又容易使用,所以许多人开始转向Python。
6.Python以及其标准库的功能强大。这些是整个社区的贡献。
7.到今天,Python的框架已经确立。Python语言以对象为核心组织代码,支持多种编程范式,采用动态类型,自动进行内存回收。Python支持解释运行,并能调用C库进行拓展。Python有强大的标准库。由于标准库的体系已经稳定,所以Python的生态系统开始拓展到第三方包。这些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,将Python升级成了物种丰富的热带雨林。
8.Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
9.在Python的开发过程中,社区起到了重要的作用。
10.Python从其他语言中学到了很多,无论是已经进入历史的ABC,还是依然在使用的C和Perl,以及许多没有列出的其他 语言。
3、关键点常识
Python的发音与拼写
Python的作者是Guido van Rossum(龟叔)
Python正式诞生于1991年
Python的解释器如今有多个语言实现,我们常用的是CPython(官方版本的C语言实现),其他还有Jython(可以运行在Java平台)、IronPython(可以运行在.NET和Mono平台)、PyPy(Python实现的,支持JIT即时编译)
Python目前有两个版本,Python2和Python3
Life is shot, you need Python. 人生苦短,我用Python。
4、python优缺点
优点:
简单、易学、免费、开源、高层语言、可移植性、解释型语言、Python既支持面向过程的编程也支持面向对象的编程。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。可扩展性强、丰富的库、Python标准库确实很庞大。规范的代码、Python采用强制缩进的方式使得代码具有极佳的可读性。
缺点:
Python语言非常完善,没有明显的短板和缺点,唯一的缺点就是执行效率慢,这个是解释型语言所通有的,同时这个缺点也将被计算机越来越强大的性能所弥补。
python 是一门编程语言
什么是编程语言?什么语言?为什么要有编程语言?
编程语言的本质就是一门语言
语言就是一种事物与另外一种事物沟通的表达方式/工具
人--------------人类的语言------------>奴隶
人--------------编程语言------------->计算机
什么编程?为什么要编程?
编程就是人把自己想计算机做的事,也就是自己的思维逻辑,用编程语言表达出来
编程的目的就是让计算机按照人类的思维逻辑去工作,从而解放人力
应用场景
Web应用开发,操作系统管理、服务器运维的自动化脚本,网络爬虫,Python有大量的HTTP请求处理库和html解析库,并且有成熟高效的爬虫框架Scrapy和分布式解决方案scrapy-redis,在爬虫的应用方面非常广泛。,科学计算,NumPy、SciPy、Pandas、Matplotlib可以让Python程序员编写科学计算程序。桌面软件,PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器.服务器软件(网络软件),游戏,构思实现,产品早期原型和迭代,Google、NASA、Facebook都在内部大量地使用Python。
1.3 开发第一个python程序
1、编程语言介绍
分类:
机器语言
汇编语言
高级语言(编译型、解释型号)
总结:
#1、执行效率:机器语言>汇编语言>高级语言(编译型>解释型)
#2、开发效率:机器语言<汇编语言<高级语言(编译型<解释型)
#3、跨平台性:解释型具有极强的跨平台型
2、python介绍
python语言:指的是pyton的语法风格
python解释器:专门用来识别python这门语言的语法并解释执行的
3、解释器多版本共存
设置环境变量
windows
win10
win7
linux:
vim /etc/profile
PATH=$PATH:/usr/local/python38:/usr/local/python38
export PATH
mac:
同linux
4、运行python程序的两种方式
1、交互式
即时得到程序的运行结果,多用于调试
2、脚本的方式
把程序写到文件里(约定俗称文件名后缀为.py),然后用python解释器解释执行其中的内容
python3.8 python程序文件的路径
5、一个python应用程序的运行的三个步骤(******)
python3.8 C:\\a\\b\\c.py 执行python程序经历三个步骤
1、先启动python3.8解释器,此时相当于启动了一个文本编辑器
2、解释器会发送系统调用,把c.py的内容从硬盘读入内存,此时c.py中的内容
全部为普通字符,没有任何语法意义
3、解释器开始解释执行刚刚读入内存的c.py的代码,开始识别python语法
对比文本编辑器读取C:\\a\\b\\c.py文件内容也经历了三个步骤
1、先启动文本编辑器
2、文本编辑器会发送系统调用,把c.py的内容从硬盘读入内存
3、文本编辑会将刚刚读入内存的内容控制输出到屏幕上,让用户看到结果
总结:
二者在前两个阶段做的事情完全一致
唯一不同的就是第三个阶段对读入内存的python代码的处理方式不同
7、IDE集成开发环境pycharm
mac平台pycharm使用参考视频讲解
windows平台pycharm使用参考博客https://zhuanlan.zhihu.com/p/108676916
windows平台下相关配置
选择pycharm对话框左上角File,然后点击settings,接下来的配置同mac平台
1.4 注释
1、注释
1、注释是对关键代码的解释说明
单行注释:#
# 这是一行xxx的代码
print("hello") # 这是一行xxx的代码
多行注释:'''''' """"""
"""
笔记
"""
2、被注释的代码不会被执行
1.5 变量及类型
一,什么是变量
变量就是可以变化的量,量指的是事物的状态,比如人的年龄,性别,游戏角色的等级,金钱等等
二,为什么要有变量?
为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
详细地说:
程序执行的本质状态的变化,变的是程序执行的直接体现,所以我们需要有一种机制能够反应或者说是保存下来
三,如何用变量
1. 变量的基本使用
原则: 先定义,后引用
name = "harry" # 定义-》存
print(name) # 引用 -》取
age = 18
print(age)
2. 内存管理:垃圾回收机制
垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾
应用计数增加
x = 10 # 10的引用计数为1
y = x # 10的引用计数为2
z = x # 10的引用计数为3
# 引用计数减少
del x # 解除变量名x与值10的绑定关系,10的引用计数变为2
# print(y)
del y # 10的引用计数变为1
# print(z)
z = 12345 # # 10的引用计数变为0
# print(z)
python 中的del 用法
python都是引用,而python有GC机制,所以,del语句作用在变量上,而不是数据对象上
if __name__ == '__main__':
a = 1 # 对象 1 被 变量a引用,对象1的引用计数器为1
b = a # 对象1 被变量b引用,对象1的引用计数器加1
c = a # 1对象1 被变量c引用,对象1的引用计数器加1
del a # 删除变量a,解除a对1的引用
del b # 删除变量b,解除b对1的引用
print(c) # 最终变量c仍然引用1
del删除的是变量,而不是数据。
if __name__ == '__main__':
li = [1, 2, 3, 4, 5]
# 列表本身不包含数据1,2,3,4,5,而是包含变量:li[0] li[1] li[2] li[3] li[4]
first = li[0] # 拷贝列表,也不会有数据对象的复制,而是创建新的变量引用
del li[0]
print(li) # 输出[2, 3, 4, 5]
print(first) # 输出 1
3、变量有三大组成部分
I:变量名=》是指向等号右侧值的内存地址的,用来访问等号右侧的值
II:赋值符号:将变量值的内存地址绑定给变量名
III:变量值:代表记录的事物的状态
4、变量名的命名的规则
原则:变量名的命名应该见名知意
4.1. 变量名只能是 字母、数字或下划线的任意组合
4.2. 变量名的第一个字符不能是数字
4.3. 关键字不能声明为变量名,常用关键字如下
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
age=18
print='Harry'
ps:不要用拼音,不要用中文,在见名知意的前提下尽可能短
mingzi='Harry'
名字='Harry'
print(名字)
5、变量名的命名风格
5.1 纯小写加下划线的方式(在python中,关于变量名的命名推荐使用这种方式)
age_of_alex = 73
print(age_of_alex)
5.2 驼峰体
AgeOfAlex = 73
print(AgeOfAlex)
6、变量值三个重要的特征
name='Harry'
id:反映的是变量值的内存地址,内存地址不同id则不同
print(id(name))
type:不同类型的值用来表示记录不同的状态
print(type(name))
value:值本身
print(name)
6.2 is与==
is:比较左右两个值身份id是否相等
==:比较左右两个值他们的值是否相等
'''
id不同的情况下,值有可能相同,即两块不同的内存空间里可以存相同的值
id相同的情况下,值一定相同,x is y成立,x == y也必然成立
>>>
>>> x='info:Egon:18'
>>> y='info:Egon:18'
>>> print(x,y)
info:Egon:18 info:Egon:18
>>> print(id(x),id(y))
4565819264 4566192176
>>>
>>>
>>>
>>> x == y
True
>>> x is y
False
'''
# 了解:小整数池[-5,256]
# 从python解释器启动那一刻开始,就会在内存中事先申请
# 好一系列内存空间存放好常用的整数
'''
>>> m=10
>>> n=10
>>> id(m)
4562619328
>>> id(n)
4562619328
>>>
>>> res=4+6
>>> res
10
>>> id(res)
4562619328
'''
'''
>>> x=-5
>>> y=-5
>>> x is y
True
>>> x=-6
>>> y=-6
>>> x is y
False
'''
'''
>>> x='aaa'
>>> y='aaa'
>>>
>>>
>>> id(x)
4566200880
>>> id(y)
4566200880
'''
'''
x=-6
y=-6
print(id(x))
print(id(y))
print(x is y)
'''
# 7、常量:不变的量
# 注意:python语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念
AGE_OF_ALEX = 73 # 小写字母全为大写代表常量,这只是一种约定、规范
AGE_OF_ALEX = 74
print(AGE_OF_ALEX)
二,基本数据类型
1.数字类型
1.1 整形int
作用: 记录年龄,身份证号,个数等等
定义:
age = 18
print(type(age))
浮点型float
作用:记录薪资、身高、体重
定义
salary = 3.3
height = 1.87
weight = 70.3
print(type(height))
数字类型的其他使用
level = 1
level = level + 1
print(level)
print(10 * 3)
print(10 + 3.3) # int与float之间可以相加
age = 19
print(age > 18)
# 2、字符串类型str
# 作用:记录描述性质的状态,名字、一段话
# 定义:用引号('',"",''' ''',""" """,)包含的一串字符
info = '''
天下只有两种人。比如一串葡萄到手,一种人挑最好的先吃,
另一种人把最好的留到最后吃。
照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的;
第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。
不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆。
'''
print(type(info))
name = "Harry"
print(name)
x = 18
print(type(x))
x = '18' # 由数字组成的字符串,是字符串类型,不是int类型
print(type(x))
'name'='Harry' # 语法错误,等号左边是变量名,变量名的命名不能有引号
# xxx # 代表访问变量名字
'xxx' # 代表的是值
x = 10
y = x
# 其他使用:
# 字符串的嵌套,注意:外层用单引号,内存应该用双引号,反之亦然
print("my name is 'Harry'")
print('my name is \\'Harry\\'')
# 字符串之间可以相加,但仅限于str与str之间进行,
# 代表字符串的拼接,了解即可,不推荐使用,因为str之间的
# 相加效率极低
print('my name is '+'Harry')
print('='*20)
print('hello world')
print('='*20)
# 3、列表:索引对应值,索引从0开始,0代表第一个
# 作用:按位置记录多个值(同一个人的多个爱好、同一个班级的所有学校姓名、同一个人12个月的薪资),并且可以按照索引取指定位置的值
# 定义:在[]内用逗号分隔开多个任意类型的值,一个值称之为一个元素
# 0 1 2 3 4
l = [10, 3.1, 'aaa', ['bbb', 'ccc'], 'ddd']
print(l)
print(l[1])
print(l[2])
print(l[3])
print(l[3][1])
print(l[4])
print(l[-1])
hobbies = 'read music play'
print(hobbies)
hobbies = ['read', 'music', 'play']
print(hobbies[1])
# 其他的用途:
students_info =[
['tony', 18, ['jack', ]],
['jason', 18, ['play', 'sleep']]
]
# 取出第一个学生的第一个爱好
print(students_info[0][2][0])
# 4、索引反映的是顺序、位置,对值没有描述性的功能
# 0 1 2 3
info = ['harry', 18, 'male', 19]
print(type(info))
print(info[0])
print(info[1])
print(info[2])
# 字典类型:key对应值,其中key通常为字符串类型,所以key对值可以有描述性的功能
# 作用:用来存多个值,每个值都有唯一一个key与其对应,key对值有描述性功能
# 定义:在{}内用逗号分开各多个key:value
d = {'a': 1, 'b': 2}
print(type(d))
print(d['a'])
print(d["b"])
info = {
"name": 'harry',
"age": 18,
"gender": 'male',
"salary": 19
}
print(info["salary"])
print(info["name"])
# 其他用途:
# students_info=[
# 第1个信息,
# 第2个信息,
# 第3个信息,
# ]
students_info = [
{"name": 'harry1', 'age1': 19, 'gender': 'male'},
{"name": 'harry2', 'age1': 19, 'gender': 'male'},
{"name": 'harry3', 'age1': 19, 'gender': 'male'},
]
print(students_info[1]['gender'])
# 5 布尔bool
# 6.1 作用
# 用来记录真假这两种状态
#
# 6.2 定义
is_ok = True
is_NG = False
print(type(is_NG))
x = 1
y = 0
students = [
{'name': 'harry', 'gender': 'male'},
{'name': 'alex', 'gender': 'female'},
]
# 6.3 其他使用
# 通常用来当作判断的条件,我们将在if判断中用到它
# 总结:如何选择合适的类型来记录状态
# 1、选取的类型是否可以明确标识事物的状态
# 2、存不是目的,存的目的是为了日后取出来用,并且方便的用
# 3、把自己想象成一台计算机,如果我是计算机,
# 我会如何以何种形式把事物的状态记到脑子里
# 然后再去python中找相应的数据类型来让计算机像自己一样去记下事物的状态
1.6 标识符和关键字
1.标识符
开发人员在程序中自定义的一些符合和名称
标识符是自己定义的,如变量名,函数名等
2.标识符的规则
标识符由字母,下划线和数组组成,且数组不能开头
python中的标识符是区分大小写 例如: Andy
3.命名规则
1.模块
模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)
import decoder
import html_parser
2.类名
类名使用驼峰体,首字母大写,私有类可用一个下划线开头
class Farm():
pass
class _Student(Farm):
pass
将相关的类和顶级函数放在同一个模块里。
3.函数
函数名一律小写,如果多个单词,用下划线隔开
def run():
pass
def run_with():
p以上是关于python入门到精通的主要内容,如果未能解决你的问题,请参考以下文章