1 如果遇到一个复合对象包含指向自身的引用,就称之为循环对象.无论何时Python在对象中检测到循环,都会打印成[…],而不会陷入无限循环.
2 如果需要的话,可以通过分片,合并等操作来创建一个新的对象,然后赋值给原引用,这样可以改变不可变对象.
3 嵌套代码块中的语句缩进相同数目的制表符
4 赋值语句的形式
运算 | 解释 |
---|---|
spam = ‘Spam’ | 基本形式 |
spam, ham =‘yum’,‘spam’ | 元祖赋值运算 |
[spam,ham]=[‘yum’,‘asd’] | 列表赋值运算 |
a,b,c,d=‘spam’ | 序列赋值运算 |
a,*b=‘spam’ | 扩展的序列解包 |
spam =ham =‘lunch’ | 多目标赋值运算 ham=‘lunch’ spam=ham |
spam += 42 | 增强赋值运算 |
5 区分大小写:aaa和AAA并不相同
6 while和for都是循环语句,for更加简单效率
7 并行遍历:zip
zip会取一个或多个序列为参数,返回一个元祖列表,会以最短的序列长度来截断所得的元祖
L1=[1,2,3]
L2=[4,5,6,7]
list(zip(L1,L2))
>>[(1,4),(2,5),(3,6)]
8 内置函数 any(可迭代对象) 可迭代对象的任何项为真的时候,返回true
内置函数all(可迭代对象) 可迭代对象的所有项为真的时候,返回true
9 一定使用括号调用函数------如:file.close()
10 nonlocal声明了将要赋值的一个封闭的函数变量
11 变量的作用域完全是由于变量在程序文件中源代码的位置决定的,而不是由函数决定的
- 内嵌的模块是全局作用域
- 全局作用域的作用范围仅限于单个文件
- 每次对函数的调用都创建了一个新的本地作用域
- 赋值的变量名除非全局变量或非本地变量,否则均为本地变量
- 所有其他的变量名都可以归纳为本地,全局或者内置的
12 变量名解析:LEGB原则
13 给函数传递参数:
- 参数的传递是通过自动将对象复制给本地变量名来实现的
- 在函数的内部的参数名的赋值不会影响调用者
- 改变函数的可变对象参数的值也许会对调用者有影响
1.不可变参数"通过值"进行传递
2.可变对象是通过"指针"进行传递
14 参数匹配模型
-
位置:从左至右进行匹配
-
关键字参数:通过参数名进行匹配
-
默认参数:对没有传入值得参数定义参数值
-
可变参数:收集任意多基于位置或关键字的参数
-
可变参数解包:传递任意多的基于位置或关键字的参数
-
Keyword-only参数:参数必须按照名称传递
例如:出现在参数列表中的*args之后,所有这些参数必须在调用中使用关键字语法来传递 def kwonly(a, *b, c): print(a,b,c) kwonly(1,2,c=3) ---->1,(2,),3 kwonly(1,2,3) ----->TypeError:kwonly() needs keyword-only argument c 注意:keyword-only参数必须在一个单个星号后面指定,而不是两个星号----命名的参数不能出现在**args任意关键字形式的后面,并且一个**不能独自出现在参数列表中 def kwonly(a,**pargs,b,c) --->SyntaxError:invalid syntax def kwonly(a,**,b,c) ---->SyntaxError:invalid syntax 一个参数名称出现在*args之前,它可能是默认位置参数,而不是keyword-only参数 def f(a,c=6,*b,**d): print(a,b,c,d) f(1,2,3,x=4)--->1 (3,) 2 {'x':4}
15 列表解析
- 方括号的列表解析会一次在内存中产生结果列表
- 位于圆括号中时,实际上是生成器表达式
16 生成器
生成器都是单迭代对象,如果手动地使用多个迭代器来迭代结果流,它们将会指向相同的位置,此外,一旦任何迭代器运行到完成,所有的迭代器都将用尽
17 部分开发工具
- PyDoc和文档字符串
- PyChecker和Pylint
- PyUnit
- doctest
- IDE—eclispe,PyCharm等
- 配置工具—profile是标准库模块,为Python实现源代码配置工具
- 调试器—python提供一个命令行源代码调式器模块,称为pdb
- 发布的选择
- 优化选项
18 编解码
- 编码是根据一个想要的编码名称,把一个字符串翻译为其原始字节形式
- 解码是根据其编码名称,把一个原始字节串翻译为字符串形式的过程
19 装饰器
Python装饰器的两种相关的呈现形式:
1.函数装饰器在函数定义的时候进行名称重绑定,提供一份逻辑层来管理函数和方法或随后对它们的调用
2.类装饰器在类定义的时候进行名称重绑定,提供一个逻辑层来管理类,或管理随后调用它们所创建的示例
20 元类(了解)