飞道的博客

Python基础(一)

420人阅读  评论(0)

介绍

1.Pyhon是一种解释型、面向对象、动态数据类型的高级程序设计语言。

2.Python特点:简洁、可读性强、免费和开源、可移植性和跨平台、丰富的库、可扩展性(可嵌入到C和C++)。

3.Python是由C语言开发,但不再有C语言中指针等复杂数据类型。

4.应用范围

1)科学计算
2)人工智能
3)web服务端和大型网站后端,如YouTube、gmail
4)GUI开发(图形用户界面开发)
5)游戏开发
6)移动设备
7)嵌入式设备
8)系统运维
9)大数据
10)云计算

5.Python中,一切皆对象。每个对象由:标识(id)、类型(type)、value(值)组成。对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作。

6.Python3代码保存必须是UTF-8

安装

1.安装Anaconda

1)查看python版本:python
2)查看conda版本:conda --version
3)查看系统中的所有环境:conda info --env

2.安装IDE:pyCharm

一.标识符和变量

1.注释

1)行注释:# 
2)段落注释:'''  '''

2.标识符

1)由字母、数字和下划线组成,不能以数字开头
2)区分大小写http://note.youdao.com/iyoudao/?p=2411
3)不能使用关键字,如:['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
4)以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法,如:_init_是类的构造函数。

3.标识符命名规则

类型 规则
模块和包名 全小写字母,尽量简单。若多个单词之间用下划线
函数名 全小写字母,多个单词之间用下划线隔开
类名 首字母大写,采用驼峰原则。多个单词时,每个单词第一个字母大写,其余部分小写
常量名 全大写字母,多个单词之间用下划线隔开
变量名 全小写字母,多个单词之间用下划线隔开

4.del+变量名称:删除变量

5.链式赋值:如x=y=123

6.系列解包赋值:如a,b,c=1,2,3
注:系列解包赋值实现变量交换,如a,b=b,a

7.id():查看地址;type():查看类型

二.数据类型与运算符

1.进制

1)二进制:0b/0B
2)八进制:0o/0O
3)十六进制:0x/0X

2.**表示指数运算;//表示整除

3.int():取整数; str():转化成字符串;eval():字符串转化为数值

4.round():四舍五入,不改变原有值,而是产生新的值

5.is与== 区别

1)is用于判断两个变量引用对象是否为同一个,即比较对象的地址
2)==用于判断引用变量引用对象的值是否相等,默认调用对象的_eq_()方法

6.Unicode可表示世界上任何书面语言的字符。ASCII码是Unicode编码的子集。

1)ord():求字符的编号,字符串长度只能为1
2)chr():求编号对应的字符

7.输入输出

1)input()/print()
2)print()高级用法
	2.1)end:默认换行
	2.2)sep:print连续打印时,默认空格

8.字符串操作

1)slice字符串切片:[起始偏移量start:终止偏移量end:步长step]
2)split()分割
3)join()合并
4)strip()去除字符串首尾指定信息
5)upper()所有字符全转成大写
6)lower()所有字符全转成小写
7)*字符串复制,如“st”*3=>"s

9.格式化

1)字符串格式化:format()数据对齐,^、<、>居中、左对齐、右对齐,后面带宽度
2)数据格式化

10.in/not in:判断某个字符(子字符串)是否存在于字符串中

11.io.StringIO():可变字符串

三.序列

1.序列是一种数据存储方式,用于存储一系列的数据。常用的序列结构有:字符串、列表、元组、字典、集合。

2.列表list

1)列表:用于存储任意数目、任意类型的数据集合。如a=[10,20,30],列表大小可变,根据需要随时增加或缩小。
2)操作:创建、增加、删除、查询、slice切片、遍历、排序

3.元组tuple

1)元组属于不可变序列,不能修改元组中的元素。如a=(10,20,30)或a=10,20,30
2)操作:创建、删除、slice切片、排序、zip

4.字典dict

1)字典是“键值对”的无序可变序列。“键”是任意的不可变数据,如整数、浮点数、字符串、元组,但列表、字典、集合这些可变对象,不能作为“键”。如a={'name':'gaoqi','age':18,'job':'programmer'}
2)操作:创建、get()获取值、增加、删除、修改

5.集合

1)集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。如a={3,5,7}
2)操作:创建、增加、删除、交并差集

四.流程控制语句

1.if条件语句

1)if
2)if...else
3)if...elif...else
4)三元条件运算符:条件为真的值 if (条件表达式) else 条件为假的值,如2 if a>1 else 0
5)条件表达式的值为False的情况:False、0、0.0、空值None、空序列对象(空列表、空元组、空集合、空字典、空字符串)、空range对象、空迭代对象
6)条件表达式中,不能有赋值操作符“=”

2.while/for循环语句

1)while
2)while...else
3)for 变量 in 可迭代对象,其中迭代对象为序列(字符串、列表、元组)、字典、迭代器对象(iterator)、生成器函数(generator)
4)for 变量 in range(100),其中range(min,max,step)--不包含max,即<max;range(max,min,step)--不包含min,即>min
5)for 变量 in 可迭代对象....else
6) for循环的运算速度不如while快.

3.break/continue

1)break结束整个循环
2)continue结束本次循环,后续代码不再执行。可用于筛选

4.推导式创建序列

1)列表推导式:[表达式 for item in 可迭代对象] 或 [表达式 for item in 可迭代表达式 if 条件判断] 或 [表达式 for item in 可迭代对象 for item in 可迭代对象]
2)字典推导式:{key_expression: value_expression for 表达式 in 可迭代对象},也可以增加if条件判断、多个for循环
3)集合推导式:{表达式 for item in 可迭代对象} 或 {表达式 for item in 可迭代表达式 if 条件判断}
4)生成器推导式(生成元组):(表达式 for item in 可迭代对象) 或 (表达式 for item in 可迭代表达式 if 条件判断)

五.函数

1.函数分类

1)内置函数:如str()、list()、len(),拿来直接使用
2)标准库函数:通过import语句导入库
3)第三方库函数
4)用户自定义函数

2.定义函数
def 函数名([参数列表]):
‘’‘注解:函数说明’’’
函数体

3.返回值return

1)作用:返回值、结束函数执行
2)不包含return语句,返回None值
3)返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可

3.全局变量/局部变量

1)全局变量:作用域为定义的模块
2)局部变量:作用域为函数体
3)locals():打印局部变量;globals():打印全局变量
4)global:声明全局变量 
5)nonlocal:声明外层的局部变量,直接改变 用于函数嵌套

4.参数传递

1)Python中参数的传递都是“引用传递”,不是“值传递”
2)浅拷贝/深拷贝
	2.1)浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用
	2.2)深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象
3)可变参数
	3.1)*param(一个星号),将多个参数收集到一个“元组”对象中
	3.2)**param(两个星号),将多个参数收集到一个“字典”对象中

5.lambda表达式和匿名函数:lambda表达式可以用来声明匿名函数。如lambda arg1,arg2,agr3… : <表达式>

6.eval()函数:将字符串str当成有效的表达式来求值并返回计算结果

7.LEGB规则:查找“名称”是,按照LEGB规则查找的:Local–Enclosed–Global–Built in

1)Local:指的是函数或者类的方法内部
2)Enclosed:指的是嵌套函数(闭包)
3)Global:指的是模块中的全局变量
4)Built in:指的是Python为自己保留的特殊名称

六.面向对象编程

1.面向过程与面向对象

1)面向过程
	1.1)面向过程:关注“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序。
	1.2)面向过程思想思考问题时,首先思考“怎样按步骤实现?”并将步骤对应方法,一步一步,最终实现。
	1.3)比如,如何开车?实现步骤1.发动车 2.挂挡 3.踩油门 4.走你
2)面向对象
	2.1)面向对象:关注“软件中对象之间的关系”,是一种“设计者”思维,适合编写大规模的程序。
	2.2)面向对象思想思考问题时,首先思考“怎样设计这个事物?”
	2.3)比如,造车?发现车由如下对象组成1.轮胎 2.发动机 3.车壳 4.座椅 5.挡风玻璃

2.对象的进化:简单数据–数组–结构体–对象(将不同类型的数据、方法(即函数)放在一起,就是对象)

3.类

1)构造函数 :def _init_(self[,参数列表])
2)析构函数:def _del_(self),用于实现对象被销毁时所需要的操作
3)实例方法 :def 方法名(self[,参数列表]);调用实例方法时,不需要给self传参
4)类方法
@classmethod
def 类方法名(cls[,形参列表])
5)静态方法
@staticmethod
def 静态方法名([形参列表])

注:类方法和静态方法内不能调用实例方法和实例属性。
6)def _call_(self[,形参列表]),定义了_call_方法的对象,称为“可调用对象”,即该对象可以像函数一样被调用。
7)Python中不要使用重名的方法,即Python中没有方法重载。在类体中定义了多个重名的方法,只有最后一个方法有效。
8)私有属性/私有方法(封装)
	8.1)两个下划线开头的属性是私有的(private)
	8.2)类内部可以访问私有属性/方法
	8.3)类外部不能直接访问私有属性/方法,可通过“_类名__私有属性/方法名”访问
9)@property装饰器
	9.1)@property可以将一个方法的调用方式变成“属性调用”
	9.2)get和set方法
10)mro()可以查看这个类的继承层次结构
11)dir()可以查看对象内所有属性和方法
类的结构
方法(函数) --行为
属性(变量) --状态
对象的结构
方法(由同一个类创建的所有对象共享) --行为
属性(每个对象维持自己的属性) --状态

4.面向对象三大特征

1)封装、继承、多态
2)继承
	2.1)python支持多重继承,一个子类可以继承多个父类,如 class 子类类名(父类1[,父类2,...])
	2.2)super():在子类中,获取父类的方法用super()
3)多态
	3.1)多态是指同一个方法调用由于对象不能可能产生不同的行为
	3.2)多态是方法的多态,属性没有多态
	3.3)多态存在有2个必要条件:继承、方法重写

5.组合是“has-a”的关系;继承是“is-a”的关系

七.设计模式

1.工厂模式:实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。

2.单例模式:确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。

八.文件操作(IO技术)

1.文件类型

1)文本文件:存储的是普通“字符”文件,python默认为Unicode字符集(两个字节表示一个字符,最多可以表示65536个),可以使用记事本程序打开。
2)二进制文件:存储的是“字节”文件,无法使用记事本打开。必须使用专用的软件解码。常见的有:MP4视频文件、MP3音频文件、JPG图片、doc文档等。

2.文件操作

1)open()创建文件对象
2)close()关闭文件对象
3)write()/writelines()写入数据
4)read([size])/readline()/readlines()读取数据
5)with上下文管理

3.序列化指的是将对象转化成“串行化”数据形式,存储到硬盘或通过网络传输到其他地方。反序列化指的是相反的过程,将读取到的“串行化数据”转化成对象。

九.异常处理

BaseException
KeyBoardInterrupt
Exception
SystemExit
GeneratorExit
NameError
ValueError
AttributeError
...

1.try的多种结构

1)try...一个except结构
2)try...多个except结构(多个异常,先子类后父类)
3)try...except...else结构
4)try...except...finally结构

2.常见异常

1)SyntaxError:语法错误
2)NameError:尝试访问一个没有申明的变量
3)ZerDivisionError:除数为0错误(零除错误)
4)ValueError:数值错误
5)TypeError:类型错误
6)AttributeError:访问对象的不存在的属性
7)IndexError:索引越界异常
8)KeyError:字典的关键字不存在

十.模块

Python程序
包1
包2
模块1
模块2
模块1
类1
函数1
语句1
函数1
属性1
属性2
语句1
语句2
语句1
语句2

1.模块

1)Python程序由模块组成。一个模块对应python源文件,一般后缀名是:.py。
2)模块由语句组成,运行Python程序时,按照模块中语句的顺序依次执行。
3)语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。

2.模块化编程的流程

1)设计API,进行功能描述
2)编码实现API中描述的功能
3)在模块中编写测试代码,并消除全局代码
4)使用私有函数实现不被外部客户端调用的模块函数

3.模块的导入

1)import导入的是模块,即“文件”
2)from...import导入的是一个类/函数,即文件下的“内容”

4.包package:“包”就是一个必须有__init__.py的文件夹。

5.模块发布和安装

1)模块的本地发布
	1.1)为模块文件创建相应结构的文件夹(一般,文件夹的名字和模块的名字一样)
	1.2)在文件夹中创建一个名为【setup.py】的文件,并写入相应内容
	1.3)构建一个发布文件。通过终端,cd到模块文件夹下面,输入命令:python setup.py sdist
2)本地安装模块
输入命令:python setup.py install。安装成功后,进入python目录/Lib/site-packages查看
3)模块的网上发布

十一.GUI

1.GUI(Graphics User Interface):图形用户界面编程

2.tkinter的GUI组件关系图:

Wm
Object
Misc
Pack
Place
Grid
TK
TopLevel
BaseWidget
Widget
Label
Button
Canvas
Checkbutton
Entry
Text
LabelFrame
Frame
Listbox
Menu
Menubutton
Message
Radiobutton
Scale
Scrollbar
Spinbox
OptionMenu

转载:https://blog.csdn.net/erer_wanzi/article/details/105491740
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场