Python笔记

本文深入探讨Python编程的关键概念,包括循环对象的处理、赋值语句的多种形式、列表解析与生成器的区别、函数参数的高级用法以及装饰器的应用。同时,介绍了Python的开发工具、编解码机制和变量作用域的LEGB原则。

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 变量的作用域完全是由于变量在程序文件中源代码的位置决定的,而不是由函数决定的

  1. 内嵌的模块是全局作用域
  2. 全局作用域的作用范围仅限于单个文件
  3. 每次对函数的调用都创建了一个新的本地作用域
  4. 赋值的变量名除非全局变量或非本地变量,否则均为本地变量
  5. 所有其他的变量名都可以归纳为本地,全局或者内置的

12 变量名解析:LEGB原则

13 给函数传递参数:

  1. 参数的传递是通过自动将对象复制给本地变量名来实现的
  2. 在函数的内部的参数名的赋值不会影响调用者
  3. 改变函数的可变对象参数的值也许会对调用者有影响
    1.不可变参数"通过值"进行传递
    2.可变对象是通过"指针"进行传递

14 参数匹配模型

  1. 位置:从左至右进行匹配

  2. 关键字参数:通过参数名进行匹配

  3. 默认参数:对没有传入值得参数定义参数值

  4. 可变参数:收集任意多基于位置或关键字的参数

  5. 可变参数解包:传递任意多的基于位置或关键字的参数

  6. 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 列表解析

  1. 方括号的列表解析会一次在内存中产生结果列表
  2. 位于圆括号中时,实际上是生成器表达式

16 生成器

生成器都是单迭代对象,如果手动地使用多个迭代器来迭代结果流,它们将会指向相同的位置,此外,一旦任何迭代器运行到完成,所有的迭代器都将用尽

17 部分开发工具

  1. PyDoc和文档字符串
  2. PyChecker和Pylint
  3. PyUnit
  4. doctest
  5. IDE—eclispe,PyCharm等
  6. 配置工具—profile是标准库模块,为Python实现源代码配置工具
  7. 调试器—python提供一个命令行源代码调式器模块,称为pdb
  8. 发布的选择
  9. 优化选项

18 编解码

  1. 编码是根据一个想要的编码名称,把一个字符串翻译为其原始字节形式
  2. 解码是根据其编码名称,把一个原始字节串翻译为字符串形式的过程

19 装饰器

Python装饰器的两种相关的呈现形式:
1.函数装饰器在函数定义的时候进行名称重绑定,提供一份逻辑层来管理函数和方法或随后对它们的调用
2.类装饰器在类定义的时候进行名称重绑定,提供一个逻辑层来管理类,或管理随后调用它们所创建的示例

20 元类(了解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值