黑马程序员技术交流社区
标题: 一份 python前8天课程的笔记 [打印本页]
作者: 新手小黑 时间: 2018-10-8 11:06
标题: 一份 python前8天课程的笔记
python基础班已经接近尾声,以下是我在上课过程中记录的一些我认为比较重要的知识点,供大家参考。
第一天:
1.什么是python
优点:简单、可读性高、适合短期开发
解释型语言,跨平台好
缺点:运行速度慢
中文资料较少
设计哲学:
简单 优雅
开源
python是完全面向对象语言
2.写下第一条python语句,hello world!(输入输出)
什么是报错,错误的类型
1.bug 2.手误
单词拼写错误
name error 命名错误
syntax error 语法错误
indentation error 缩进错误 多了空格
报错的原因:每一行代码只负责完成一个动作
python2.x和python3.x区别:python2.x不支持中文
解决方案:第一行代码-*-coding:utf-*- 可以使python2.x可以使用中文
3.python的交互方式---运行方式
1.使用终端命令去运行 cmd进入终端,输入python
2.ipython 有自动补全功能,缺点:不能够保存
pip install ipython 安装ipython
3.pycharm 集成开发环境 IDE
pycharm 调试工具 debug 断点调试
第二天:
什么是注释
解释说明代码,让其他程序员能够看懂
单行注释
#XXXX 一个#号加注释语句
多行注释
"""XXXX""" 连续敲三个引号,里面添加注释内容
1.定义函数的介绍
2.定义方法的介绍
算术运算符
最普遍的4则运算符 加减乘除 + - * /
// 取整 8//3=2
% 取余 9//3=0
** 幂 2**3=8 2的三次方
变量
变量定义
变量的类型
变量的命名
type函数,可以查看数据类型
变量类型之间的计算
数字类型和数字类型可以相加
字符串和字符串类型可以 +
数字类型之间可以直接相加,包括boolen类型
函数:一个功能代码的封装
目前学习了三个函数
print 输出
type 识别函数类型
input 输入 通过用户输入键盘的内容,input所接受的数据类型都是字符串型
input:输入
变量名= input("提示信息")
类型转换函数
int()将字符串转换成整数
float()将字符串转换成浮点型
注意:字符串类型不能直接相乘
字符型的数据需要添加双引号“”
格式化输出
%s 表示字符串
%d 表示整型
%f 表示浮点型
%% 表示%
标识符
1.标识符只能由字母数字下划线组成
2.不能以数字开头
3.不能与关键字重名
关键字有哪些:关键字是Python语言提前内置好的标识符,关键字具有特殊的功能和含义,
不能定义与关键字相同名字的关键字
import 导入“工具包”
第三天:
学习目标:判断语句 if ..elif...else
定义:1.如果条件满足,则完成某件事情
2.如果条件不满足,则完成另一件事情,或者什么事情都不做
条件成立,执行A
条件不成立,执行B
注意:代码的缩进为一个Tab键,或者4个空格--建议使用空格
在Python开发中,Tab和空格不要混用!
程序格式:
if 要判断的条件:
4个空格 执行的语句
else 执行的语句
例:if(条件语句):
输出
else:
输出
比较运算符
==判断是否相等
!= 判断是否不相等
==与=的区别
==是等于的意思
= 是赋值,将等号右边的值赋值给左边
快捷键:ctrl+/ 单行注释
运行 shift+ctrl+f10 1
逻辑运算符
与 或 非
and or not
与 and:1.两个条件同时满足,返回true
2.只要有一个不满足,就返回false
或 or:1.两个条件只要有一个满足,返回true
2.两个条件都不满足,返回false
非 not:取反,原来是真的,变成假的。原来是假的,变为真的。对条件取反。
elif (平级判断)
语法结构:
if 条件判断语句1:
代码1
elif 条件判断语句2:
代码2
elif 条件判断语句3:
代码3
else 代码4
注意:elif和else都不能单独使用,必须和if一起使用。
if的嵌套语句(在之前条件满足的情况下,再判断下一个条件)
应用场景:在之前的条件满足的前提下,再增加额外的判断
除了缩进不一样,其他都一样
import 导入工具包
random 随机整数
random.randint(a,b) ,随机a<=n<=b之间的数字
1.a=10,b=30,n大于等于10,小于等于30
2.a=10,b=10,n一直等于10
3.a=10,b=5,报错,前面一个数a必须大于后面的数b
第四天:
类是一系列事物的统称,同类事物必定具有相同的特征。
特征分类:
状态 变量(成员变量)属性
行为 方法(成员方法)函数
统称:类的成员
类定义
定义格式一: calss Cat:
pass (pass代表什么都还没写,类里面为空)
class 类名:
____pass
定义格式二:
class 类名:
____成员
类名命名规范:大驼峰命名规则(例:TypeName 每一个单词首字母大写)
函数命名规则:小驼峰命名规则(例:cater 多个单子组合首字母小写,第二个字母的首字母大写)
创建对象:
格式:
变量名 = 类名()
注意:对象不限制数量
类成员包括:
成员变量
成员方法
成员变量的定义与调用
定义格式:
class 类名:
____def ___init__(self)
____ ____self.变量名 = 值1
____ ____self.变量名 = 值2
____ ____self.变量名 = None
____ ____self.变量名 = None
init(构造方法) 自定义参数
创建对象并进行赋值
def __init__(self,形参列表):
self.属性名1 = 形参 1
self.属性名2 = 形参 2
调用格式:
取值:对象名.变量名
赋值:对象名.变量名 = 值
成员方法定义与调用
定义格式:
class 类名:
____def 方法名(self):
________方法体
调用格式:
对象名.方法名()
定义格式二:
class 类名:
____def 方法名(self,形参1,形参2......)
________方法体
调用格式二:
对象名.方法名(实参1,实参2......)
str方法
在使用print函数打印对象时,将自动调用__str__()方法。
该方法无需手工调用即可执行
__str__()方法定义格式:
def__str__(self):
return 打印对象时显示的信息字符串
成员方法调用成员变量:
在成员方法中,访问类的成员变量,用self. 进行
注意:self仅在申明时占位,无需传递具体参数
iphone = phone(80)
传递的参数是传递给 init
里面的self代表内存地址
类 实例化 对象
iphone = phone()
面向对象有三大特性:
1.封装:私有属性,私有方法
通过私有化成员,可以防止类的成员进行访问
私有属性定义格式:
self.__属性名 = 值
通过封装,可以对类中设定访问保护的成员开放访问控制权限。
达到保护数据不被非法访问的目的。
封装定义格式
访问器(get方法) :
def get_变量名(self):
return__变量名
修改器(set方法):
def set_变量名(self,形参):
self.__变量名 = 形参
私有化成员:通过私有化成员,可以防止对类的成员进行访问
私有属性定义格式:
self._属性名 = 值
2.继承
3.多态
第五天:
类、继承、多态:
object类是所有类的父类
class 类名(object)
def 方法名:
方法体
多继承符合左原则(Father,Mother)
继承中,父类的私有变量和私有方法无法被子类继承
鸭子类型(stupid、foolish):对象在语法层面满足调用关系,实际不具有实际的对象形态,称该对象此时具备
鸭子类型
多态:描述对象多态的性质。对象的多态,一个对象有多个方法,必须要有继承的概念在里面,从多个对象继承相应的功能过来
多调用的方法与需要的方法内容不一致,就是鸭子类型。
self 对应的是对象的内存地址
cls 对应的是类的内存地址
面向对象中的三种方法:
类方法、成员方法、静态方法
类方法格式:
@classmethod
def 方法名(cls):
方法体
成员方法:
def 方法名(self):
方法体
静态方法:
@staticmethod
def 方法名(形参)
方法体
类方法注意事项:
类方法中不允许使用成员变量和成员方法
成员方法中允许使用类变量和类方法,推荐使用类名调用
类名.方法名()
第六天:
tuple 元组
True向数字方向延展 是1,向字符串方向延展是 字符串"True"
强制类型转换bool 字符串里面什么都没有“”转换成False,
字符串里面有数据" sss"转换成True
字典的命名规则是 key 和 value合一,简称键值
{"name": "李红", "age": "21"}
range(步调数)
创建格式一:
range(m) 生成0 到m-1的整数列表
创建格式二:
range(m,n) 生成m 到 n-1的整数列表 (m<=x<n)
创建格式三:
range(m,n,s) 生成m 到 n-1 的整数列表,每个间隔s(1.3..5.7)
range作用
配合for循环构造指定次数的循环
for _ in range(....):
_____循环执行的代码
第7天:
切片语法:
公共语法3
列表推导式:
(表达式 for循环 if 判断)
list1=[i for i in range(a,100)]
print(list1)
if i5%2 ==0 and i%7 ==0
print(list1)
字典中 item 是键值对
字符串判断操作
is判断方法
startswitch 判断是否是哪个字符开头 (结果是true or False)
例子:name = "张三丰"
print(name.startswith("张"))
endswitch 判断是否是哪个字符结尾(结果是true or False)
例子:filename = "1.jpg"
if filename.endswith(".jpg") or filename.endswitch(".png")
print("这是一个图片")
格式转换类型
经常使用,有注意,使用性比较强
strip(占位符) 去字符串左右两侧占位符(用户输入数据有可能误操作,输入空格,这个时候就可以使用)
lstrip(占位符) 去字符串左侧占位符
ljust(长度,占位符) 左占位右侧补占位符
rjust(长度,占位符) 右占位左侧补占位符
center(长度,占位符) 两侧补占位符
zfill(长度) 左侧补0
注意: 省略占位符,默认为空白占位符
查询操作(判断语句的重点)
find 语句,没有找到返回 -1
第8天:
函数的参数(形参、实参)
1.*args 可变参数
2. sep 分隔符
print(“a”,"b","c",sep="+")
结果:a+b+c
3.字典参数(**kw args)
形参里面没有的形参,在实参中出现,用 **kwargs,输出为字典格式
作用:函数/方法多层级调用间的关键字参数传递
递归函数:
函数体内出现对自身函数的调用
递归的终止条件叫递归出口
函数调用的最大层级是1000
引用:查看数据在内存中的存储位置
print(id())
-5到256是python中的常用地址
在内存中已经分配好,不需要再分配地址,其他数字在赋值时要重新分配内存地址
__sizeof__查看内存占用的size空间
可变类型和不可变类型
可变类型: 不可变类型
列表 字符串
集合 元组
字典 数值型
对象 布尔型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |