python学习笔记——肆

第四周

  

 

装饰器

本质是函数,装饰其他函数,为其他函数添加附加功能。

原则:

1 不能修改被装饰函数的源代码

2 不能修改被装饰函数的调用方式

 

 

 

 

函数就是一个变量

相当于把函数体赋值给函数名

 

当垃圾回收时,会在内存里清空没有被引用的值

x=1  说明x引用了1 不会被回收

匿名函数 没有名字 没有被引用 会被回收

 

 

例子:一

bar传的是内存地址,加上()就能运行

直接传bar()相当与把返回结果传进去了

 

例子2 没有改变bar()的调用过程

 

 

 

函数的嵌套

  在函数里用def声明一个函数,bar函数相当于一个局部变量,外部无法调用

 

 

高潮版

在装饰器上加的命名参数

会被装饰器最外层的函数获取

 

   给被装饰者bbs的参数,会被

            装饰函数内部的函数获取

 

 

 

列表生成器,外边是[],一次性产生所有的数据                                                                                                                                                                                                       。

 

 

 

生成器,外边是(),调用_next_,才获取。

 

生成器。只有在调用时才会生成相对应的数据

只记录当前的位置

只有_next_()方法可以使用 python3

python2 不加左右下划线next()

 

斐波那契数列,除了第一个和第二个数外,任意一个数都可以由前两个数相加得到。

 

中间有yield的存在,def fib不再是一个函数,而是一个生成器

返回值 done 实际返回的是 错误信息,只有在报错的时候才会打印

正常调用fib,只会返回一个生成器

Yield记录了生成器的位置状态,每执行一次next操作,方法都会回到yield位置

在实际运行中是看不到的

 

 

 

python中的异常处理

 

 

 

 

生产者

 

 

 

 迭代器

 

注意的可迭代对象和迭代器的区别

 

 

dar(引用名) 。可以看出此引用有多少方法,有next方法的才叫做迭代器

 

 

  isinstance(引用,Iterable) 判断对象是否是可迭代对象(可循环的)

 

  isinstance(引用,Iterator) 判断对象是否是可迭代器对象

 

判断是否是迭代对象

 

 

判断是否是迭代器对象

 

 

 

 

 

 

迭代器的计算是惰性的,用到时再计算,

 

For循环就是一个迭代器

 

 

Python内置方法

 

abc求绝对值(正负都得正)

a=abs(-7)
print(a)

输出 7

 

 all判断可迭代的对象,中所有的元素是否为真(不等于0)

 

输出
print(all(b))

 

 

 

any 判断可迭代的对象,有一个以上的元素 是否为真(只要有一个不是0,或者不是None(空)就返回True)

 

输出

 

 

  ascii 把内存对象变成一个可打印的 字符串

 

bin 把数字转成2进制

 

输出

 

 

 

bool判断真假  0和 空 为 Flase

 

 

 

 

Bytearry把二进制变成一个列表的格式可以修改

 

 

 

bytes把字符串变成 byte类型

 

 

输出

 

 

 

 

callable

判断是否是可调用的类型(函数,类)

 

输出

True

 

 

 

Car()把数字转化成 ASCII码相对应的 字符

 

输出

 

 


Ord()把ASCII码相对应的字符转化成 数字

 

 

输出

 

 

 

 

 exex()可以把字符串 转成代码执行

 

输出

 

 

 

 

  dir 查看内置方法

a=(1,2)
print(dir(a))

输出

 

 

 

divmod求两数相除后的 整数值 余数

 

输出

 

evel根据字符串的格式将其转化为 列表,元组,字典,集合

输出

 

 

 

 

Lambda匿名函数 方法体是n:后边的

 

 

 

输出

 

 

filter过滤

例子:过滤得到5以上的元素

得到res一个迭代器,然后循环输出

 

输出

 

 

 

Map将 引用中 的每个元素,拿出来进行操作

目标可以是 列表,元组,集合,字典(只会对key进行操作)

    

       

      

输出                             

 

字典的输出

 

 

 

frozenset把数据变成不可更改的

 

a=[1,2,4]
frozenset(a)

 

 

 

globals()打印当前程序的全局变量

按照key:velue的方式打印出来 包含文件名 地址

 

 

 

locals()打印当前程序的 局部变量

 

 

 

 

 

 

 

 

 

 

Hash

把字符串在转成相应的数字,在数据类型中,通过转化成的数字排序后,判断数据所在的位置,从而实现快速查找。这是在内部实现的。

 

 

 

 

输出

 

 

 

 

hex()转成16进制

 

 

Max 得到列表最大值

 

输出

 

Min得到列表最小值

 

 

Pow()计算 几次方

Pow()计算2的3次方

 

输出:

 

 

 

 

 

 round保留小数点后面的 几位

 

 

 

 

 

sorted()给字典排序

 

输出 按照key进行排序

 

 

 

输出 按照velue进行排序

 

输出

 

 

 

 

Zip拉链

将两个列表合并到一起 变成为n个元组,数据一一对应

如果a b元素个数不一样。就会忽略后面几个元素,如下图

  

 

输出

 

 

 

 

 

__import__ 调用执行 其他程序的方法

方法一:

from work.day04.Atm.core.user_name import user

Json

只能处理简单的数据类型

列表 元组 字典 集合

无法处理 函数

 

json序列化

 

 

json反序列化

 

 

 

 

函数序列化 需要使用

import pickle

pickle.dump(

 

 

 

 

获得程序文件位置路径,调用方法时很有用

 

输出

 

 

调用其他包的函数

 

 

 

 

项目目录结构

 

 

 

 

 

 

  1. bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
  2. foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/存放单元测试代码; (3) 程序的入口最好命名为main.py
  3. docs/: 存放一些文档。
  4. setup.py: 安装、部署、打包的脚本。
  5. requirements.txt: 存放软件依赖的外部Python包列表。
  6. README: 项目说明文件。

 

 

关于README的内容

这个我觉得是每个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。

它需要说明以下几个事项:

    1. 软件定位,软件的基本功能。
    2. 运行代码的方法: 安装环境、启动命令等。
    3. 简要的使用说明。
    4. 代码目录结构说明,更详细点可以说明软件的基本原理。
    5. 常见问题说明。
原文地址:https://www.cnblogs.com/HL-blog/p/7421043.html