黑马程序员技术交流社区
标题: python基础 [打印本页]
作者: 17858505526 时间: 2018-10-7 18:44
标题: python基础
硬件:运算器(CPU)、控制器(CPU)、存储器(内存条、硬盘、U盘)、输入设备和输出设备
软件:系统软件和应用软件
Python语言特点:简单、开源、可拓展性、有丰富的库、可移植性、面向对象、解释性、免费
Python2和Python3的区别
(1)Python2不识别中文,Python3可识别中文
(2)Python2整数型分为int和long,Python3整数型只有int
(3)Python2中,print可加可不加括号;Python3中,print是一个函数,必须使用括号
(4)Python2:raw_input、input(不常用);Python3:input(与Python2的raw_input相同)
关系运算符:从左到右看,哪边能确定整个式子的值结果就是哪边
面向对象的三大特征:封装、继承和多态
eval():把字符串中的内容变成真正可以执行的东西
基础语法
Day01
1.注释——说明性信息,不参与运行,可调试程序,记录工作日志,包括单行注释(Ctrl+/)、多行注释(也叫块注释)和“TODO”注释。
2.三种波浪线:红色—语法错误;灰色—格式不规范;绿色—拼写可能错误
3.算数运算符:加减乘除、取整(//)、取余取模(%)—取余对应于正整数,取模可用于负整数、次方(**)
4.变量:描述计算机中的数据存储空间,用于保存计算机中的数据。
变量命名规则:只能由数字、字母和下划线组成
不能以数字开头
不能是关键字
区分大小写
命名约定:下划线分隔法(first_name)、大驼峰命名法(FirstName)、小驼峰命名法(firstName)
Day02
1.变量类型
(1)数值型:int(integer,整型)、float(浮点型,表示小数)、boolean(布尔型,True表示1,False表示0)
(2)非数值型:string(字符串)
2.函数type():判断括号里的变量的类型
3.赋值运算符:=、+=、-=、*=、/=、//=、%=、**=(左边是空间,必须是变量,右边是数值)
4.字符串运算:“+”(将两个字符串连接在一起)、“*”(反复连接多个字符串)
5.输入函数input(“提示信息”),用来接收用户输入的信息,且得到的信息都是字符串,可进行类型转换——int()、float() 。(float不能转换成int,数值发生变化)
int/bool→float bool→int 字符串中的纯数字→int/float 字符串中的小数→float
6.格式化输出:print(“格式化输出字符” % (变量1,变量2……))
占位符:%s—字符串;%04d—整数,数字用于设置位数,不足用0来补;%.3f—小数,数字用于设置小数点后位数;%%—输出%
7.比较运算符:==、!=、>、<、>=、<=
8.字符串间的比较运算:0<1<…数字…<8<9<A<B<…大写字母…<Y<Z<a<b<…小写字母…<y<z
运算规则:1.对两个字符串中对应位置每个字符逐一比对
2.排序较小的整体字符串值小
3.如果比较结果相等,比较下一个字母,直到比对到最后一个字母
4. 若比对的一方没有字符,则整体字符串值小
9.关系(逻辑)运算符:and(并且)、or(或者)、 not(取反)
10.数字可以作为布尔表达式参与运算:非0数字表示True,0表示False
11.超长行处理:换行处使用“\”;在代码外加括号,括号内任意换行
12.计算机三种基础语句:顺序、分支、循环
Day03
1.while循环,包括两部分:while条件判断和条件成立时执行的代码。如果循环语句未设置合理的退出条件,则循环语句构成死循环,程序将永远执行下去。
2.break:结束当前循环;continue:结束当次循环
3.函数:加强代码的复用性,提高效率。函数文档注释即块注释
4.在函数中,如果局部变量和全局变量发生冲突,在其前面加global使局部变量提升为全局变量,先声明再使用。
5.使用变量接收不存在返回值的函数,结果为None
Day04
1.类是一系列事物的统称,同类事物必定具有相同的特征。类成员包括成员变量和成员办法。
2.类名命名规则:大驼峰命名法;函数名命名规则:小驼峰命名法
3.公有变量/属性在__init__()方法中声明,每个对象都具有该变量;独有变量在创建对象后声明,只有当前对象具有此变量。定义对象的独有变量时,如果独有变量名与公有变量名相同,视为修改公有变量的值;如果独有变量名与公有变量名不相同,视为定义新的独有属性
4.(1)__init__()方法在创建对象时被运行,为对象初始化成员变量,无需调用即可执行。在其它语种中也被称为构造方法。
(2)魔术方法是在类中声明、定义的方法,执行时无需手工调用,自动执行。
(3)__str__()方法是在使用print函数打印输出对象到屏幕时被调用的方法,用于返回(return)对象的规范化字符串表现形式。
5.封装操作可以对受访问保护的成员进行功能开放的控制,达到保护数据不被非法访问的目的。标准封装语法格式:
变量私有化格式:self.__属性名 = 值
提供公共的访问器格式:
def get_属性名(self):
return self.__属性名
提供公共的修改器格式:
def set_属性名(self,属性名):
self.__属性名 = 属性名
Day05
1.类变量推荐使用类名取值访问,也可以使用对象名取值访问;类变量只能通过类名修改;使用对象名调用类变量修改类变量的值时会创建新的对象独有变量;如果此时对象具有同名对象变量,则修改对应的变量值;类变量可以私有化。
2.类方法中不允许使用实例变量和实例方法;类方法中允许使用类变量和类方法,通过第一个参数cls进行;实例方法中允许使用类中的所有变量和所有方法,通过参数self进行。
3.静态方法的调用:类外——类名.方法名;对象名.方法名(推荐)
类内——self.方法名;cls.方法名
4.全局变量:直接写在文件中/函数中前面有global的
局部变量:函数中的一般变量/类中的方法中的不带self的变量
公有变量:类中的方法中的带self的变量
独有变量:不在类中定义,在创建对象后被定义
私有变量:前面带__的变量,不能在类外使用
类变量:不在方法中而在类中被定义的变量
5.子类可以添加父类中没有的变量和方法;父类中的私有成员不能被继承。
6. 在子类中访问父类被重写的方法
格式一:父类名.方法名(对象)
格式二:super(本类名,对象).方法名()
格式三 (推荐) :super().方法名()
7.一个对象具有多种形态,在不同的使用环境中以不同的形态展示其功能,称该对象具有多态特征。多态发生在继承关系的基础之上。
8.对象在语法层面满足调用关系,实际不具有对应的对象形态,称该对象此时具备鸭子类型。
Day06
1.列表(list):
append(data) | 末尾添加数据 |
insert(index,data) | 指定位置插入数据 |
extend(model) | 末尾添加参数对象的所有数据,可以是字符串 |
remove(data) | 删除指定的数据(第一次出现的) |
pop(index) | 获取并删除指定位置上的数据(无参数即删除末尾数据) |
clear() | 清空数据 |
index(data) | 查询指定数据对应的位置 |
count(data) | 统计指定数据的出现数量 |
2.元组(tuple):
自动组包——应用场景:设置函数返回值为多个值,return 1,2,3等同于return(1,2,3)
应用场景:动态字符串赋值传值方式print(“坐标%d,%d” % (10,20))
自动解包——应用场景:多个变量接收返回值, a,b,c = func()等同于 a,b,c = (1,2,3)等同于a,b,c = 1,2,3
应用场景:动态字符串赋值取值方,print(“坐标%d,%d” % (10,20)) 将10给第一个%d,将20给第二个%d
index(data) | 查询指定数据对应的位置 |
count(data) | 统计指定数据的出现数量 |
3.集合(set):存储无序不重复数据
add(data) | 末尾添加数据 |
remove(data) | 删除指定的数据 |
pop() | 获取并删除第一个数据 |
clear() | 清空数据 |
4.字典(dict):不具有索引的概念
pop(key) | 获取指定键对应的值,删除指定键对应的键值对 |
popitem(key) | 删除指定键对应的键值对 |
clear() | 清空字典中的数据 |
setdefault(key,value) | 添加新的键值对 |
update(dict) | 使用新字典中的数据对原始字典数据进行更新 |
get(key) | 获取指定键对应的值 |
keys() | 获取所有的键组成的列表数据 |
values() | 获取所有的值组成的列表数据 |
items() | 获取所有的键值对组成的列表数据 |
Day07
1.公共方法:len(model)、max(model)、min(model)。model为保存有数据的存储模型,接收各种容器。
2.切片:获取列表、元组或字符串中的局部数据。
基本语法:容器对象[开始索引:结束索引:步长
3.通用运算符
运算符 | 功能 | 格式 | 适用范围 |
+ | 将两个容器数据合并放入第一个容器 | list1 + list2 | 列表之间或元组之间 (列表与元组之间报错) |
* | 将容器数据复制n次放入容器中 | list1 * n | 列表、元组 |
in | 判断容器中是否包含数据 | data in list1 | 列表、元组、集合、字典 (字典判断数据是否在keys()中) |
not in | 判断容器中是否不包含数据 | data not in list1 | 列表、元组、集合、字典 (字典判断数据是否不在keys()中) |
>、>=、==、<=、< | 比较两个容器中的数据关系 | list1 <= list2 | 列表、元组 |
4.推导式:可以快速生成数据存储结构中的数据。基本语法:表达式 for循环 if判断
范例:list1 = [data for data in range(5) if data> 200]
5.字符串操作
str1 in str2 | 判断字符串str2是否包含字符串str1,返回True或False |
str1 not in str2 | 判断字符串str2是否不包含字符串str1,返回True或False |
islower() | 判断字符串是否全是由小写字母组成,返回True或False |
isupper() | 判断字符串是否全是由大写字母组成,返回True或False |
isdigit() | 判断字符串是否全是由数字组成,返回True或False |
isalpha() | 判断字符串是否全是由字母组成,返回True或False |
isalnum() | 判断字符串是否全是由数字和字母组成,返回True或False |
istitle() | 判断字符串是否满足单词首字母大写格式,返回True或False |
startswith(str) | 判断字符串是否以指定字符串开始,返回True或False |
endswith(str) | 判断字符串是否以指定字符串结束,返回True或False |
lower() | 字符串中所有字母转小写,支持英文字母,返回一个新的字符串 |
casefold() | 字符串中所有字母转小写,支持各种语言,返回一个新的字符串 |
upper() | 字符串中所有字母转大写,返回一个新的字符串 |
swapcase() | 字符串中字母大写转小写,小写转大写,返回一个新的字符串 |
title() | 字符串中每个单词首字母大写,其余字母小写(以空格区分单词),返回一个新的字符串 |
capitalize() | 字符串首个字母大写,其余字母小写,返回一个新的字符串 |
strip(str) | 去掉字符串左右两侧在参数字符串中包含的所有字符,返回一个新的字符串 |
ljust(len,str) | 使用指定字符在原始字符串右侧补充到长度指定值,返回一个新的字符串 |
center(len,str) | 使用指定字符在原始字符串两侧补充到长度指定值,左侧补充数量≥右侧补充数量,返回一个新的字符串 |
zfill(len) | 使用0在原始字符串左侧补充到长度指定值,小数点占1位,返回一个新的字符串 |
partition(str) | 从字符串左侧查找到参数后,将参数左侧、参数、参数右侧的三个字符串组成元组并返回 |
split(str) | 使用参数作为分割线将原始字符串拆分成若干个字符串并组成列表返回 |
splitlines(str) | 使用换行符作为分割线将原始字符串拆分成若干个字符串并组成列表返回 |
join(str) | 将参数填充到原始字符串的每个字符之间组成新的字符串并返回 |
find(str,begin,end) | 从左侧查找字符从指定开始位置到结束位置第一次出现的索引位置,若没找到返回-1 |
index(str,begin,end) | 从左侧查找字符从指定开始位置到结束位置第一次出现的索引位置,若没找到就报错 |
count(str) | 查询指定字符串在原始字符串中出现的次数 |
replace(old_str,new_str,num) | 使用新字符串替换原始字符串中的指定字符串信息 |
Day08
1. 默认参数指函数/方法在定义时为形参赋值,对应的形参称为默认参数。默认参数是一个参数定义期的概念,与调用无关。
2.函数/方法在调用时为指定名称的形参进行赋值,对应实参称关键字参数。关键字参数是一个参数调用期的概念,与定义无关。
3.函数/方法在定义时,定义一个特殊的形参,用于接收调用时传入的任意数量的实参,对应的形参称为可变参数。可变参数是一个参数定义期与调用期都有效的概念。
4.函数/方法在定义时,定义一个特殊的形参,用于接收未定义直接使用的关键字参数,对应的形参称为字典参数。
5.定义函数的参数时,先定义位置参数,再定义可变参数,然后定义默认参数,最后定义字典参数。
Day09
1. 引用是一种变量指向数据存储空间的现象。内存地址是数据在物理内存中的存储位置。引用地址是对象在内存中的描述性地址,该地址与内存地址有区别。
2. 使用固定内存地址存储数据如下:
(1)-5到256的整数
(2)True和False
(3)由字母、数字、下滑线组成的字符串
3. 可变类型数据:列表、集合、字典和对象
不可变类型数据:数值、字符串、布尔和元组
Day10
1. __new__方法用于定义创建对象时执行的操作,__new__方法仅仅为用户提供一个创建对象时干预的入口,真正执行创建对象的操作由object类中的__new__方法完成。__new__方法是静态方法。
2. del操作的实质是断开变量与内存数据之间的引用,操作del执行后等同于对应变量未进行过定义。
3. __del__方法用于定义对象不存在任何引用时执行的操作。当对象断开了与最后一个变量之间的引用关系时,将自动执行该对象的__new__方法。
4.“==”操作针对判定的内容不同,规则不同。例如数值性数据比较数值的大小,不考虑是整数还是小数。字符串比较字符串的内容是否相同,不考虑引用地址是否相同。“is”操作只针对地址进行判定,只要地址相同即返回True,否则返回False。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |