A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张起灵 初级黑马   /  2018-8-1 23:29  /  1626 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

经过半个多月python基础的学习,对Python兴趣日益浓厚,每天在代码的海洋中遨游。以下是我的学习经验和小结。

第一天
1、解释器和编译器
编译型语言(c、c++等)跨平台性较差,需要通过编译器进行编译,生成可执行文件;解释型语言(python等)跨平台性高,但是运行速度相对较慢,通过解释器,解释一行执行一行。
python为后端语言,1、简单直观,2、开源,3、容易理解,4、适用于短期开发。
2、python属于完全面向对象的语言,强大标准库和第三方库。可扩展性:可以使用其他语言对核心代码C,C++等进行编写。
GitHub
LeetCode刷题网站
3、三种执行环节
解释器,交互式,IDE集成开发环境
4、cd切换路径,mkdir创建文件夹,ls当年路径文件查看,touch创建文件
执行文件:python 文件名 ,编写文件:gedit 文件名
5、错误内容:
(1)Nameerror:名称错误。
(2)Typeerror:类型错误。
(3)Indentationerror:缩进错误。
(4)Syntaxerror:语法错误。
(5)Keyerror:key值错误
6、解释器运行python
(1)python解释器,官方python与python3
(2)CPython————官方版本的C语言
(3)Jpython————在java平台上运行
(4)IronPython————在.NET和Mono平台上运行
(5)PyPy————Python实现,支持JIT即时编译
7、交互式shell运行Python程序
直接在运行终端运行解释器,在Python直接输入python代码,即可执行。
适用于学习验证Python语法或者局部代码。
IPython一个python的交互式shell,i表示interactive,交互。
8、IDE集成开发环境

第二天
1、注释
单行注释#后需要加一个空格,行尾注释#需与代码间有两个空格。
多行注释,三引号括起来的内容。注释等级不同,导致多行注释有时候颜色不是灰色 。
注释:(1)不是越多越好,(2)对于复杂操作,应在操作开始前写上若干行注释,
(3)对于不是一目了然的代码,应在其行尾添加注释,(4)不描述代码
2、算术运算符
//取整除,%取余数,**幂运算。
*可以用于字符串的拼接。
3、数据类型
数字型:整型(int)、浮点型(float)、布尔型(bool)(非0即真)、复数型(complex)。
非数字型:字符串(str)、列表(list)、元组(tuple)、字典(dict)。
计算时,True对应的数字为1,False对应的数字为0。
数字型变量之间可以直接计算。字符串之间使用+、*拼接字符串。
4、输入输出
input函数的输入全部认为是一个字符串。
转换数据类型。
布尔值True、False转换为字符串为“True”、“False”,字符串“True”、“False”转换为数字型为1,0。“0”,“1”字符串转换为布尔值时均为True。

第三天
1、格式化输出
%s作为占位符,输出字符;
%d输出十进制整型,%06d表示输出的整数显示的位数,表示用0进行占位,占6位;
%f输出浮点型,%.2f表示小数点后两位小数;
%%输出%。
2、变量的命名
字母、下划线、数字;不能以数字开头;不能与关键字重名。
变量名需要两个或者多个单词组成时:1、每个单词都使用小写字母,2、单词之间使用下划线连接
小驼峰、大驼峰命名法。
3、if的判断的使用
4、逻辑运算符
与and,或or,非not。
a = 1,b = 2,
a and b   --->   2    同真则返回最后一个真值
a or b    --->   1      返回第一个真值
5、if条件语句中,比较长的判断语句可以换行处理,换行后应再增加4个空格的缩进
random模块
import random
Com = random.randint(1,3)表示随机1-3的整数。

第四天
1、计数要求:从零开始进行计数。
2、break、continue
break某一条件满足时,退出循环,不再执行后续重复代码。终止该块循环。
continue某一条件满足时,不执行后续重复的代码。终止该次循环。
3、print(1,end=“”),end=“”保证print不换行输出。
print()默认end=“\n”即换行。
4、转义字符
\t:输出一个制表符,协助输出文本时在垂直方向保持对齐,最多可以补齐4位。
\n:输出一个换行符。
\\:输出 \。
5、封装
接口————类————函数,三级封装。
6、函数
def == define 定义函数

第五天
1、函数注释
def 下三引号进行注释,选中调用的函数时,control+j快捷显示注释(Windows版会control+k)。
2、实参,形参
形参:定义函数时,用来接收参数用的
实参:调用函数时,用来把数据传递到函数内部
3、return在使用时,当运行到return时,会返回到调用函数的位置,return下的代码不会被执行到。
4、模块
在模块中定义的全局变量、函数都是模块能够提供给外界直接使用的工具。
模块的命名:不能以数字开头,以数字开头无法导入模块。
pyc文件是由python解释器将模块的源码转换为字节码。
python在解释源程序时分为两个步骤:
1)首先处理源代码,编译成一个二进制代码
2)在对字节码进行处理,才会生成cpu能够识别的机器码
5、高级变量
list:index索引,list.index(“值”,begin,end)索引的开始和结束为止。

第六天
1、列表可以存储不同类型的数据,在实际场景中一般会存储相同类型的数据,可以迭代操作。
2、元组,定义后不可以修改。一个元素的元组,需加一个逗号。
3、字典,一行输入一对键值对
对字典的直接遍历,得到的是键key。
4、字符串:
1)判断类型:判断空白字符,判断是否只包含数字
isdecimal(只判断数字),isdigital(可以判断一些特殊的数字,unicode字符串,“\u00b2”表示个平方),isnumeric(还可以判断中文数字):均无法判断小数。
2)查找和替换
replace函数存在返回值,并没有对原字符串进行更改,是新创建了一个字符串。指定次数超过能替换的量时,并不会报错。

第七天
字符串操作:
1)大小写切换:5个
2)文本对齐:3个,ljust,rjust,center
3)去除空白符:3个,(l或者r)strip
4)拆分和拼接:5个
split:默认以空白字符进行拆分
join:“ ”.join(列表),以空格对列表的进行拼接。
5)切片
高级数据变量的公共方法
1)len、max、min(字典的大小比较,针对key键进行比较)、del、cmp
2)切片,有序数据均可以进行切片
3)运算符
4)完整的for循环语法
for 变量 in 集合:
        循环代码
else:
        没有通过break退出循环,循环结束后,会执行的代码
项目注释:
TODO注释:#后面加TODO,即成为TODO注释,提示自己还应完成的功能。
# TODO(姓名/邮件) 需要完成的功能
程序是用来处理数据的,首先要思考一下存储数据的类型,已经定义好该存储数据的变量。

列表操作:append、extend、sort、remove没有返回值,pop存在返回值。
字典:update没有返回值
字符串:replace,upper,lower,title,join有返回值

第八天
1、名片管理系统
return:可以返回一个函数的执行结果,下方代码不会执行。如果return后面没有任何内容,表示会返回到调用函数的位置。
只有一个return会被执行一旦执行了某个return,函数也将被立即终止,其余return将不会再执行。
Linux上的shebang符号(#!)
2、变量进阶:
变量保存的是数据在内存中的地址,称之为引用。
变量的赋值本质是传递id地址。
可变类型:列表、字典
不可变类型:数字类型、字符串、元组
3、函数
局部变量:
函数执行结束后,函数内部的局部变量,会被系统回收。
局部变量的生命周期:被创建到被系统回收的过程。
全局变量:定义在函数外部的变量。
在函数内部不能直接修改函数全局变量
global可以定义一个全局变量。
但是,但是,但是:因为列表是可变类型,如果不加global的话,使用如使用append方法等去修改也会影响到全局变量里的b的值。
1、不可变类型全局变量,在函数内直接修改时,必须先用global声明,可变类型不需要
2、变量存储的实际上数据的引用,可理解为数据在内存中的地址,传递时,传递的也是数据的引用

第九天
函数、参数
全局变量命名前应增加g_或者gl_。
还用多个变量接受函数的返回值,变量个数与元组中的元素个数保持一致。
a,b=b ,a,交换两个数的值。
列表使用+=时,相当于调用了extend的方法,id地址不发生改变,就会发生改变。
缺省参数,某个参数给定一个默认值。缺省参数应该写在最后,出现多个缺省参数时,对某个指定缺省参数赋值时,写出参数名。
多值参数,*接受元组,**接受字典。(args = arguments,kwargs = keyword arguments),字典的key值不加引号。
元组和字典的拆包,需要增加 * 和 ** 。在传入多值参数时,有时候需要进行拆包。
递归,必须有一个出口,做出一个假设,上一级已经可以完成功能。以调用函数的地方 为界,上方为进入递归前调用,下方为递归后调用。
参数写的顺序,正常参数,缺省参数,*参数,**参数。
Lambda函数能接收任何数量的参数但只能返回一个表达式的值。

第十天
1、面向对象(OOP)
类和对象:类属性和方法,变量和函数。
满足类的三要素
1)类名的命名符合大驼峰命名法,
2)属性指的是具体有怎么样的特征,
3)方法指的是具体有怎么样的行为。
2、创建函数后,调用dir函数可以查看其内置函数。dir(function)
%x:使用十六进制显示数字,%d:使用十进制显示数字。
给对象增加属性,不推荐在类的外面增加。
self:哪个对象调用方法,此时self指的就是该对象的引用。
__new__函数,在创建对象时被调用,
__init__函数,在对象初始化时被调用。

序号
方法名
类型
作用
1
__new__
方法
创建对象时,会被 自动 调用
2
__init__
方法
对象被初始化时,会被 自动 调用
3
__del__
方法
对象被从内存中销毁前,会被 自动 调用
4
__str__
方法
返回对象的描述信息,print 函数输出使用

内存的地址使用十六进制保存。
使用 类名() 创建对象时,Python 的解释器 首先 会 调用 __new__ 方法为对象 分配空间__new__ 是一个 由 object 基类提供的 内置的静态方法,主要作用有两个:
1)在内存中为对象 分配空间
2) 返回 对象的引用
Python 的解释器获得对象的 引用 后,将引用作为 第一个参数,传递给 __init__ 方法
在每次使用 类名() 创建对象时,Python 的解释器都会自动调用两个方法:
__new__ 分配空间,__init__ 对象初始化
__del__方法会在最后使用
注意:`__str__` 方法必须返回一个字符串

在现实开发过程中,先去开发被使用到的类。

第十一天
1、身份运算符
is,判断两个标识符是否引用同一个对象,判断id地址是否为同一个。
==, 判断值是否相同。
python中针对None比较时,建议使用is判断。
2、私有属性、私有方法
属性名和方法名前加两个下划线,定义私有属性、方法。
对象的私有属性和方法只能在对象内部调用,无法再外部进行调用。
对私有方法处理方式:在名称前面加上_类名=>_类名__方法
__age私有属性在创建时,其实对象创建的名称为_Girl__age。
3、继承,子类拥有父类所有的数学和方法。
基类,父类。
派生类,子类。
重写:
对父类的方法进行重写,会覆盖父类中的方法。
扩展:
对父类方法进行扩展,重写中,super().父类方法,会调用原本来父类中封装的方法。
在python2中,对父类的扩写时只能调用,父类.方法名(self)
私有属性、方法不能由外界或者子类直接访问到。
多继承:
类名.__mro__:可以查看对象调用方法的顺序。(内置函数)
现在类中寻找,再根据继承的父类按顺序寻找。
面向对象开发三大特点:封装、继承、多态。
4、多态:不同的子类对象,调用相同父类方法,产生不同的执行结果。
1)以继承父类方法为前提
2)以重写父类方法为前提
5、每个对象都有自己独立空间,保存不同的属性
多个对象的方法,在内存中只有一份,在调用时,会传给该对象self。
(属性的获取机制,向上查找机制。在实例对象中未找到,会向上在类中寻找。)

第十二天
1、类方法
2、静态方法:既不需要访问类属性或调用类方法,也不需要访问实例属性或调用实例方法,可以封装为静态方法。
@staticmethod定义静态方法,且不需要传入self的参数。
调用静态方法:类名.方法名
3、单例模式
__new__方法,为对象分配空间,返回对象的调用。
__new__必须要有返回值,返回实例化出来的实例
__new__方法为静态方法。
4、异常
try…except…分支语句
else:未出现异常才会执行的代码,finally:无论如何,都会执行的代码。
异常传递性,会向调用的函数diaoyongdiaoyong
主动抛出异常
5、模块
from…import…/import…

第十三天
1、模块导入
从不同模块导入相同名字的函数,后导入模块会的函数会覆盖先导入模块的函数。
模块索引顺序:当前目录下导入模块——>系统目录下导入模块
模块名.__file__:返回模块的完整路径
内置函数:__name__:当前页执行时,得到__main__;在导入模块的位置执行,输出为导入模块的模块名。
2、包
包是一个包含多个模块的特殊目录,包的文件夹内必须有一个__init__的py文件。
要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表。
3、制作包
1)创建setup.py:
2)构建模块:python setup.py bulit
3)生成发布压缩包:python setup.py sdist
安装包:python setup.py install —perfix=指定路径

第十四天
1、导入包,python install 包名
卸载包,sudo rm -r 文件名
2、安装模块
python3中安装:
sudo pip3 install 模块名
sudo pip3 uninstall 模块名
安装ipython:
sudo pip install ipython
3、文件管理
文本文件(本质也是二进制文件)、二进制文件。
打开、读写、关闭文件的操作。
4、os模块
os.path.isdir(“文件名”)
如果为文件返回false,如果为目录返回true。
5、编码格式
python2默认ASCII,python3默认utf-8。
6、eval函数
将字符串当成一个有效表达式来,返回一个可以执行的type。
eval局限性:不要使用eval直接转换input的结果。
__import__(模块名).system(命令)
直接使用调用模块执行命令,执行成功返回0,执行失败,返回错误信息。
7、使用pygame
pygame.init()初始化pygame
pygame.quit()卸载pygame模块
pygame.rect(与x轴距离,与y轴距离,size)用于描述矩形区域,size(width,height)
pygame.display.set_mode(tuple,flags,depth)初始化游戏显示窗口的宽和高,有返回值
使用后,需display.update()方法更新显示。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马