python学习笔记20210329

装饰器加载顺序:自下而上

装饰器执行顺序:自上而下

yield 表达式:x=yield          然后用send() 将send中的值传递给yield 前的x

三元表达式:res=值1 if 表达式 else 值 2

列表生成式:[表达式  for iterm in list if 判断表达式]

字典生成式:{k:v for k,v in 元组 if 判断表达式}

集合生成式:{key for key in keys}

生成器:(i for i in range(10) if i>0)

sum(len(line) for line in f)         求文件字符数

递归的本质就是循环,但不应该无限调用下午,必须在某种条件下停止递归

一段代码循环运行的方式:用while true,函数递归

回溯:一层一层调下去

递推:结束递归调用,然后一层一层 返回去

算法:高效解决问题的方法

二分法:进行有序列表中的查找

        找到列表中间的值

lamda 参数:表达式

map(函数,可迭代对象),函数可以是匿名函数,得到一个生成器

filter(函数,可迭代对象),返回为真的值

模块:一系列功能的集合体,分为三类:内置的模块,第三方的模块,自定义的模块

from   ..    import   *

导入的模块默认有__all__变量

import xxx  as  x

导入模块的变量和方法的地址,注意看的是定义阶段,不管运行阶段

循环导入:指a导入b,b又通过其他导入a

尽量避免循环导入

不要导入为全局变量,导入成局部变量

import 导入查找的优先级问题:内存>>>>>>sys.path中>>>>>>

sys.modules,包含了所有的模块字典

sys.path 当模块在现在执行文件的下层或平级文件夹里面时,可以用sys.path.append()

模块建议结构:先定义全局变量,再定义类,再定义方法

                            ":"  后跟提示信息, 可以用__annotations__查看

包:    包就是一个包含有__init__.py文件的文件夹

         包是模块的一种形式,被当做模块使用

         包是用来被导入的,不是为了运行的

         导包时运行的是其下的__init__.py

环境变量都是以执行文件为准的,所有被导入的模块或者后续的其他文件引用的sys.path都是

        参照执行文件的sys.path

包绝对导入需要注意的内容:

        1.关于包相关的导入语句也分为import和from...import...两种,但是无论哪种,无论在什么

        位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,

        否则非法。可以带有一连串的点,如import顶级包.子包.子模块,但都必须遵循这个原则。

        但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类

        (它们都可以用点的方式调用自己的属性)。

        2、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

        3、import导入文件时,产生名称空间中的名字来源于文件,import包,产生的名称空间的

        名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

相对导入:    .代表当前文件所在的目录,..代表上一级目录,依此类推,.不能超出包的范围

包内导入推荐使用相对导入

__file__  显示当前文件或文件夹的绝对路径

用os.path.dirname(文件/文件夹),获取该文件和文件夹的父文件夹,给一个变量后,

        可以固定住该变量供其他变量使用

你可能感兴趣的:(python学习笔记20210329)