首页 > 编程语言 >Python 笔记

Python 笔记

时间:2022-11-18 18:08:59浏览次数:45  
标签:闭包 函数 Python namespace 笔记 对象 json

Python 笔记

记录写 Python 需要注意的问题,以及一些技巧。

在 Python 中 Everything is Object

Python 中的模块

  1. standard modules
  2. built-in modules
  3. dynamic modules

命名空间

a = 10
# a是一个在名字空间中的名字
# 10是一个整数对象在对象空间中
  • 名字空间是一个字典,他是 name-objects 的映射
  • 函数对象有一个名空间叫 local namespace
  • 每一个模块有自己的名空间叫 global namespace
  • Python中有一个模块叫 built-in 这个模块的 global namespace 就是built-in-namespace

名字查找顺序

Python中遇到一个变量会按照这样的顺序进行搜索

Local->当前作用域被嵌入的本地作用域(Enclosing locals)-> Global -> Built-in

写操作将会打断往外层 namespace 的查找过程

Python 闭包

闭包并不只是一个Python中的概念,在函数式编程语言中应用较为广泛。理解 Python 中的闭 包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想。概念介绍:首先看一下维基上对闭包的解释,在计算机科学中,闭包(英语:Closure),又称词法闭包(LexicalClosure)或函数闭包 (functionclosures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是自由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。实际上闭包可以看做一种更加广义的函数概念。因为其己经不再是传统意义上定义的函数。

Python 反射

pass

Python 高级主题

pass

Python 自省

自省就是面向对象的语言所写的程序在运行时所能知道对象的类型。运行时能够获得对象的类型。相关函数如下:

  • type()
  • dir() 返回一个名字列表,可以通过obj.XXX访问的名字。方法名不在其中。
  • getattr()
  • hasattr()
  • isinstance()

obj.__dict__
__dict__ : a map of (name,object) pairs

newinstancemethod 会修改对象的名空间

Python 协程

进程和线程都面临着内核态和用户态切换的问题,协程就是用户自己控制切换的时机,不需要陷入系统的内核态.

== 和 is

Semantics of "=="

两个值相等

Semantics of "is"

两个是同一个对象

Python 对象

  1. id() 判断对象的地址。
  2. Python 小对象池,其中包括 str 或者 int 类型,Python 的编译选项可设置大小。
  3. NoneType None只有一份,bool 类型 True和False只有一份。

Python 网络编程

  1. Python 使用 socket socket() 来创建关键字
  2. 再将套接字 ip 与 port 绑定
  3. 服务端调用 accept() 方法来接收客户端

Python Json

  1. json.dumps将 Python 对象编码为 json 字符串
  2. json.loads将已经编码的 json 字符串解码为 Python 对象
data = [{'a':1,'b':2,'c':3}]
jsonstr = json.dumps(data)
print jsonstr
# 对象.dumps生成 json 字符串
# json字符串.loads 生成 python 对象

Note

  1. 最好使用不可变参数做默认参数
  2. 可变对象容易缓存
  3. 函数的默认参数保存在函数对象中
  4. print 在2.x版本中是关键字
  5. 大量列表元素需要遍历可以使用生成器,将列表解析中的[]换成()
  6. range()产生一个list,xrange()产生一个迭代器

标签:闭包,函数,Python,namespace,笔记,对象,json
From: https://www.cnblogs.com/qwerty-ll/p/16904098.html

相关文章

  • c++ 调用 python 数据类型对照表
    ParsingargumentsandbuildingvaluesThesefunctionsareusefulwhencreatingyourownextensionsfunctionsandmethods.Additionalinformationandexamplesa......
  • python-etcd
    安装pipinstallpython-etcdp查询所有的keys,或者以某个前缀的keysetcdctlget--prefix""etcdctlget--prefix "/nodes"只列出keys,不显示值etcdctlget--pre......
  • 加速python代码
    jupyter:jupytext:text_representation:extension:.mdformat_name:markdownformat_version:'1.2'jupytext_version:1.4.1kern......
  • python零基础入门教程(非常详细),从零基础入门到精通,看完这一篇就够了
    前言本文罗列了了python零基础入门到精通的详细教程,内容均以知识目录的形式展开。第一章:python基础之markdownTypora软件下载Typora基本使用Typora补充说明编程与编......
  • python每执行10次休息一会
       importtimen=0whilen<10:print(n,"删除数据成功")n=n+1ifn==10:n=0time.sleep(5)continueimportt......
  • stream流学习笔记
    List<Student>students=newArrayList<>();students.add(newStudent(1,19,"张三","M",true));students.add(newStudent(1,18,"张三1","M",f......
  • python 入门 3 列表2
    1.组织列表创建列表时,元素的排列顺序通常是无法预测的。你希望保留列表的最初排序顺序,但客户又要求调整排列顺序。在这种情况,我们就可以使用多种组织排序的方式。1、for......
  • RabbitMQ学习笔记(二)
    二利用RabbitMQ基本用法,开发项目2.1RabbitMQ消息交换的关键是什么?1.AMQP协议架构AMQP协议直接定义了RabbitMQ的内部结构和外部行为我们使用RabbitMQ本质上是在使用A......
  • Python 写入文件、读取文件内容——open函数/readLines/Write/find函数用法
    1、读取.txt整个文件ww.txt文件在程序文件所在的目录,在文件存储在其他地方,ww.txt需要添加文件路径,如:E:\book1\ww.txt;读取后希望返回的是列表类型,将read改为readlineswit......
  • c++ 调用 python 备忘
    PyBytesObject值的获取:PyObject*pFuncSetCredentialResult=PyObject_CallObject(pFuncSetCredential,pFuncSetCredentialArgs);PyBytesObject*pBytes......