python作者吉多(鬼叔)
第一个python解释器诞生于1991年
python目前存在两大版本,python2.7 python3.6主流版本python3
python简单 易学 开源 扩展性强 有丰富的库
python可以用来做web网站、网络爬虫、操作系统管理
python基础语法
注释: # 单行注释. """多行注释""",一对三引号
注释快捷键 ctrl + /
变量
变量名必须由字母、下划线、数字组成,且数字不能开头;python中的标识符是区分大小写的;变量名一般用小写加下划线组成;不能和关键字和已有的名字冲突;变量名一定要有意义,提升代码可读性。
变量是用来临时存储程序运行中所需要的一些数据的
在现实生活中,数据有多种类型,文本类型,数值类型的,变量类型约定了变量之间的计算规则。
int integer(整数) float(浮点数 小数) str string(字符串类型 文本) bool(布尔类型)
python里面定义变量不需要指定类型,根据赋的值来推断变量类型
字符串和数字的运算规则:数字和数字之间可以进行所有的运算;数字和字符串之间只能进行乘法运算;字符串和字符串之间只能进行加法运算。
变量的输入和输出 i/o input output
标准i/o标准输入和输出 从键盘读 往屏幕写
文件i/o 从文件读,往文件写
网络i/o
\n表示换行符,和字符 a本质上是一样的。
变量的类型转换:
1、int(val),将变量val转换为int类型
2、float(val),将变量val转换为float类型
3、str(val),将变量val转换为str类型
bug,臭虫
1、bug会导致程序崩溃,终止运行。语法错误;对语法理解不到位;手误
2、bug会导致程序的执行结果不是预期
都必须能够定位错误,找出错误原因,更正程序。碰到的每个问题都需要记录。
if语句。 if elif else
==判断两个数值是否相等,=赋值
逻辑运算符:and or not
多个条件之间的关系 and or not,and和or用于连接多个条件,表示多个条件之间的关系
random 随机,random.randint(1,100)表示随机取1-100的整数 包含1和100
获取1-100随机数:import random print(random.randint(1, 100))
循环语句while:重复执行一行或多行代码
continue:当执行continue,continue后面的代码不再执行,直接回到while后面的条件重新判断本次循环,不能退出循环。只有在循环中才能够写continue
break:break后面的代码也不执行,并且马上终止循环
函数
1、函数就是实现某一个功能的一段代码。
为什么要使用函数:减少代码的冗余,减少维护量,功能的封装,降低学习成本,提升开发速度
python中函数用def来定义函数 define
函数定义不会自动执行,需要调用才能执行
函数内定义的变量,在函数外部不能够使用
2、在编写的函数的时候如何确定我的函数应该有几个参数?
函数有没有参数、有几个参数由需求决定,由函数的要实现的功能来决定。
3、函数的返回值:
使用调试模式:1、先加断点 2启动调试模式
4、none 表示什么都没有,也没有类型
5、print函数和return语句的区别?
1、print是一个函数,只是一个功能,return是一个语句,和def if 等类似
2、print会将数据打印到屏幕上,return会将数据返回到程序中,给函数的调用者
6、函数的返回值到底应该有没有?
由你要编写的函数功能来决定。
7、调用函数时,即传递位置参数,又传递关键字参数,此时需注意:*****位置参数一定要在关键字参数的前面*****
8、return关键字:
当函数执行到return的时候,就会马上终止韩式执行
函数中可以出现多个return,但有且只有一个return会执行
return后面可以不跟值,return单独使用等价于return none
判断一个东西是不是我们要的类型用isinstance
>>>a = 10
>>>isinstance(a, int)
ture
9、# 再给函数形参设置默认参数时,并不会给所有的参数都设置默认值
# 注意点:如果某一个位置形参设置了默认参数,那么该位置之后的所有参数都必须设置默认参数
10、局部变量和全局变量
局部变量:函数内部定义的变量,只在定义的函数内可以用
全局变量:函数外部定义的变量,可被当前python文件内的所有函数可用
11、变量:就近原则;变量要先定义再使用;
作用域:表示变量能够使用的范围
12、函数文档相当于函数注释,按f1(mac)或者ctrl+q(windows)可以查看函数功能说明
docstring
13、单一职责原则:一个函数只负责一个事情,职责过多会把职责混合在一起,一个职责的变化可能会影响其他职责的能力
容器
优势:一个容器变量可存储多个元素,减少了变量的定义。本质上可以统一管理 方便操作。
分类:序列式容器 非序列式容器
序列式容器的索引都是从0开始的
#字符串通过点的方式调用专属的函数。 某某.replace('还','换',1)
字符串特点:
a、字符串一旦定义不允许修改
b、字符串容器中的元素都是字符类型的
列表:
字符串中的元素不能修改,而且元素类型单一,而列表中的元素可以修改,并且可以存放多种类型的元素
列表支持:位置删除(尾部删除、指定位置删除)、 值删除。
对于列表而言 尾部效率高一些,不需要移动元素;指定位置插入效率较低。位置删除在尾部删除效率比较高 不需要移动元素
列表缺点:在指定位置插入和删除元素,会造成数据元素的移动,效率较低;根据关键字去查找数据的话,效率比较低
列表优点:根据索引查找元素效率高;尾部插入和删除元素效率较高。
insert 在指定位置插入
append 在尾部插入
pop 删除尾部元素或者删除指定位置元素
remove 删除指定值的元素
clear 清空列表
sort 对列表中的元素进行排序,默认升序(从小到大),需要指定reverse=true,可以实现将序排列
reverse 对列表中的元素进行逆序
index 根据值查找某个元素,并返回该元素在列表中的索引,如果查找失败,会报错,终止程序运行。
extend 将一个列表中的所有元素追加到当前列表的尾部。
元组 tuple
元组 可以从语法的层面来限制数据的意外修改;元祖使用小括号来定义
# 注意:如果元组中只有一个元素的话,需要在元素后添加逗号
元组是序列式容器,支持索引、切片操作。元组比列表更节省时间
字典
字典的查找效率比较高,但是比较占内存。
注意:键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
字典的键不能重复,值是可以重复
字典是非序列式容器,不支持索引,也不支持切片
文件
文件打开分为两种:文本模式、二进制模式
r w a rb wb ab
mac操作系统:djsfoienwfiuhfjbjjd\r
Windows:djaihriguserjslkndfcdvkj\r\n
Linux 操作系统:djafhdkfjsfkjksj\n
程序:hello world
-->windows hello world\r\n
-->Mac. hello world\r
-->linux hello world\n
打开文件用的文本模式,会进行换行符的转换
打开文件用的是二进制模式的话,不会进行换行符转换
文件本质上都是以二进制方式存储在磁盘上的。