常见内置函数
abs() 求绝对值
all() 全部都为True的情况结果才为True
any() 有一个为True的情况结果就为True
bin() 十进制转其他进制
int() 其他进制转十进制
bytes() 转换
chr() 根据ASCII码将数字转换成字母
ord() 根据ASCII码将字母转换成数字
dir() 获取对象内部可以通过句点符获取数据
callable() 判断某个变量是否可以通过加括号调用
divmod() 获取除法后的整数和余数
enumerate() 返回一个枚举对象
eval() 用于一个字符串的表达式 并返回一个表达式一个计算结果 执行比较简单的
exex() 用于执行村粗在字符串和文件中的表达式 能执行比较复杂的
hash() 能够返回一串随机数字
help() 查看帮助信息
isinstance() 判断某个数据是否属于某个数据类型
pow() 幂指数
round() 函数的四舍五入
可迭代对象
迭代就是更新换代 每次都是基于上次的结果
当内置方法有__iter__放大的都可以叫迭代对象
可迭代的有字符串 字典 列表 元组 集合 文件对象
不可迭代的有 整型 浮点型 布尔值 函数名
可迭代的都是能够支持for循环的
迭代器对象
1迭代器给我们提供了一个不依赖索引取值的方式 可以对字典 元组这类无序的进行取值
2当调用内置的时候显示有__iter和___next___都是迭代器对象
3当可迭代对象调用__iter__后就被成迭代器对象 迭代器自己调用__iter__不管多少次都是迭代器对象
for循环的本质
for 变量名 in 可迭代的对象
for循环体代码
for会自动将in后面的数据调用__iter__()变成别带起对象
在后面的每次循环都会调用__next__()取值
在最后没有可取值的时候__next__()会报错 for能够自行处理这个错误 让循环体正常结束
异常捕获
异常就是程序运行的过程中出现了异常会导致整个程序结束
关键字line所在行就是提醒哪一行代码错误
在最后一行冒号左侧是错误的类型 右侧是错误的具体原因 也是报错的关键
异常分为语法和逻辑两种错误 前者是不许出现的 后者出现了可以进行修改
tre:
可能出现错误的代码
except 错误的类型 as e e是指具体的错误原因
else 当上一层代码代码没有出错正常的情况下会执行
finally 当上两层代码都没有出错的情况下会执行
生成器对象
本质就是迭代器对象 一个是直接调用内置即可 一个是需要我们自己敲出来的
生成器是为了优化代码 也是帮我们节省内存空间
当函数体代码有yield关键字 函数名第一次加括号调用不会执行函数体代码 二是普通的函数变成了迭代器也就是生成器返回值
yield在函数体整体代码出现多次每次调用__next__方法都会从上往下依次执行直到遇到yield代码停下不走
当lield后面有数支就会像return一样放回 如果是多个数据值用逗号隔开组成元组返回
迭代器和索引取值
索引可以随意取值但是对无序的无法取值
迭代是一种通用的取值方式 一旦开始就无法回头
模块简介
可以把模块堪成事一系列功能的结合体 当我们调用模块的时候就相当于调用了一系列功能
模块有内置 自定义 和第三方的
模块可以用py文件 含有多个不同功能的py文件表现出来
导入模块的两种方式
一个是import句式
优点就是通过模块名+.的方式可以使用到模块内所有的名字 而且不会有冲突
缺点就是什么都可以点
一个事from...import...句式
优点是直接指名道姓的使用并不需要加上模块的前缀
缺点是两者容易产生冲突 而且绑定的关系也被修改了
当同一个程序反复导入相同的模块 导入的句式只能执行一次
补充
起别名:在后面加上as和自己想修改的名字 当文件名很复杂的时候也可以同样操作
导入多个名字:如果是import aaa,bbb,ccc 除非是模块功能非常相似 可以 不相似还是分开写
全导入:需要使用模块中很多名字的时候只能使用from...import..句式
from aaa import * 这个* 表示全部所有的意思
对* 号可以使用控制名字的数量 在模块里面使用__all__=[字符串的名字]控制* 能够获取的名字
判断文件的类型
在以后的程序运行中可能涉及到的文件不止一个
所有的py文件都自带一个__name__内置名
当py文件时执行文件时__name__的结果时__main__
当py文件是被导入文件的时候__name__的结果时模块名也就是文件名
__name__主要__用于开发者测试自己的代码使用
if __name__=='__main__':
当文件是执行文件时才会执行if的子代码
绝对导入与相对导入
绝对导入:就是以执行文件所在sys.path为起始路径往下一层层的找
在pycharm中会自动添加到sys.path中 如果不使用pycharm运行则需要将项目喝目录添加到sys.path中去
相对导入:相对路径可以参考执行文件所在路径 直接以当前模块文件路径为准
<1只能在模块文件中使用 不能在执行文件中使用
<2 相对导入在项目复杂的情况下可能会出错
. 在路径中意思时当前路径
.. 在路径中意识时上一层路径
../..在路径中表示上上一层路径
软件开发目录规范
1 bin文件夹 用于存储程序的启动文件 start.py
2 conf文件夹 用于存储程序的配置文件 settings.py
3 core文件夹 用于存储程序的核心逻辑 src.py
4 lib文件夹 用于存储公共功能 common.py
5 db文件夹 用于存储程序的数据文件 userinfo.txt
6 log文件夹 用于存储程序的日志文件 log.log
7 interface文件夹 用于存储程序的接口文件 user.py ...
8 readme文件(文本文件) 用于编写程序的说明 介绍 广告
9 requirments.txt文件 用于存储所需第三方模块名称和版本
在编写软件的时候可以不完全遵循上面的文件名
start.py可以放在bin文件夹下也可以直接放在项目的根目录
db文件夹等后续会被数据库软件替代
log文件夹等后续会被专门的日志服务替代
常见内置模块
collections模块提供了很多的数据类型
时间模块time的三种格式
时间戳 print(time.time())从1970年到目前的时间秒数 从1970年到目前的时间秒数
结构化时间 print(time.gmttime())获取标准时间
格式化时间 print(time.strftime(’%Y-%m-%d %H:%M:%S’))获取当地时间