python语法笔记(五)

1、python内存管理 
(1)对象内存使用 
&nsbp;&nsbp;&nsbp;&nsbp;在python中通过执行内建函数 id(obj) 可以获得对象obj在内存中的地址。在python中,整数和短小的字符,python都会缓存这些对象,以便重复使用。当我们创建多个等于1的引用时,实际上是让所有这些引用指向同一个对象

a = 1
b = 1print(id(a))
print(id(b))

    python中,通过is关键字可以判断两个引用是否指向同一个对象,即 obj1 is obj2 <===> id(obj1) 是否等于 id(obj2)

# True
a = 1
b = 1
print(a is b)# True
a = "good"
b = "good"
print(a is b)# False
a = "very good morning"
b = "very good morning"
print(a is b)# False
a = []
b = []
print(a is b)由于Python缓存了整数和短字符串,因此每个对象只存有一份。比如,所有整数1的引用都指向同一对象。
即使使用赋值语句,也只是创造了新的引用,
而不是对象本身。长的字符串和其它对象可以有多个相同的对象,可以使用赋值语句创建出新的对象。

 

 


    在python中,每个对象都有存有指向该对象的引用总数,即引用计数。通过sys包中的getrefcount()方法可以查看某个对象的引用计数。需要注意的是当使用某个引用作为参数,传递给getrefcount()时,参数实际上创建了一个临时的引用。因此,getrefcount()所得到的结果,会比期望的多1。

from sys import getrefcounta = [1, 2, 3]
print(getrefcount(a)) # 2b = a
print(getrefcount(b)) #3

 

(2)对象引用对象 
    python的一个容器对象,比如列表、词典等,可以包含多个对象。实际上,容器对象中包含的并不是元素对象本身,是指向各个元素对象的引用。 
也可以自己定义一个对象,中间引用其他的对象:

class from_obj(object):def __init__(self, to_obj):self.to_obj = to_objb = [1,2,3]
a = from_obj(b)
print(id(a.to_obj))
print(id(b))

 

(3)引用减少 
    某个对象的引用计数可能减少,比如,可以使用del关键字删除某个引用:

from sys import getrefcounta = [1, 2, 3]
b = a
print(getrefcount(b)) #3del a       #删除了一个引用
print(getrefcount(b))  #2

 

del也可以用于删除容器中的元素,比如:

    a = [1,2,3]del a[0]print(a) #删除a[0]引用,则a[0]指向的对象可能会被释放(如果没有其他引用指向它的话)

 

如果某个引用指向对象A,当这个引用被重新定向到某个其他对象B时,对象A的引用计数减少:

    from sys import getrefcounta = [1, 2, 3]b = aprint(getrefcount(b))a = 1print(getrefcount(b))

 

(4)垃圾回收 
    python的内存自动回收机制使得程序不需要自己释放内存。

2、python内置函数 
    python内置函数随着python解释器的运行而创建。在python程序中,你可以随时调用这些函数,不需要定义。常见的内置函数如下:

    print(), type(), dir(), help(), len(), open(), range(), enumerate(),zip(), iter(), map(), filter(), reduce(),

 

分类总结:

    数学运算abs(-5) # 取绝对值,也就是5round(2.6) # 四舍五入取整,也就是3.0pow(2, 3) # 相当于2**3,如果是pow(2, 3, 5),相当于2**3 % 5cmp(2.3, 3.2) # 比较两个数的大小divmod(9,2) # 返回除法结果和余数max([1,5,2,9]) # 求最大值min([9,2,-4,2]) # 求最小值sum([2,-1,9,12]) # 求和类型转换int("5") # 转换为整数 integerfloat(2) # 转换为浮点数 floatlong("23") # 转换为长整数 long integerstr(2.3) # 转换为字符串 stringcomplex(3, 9) # 返回复数 3 + 9iord("A") # "A"字符对应的数值chr(65) # 数值65对应的字符unichr(65) # 数值65对应的unicode字符bool(0) # 转换为相应的真假值,在Python中,0相当于Falsebin(56) # 返回一个字符串,表示56的二进制数hex(56) # 返回一个字符串,表示56的十六进制数oct(56) # 返回一个字符串,表示56的八进制数list((1,2,3)) # 转换为表 listtuple([2,3,4]) # 转换为定值表 tupleslice(5,2,-1) # 构建下标对象 slicedict(a=1,b="hello",c=[1,2,3]) # 构建词典 dictionary**粗体文本**序列操作all([True, 1, "hello!"]) # 是否所有的元素都相当于True值any(["", 0, False, [], None]) # 是否有任意一个元素相当于True值sorted([1,5,3]) # 返回正序的序列,也就是[1,3,5]reversed([1,5,3]) # 返回反序的序列,也就是[3,5,1]类,对象,属性# define classclass Me(object):def test(self):print "Hello!"def new_test():print "New Hello!"me = Me()hasattr(me, "test") # 检查me对象是否有test属性getattr(me, "test") # 返回test属性setattr(me, "test", new_test) # 将test属性设置为new_testdelattr(me, "test") # 删除test属性isinstance(me, Me) # me对象是否为Me类生成的对象 (一个instance)issubclass(Me, object) # Me类是否为object类的子类编译,执行repr(me) # 返回对象的字符串表达compile("print('Hello')",'test.py','exec') # 编译字符串成为code对象eval("1 + 1") # 解释字符串表达式。参数也可以是compile()返回的code对象exec("print('Hello')") # 解释并执行字符串,print('Hello')。参数也可以是compile()返回的code对象其他input("Please input:") # 等待输入globals() # 返回全局命名空间,比如全局变量名,全局函数名locals() # 返回局部命名空间

 

参考:

http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html

转载于:https://www.cnblogs.com/gtarcoder/p/5028897.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现手机号归属地相关信息查询

根据指定的手机号码&#xff0c;查询其归属地等相关信息&#xff0c;python实现&#xff1a; 手机号文件&#xff1a;test.txt 13693252552 13296629989 13640810839 15755106631 15119622732 13904446048 18874791953 13695658500 13695658547 15950179080 15573462779 15217…

[react] 请说说什么是useReducer?

[react] 请说说什么是useReducer&#xff1f; 基于 redux 思想实现简易数据控制流&#xff0c;useState 基于 reducer 实现 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关…

不被重视的基础,高效地使用ADO.net连接对象

很多初学者朋友在做项目时遇到过这样的问题&#xff0c;那就是在本地调试运行的程序正常&#xff0c;放到服务器上也是正常的&#xff0c;但是如果有了一些并发之后&#xff0c;就会发现页面会出现打不开的现像&#xff0c;其实大多数时候是因为Ado.net链接没有处理完善。当然对…

quick 中实现单例

直接贴代码 local danli nil local classname class("classname") function classname:getInstance() if danli nil then danli classname.new()     end return danli end return classname 使用 local duixiagn classname:getInstance()转载于:https://…

openssl创建CA并签发证书

一、创建私有CA根证书 1、创建CA目录 rootDESKTOP-JP3S3AN:/home/wsl/openssl_pro# mkdir -pv /etc/pki/CA/{private,certs,crl,newcerts} mkdir: created directory /etc/pki/CA mkdir: created directory /etc/pki/CA/private mkdir: created directory /etc/pki/CA/certs…

[react] react中的setState和replaceState的区别是什么?

[react] react中的setState和replaceState的区别是什么&#xff1f; setState:更新状态 replaceState:替换状态 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

栅格像元做地理坐标映射后的坐标值是像元中心点还是其他位置?

做了下实验&#xff0c;GDAL做完映射后像元&#xff08;x&#xff0c;y&#xff09;--->(lat,lon)&#xff0c;得到的坐标值是像元左上角的坐标值。 下面这个看到更清楚&#xff1a;&#xff08;其实我做了一个替换&#xff0c;实际我求的是左上点和右下点&#xff08;通过&…

TCP的FIN、ACK、SYN、URG、PSH及攻击方式

From: http://www.hackbase.com/tech/2009-10-08/56746.html 三次握手Three-way Handshake  一个虚拟连接的建立是通过三次握手来实现的  1. (B) –> [SYN] –> (A)  假如服务器A和客户机B通讯. 当A要和B通信时&#xff0c;B首先向A发一个SYN (Synchronize) 标记的…

QT Openssl no OPENSSL_Applink 解决

QT5.15.2安装时候选择了openssl1.1.1库&#xff0c;在开发过程中出现OPENSSL_Applink。 解决办法&#xff1a;将openssl include文件下的applink.c 添加到工程中&#xff0c;即可。

Java学习----运算符与表达式

一.运算符 1.算术运算符 - * / % -- public class Test7 {public static void main(String[] args) {int x 10;int y 3;float f 3.5f;System.out.println(x/y); // 3System.out.println(x%y); // 1System.out.println(x/f); // 2.857143 x隐式转换成floatSystem…

Tomcat 6 数据源配置

近来换了TOMCAT6&#xff0c;配置MYSQL数据库的数据源&#xff0c;在网上查找相关解决方案&#xff0c;后调试解决如下&#xff1a; 修改$CATALINA_HOME/conf/context.xml文件&#xff0c;加入如下代码&#xff1a;<Context reloadable"true"> <Watche…

OpenSSL签发证书时编码UTF8STRING PRINTABLESTRING不匹配

问题如下&#xff1a; Check that the request matches the signature Signature ok The countryName field is different between CA certificate (CN) and the request (CN) 可以看出&#xff0c;CA和REQ的DN内容是一致的&#xff0c;依旧报错。其实是编码的问题。 使用以下…

[react] 请说说react中Portal是什么?

[react] 请说说react中Portal是什么&#xff1f; 核心API是ReactDOM.createPortal(ReactNode, DOMContainer)&#xff0c;返回值是一个ReactNode。返回的ReactNode需要在组件的render函数(函数式组件的返回值)中进行渲染&#xff0c;createPortal接受的ReactNode将会挂载到DOM…

在Windows下编译zlib1.2.5

zlib1.2.5下载地址 &#xff1a; http://www.winimage.com/zLibDll/zlib125.zip 下载后解压到&#xff1a;E:\software\OpenSource\zlib-1.2.5src 参考文章&#xff1a;http://demon.tw/software/compile-zlib-on-windows.html 编译方法总结如下&#xff1a; 方法一&#…

Solr学习总结(一)Solr介绍

最近一直在搞Solr的问题&#xff0c;研究Solr 的优化&#xff0c;搜索引擎的bug修改等&#xff0c;这几天终于有时间&#xff0c;闲下来总结分享&#xff0c;以便大家参考&#xff0c;与大家一起来共同学习。 Solr是一个基于Lucene的全文搜索引擎&#xff0c;同时对其进行了扩展…

SSL 多线程通信 linux openSSL C API编程

一、环境 需要提前准备好服务端和客户端的证书和私钥&#xff0c;以及CA的证书。 OpenSSL 1.1.1f 31 Mar 2020 built on: Wed Nov 24 13:20:48 2021 UTC platform: debian-amd64 options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr) Thread model: posix gcc version …

分享一个CSS3和jQuery实现的模糊显示效果 - 帮助你的访问用户更好的阅读内容

为什么80%的码农都做不了架构师&#xff1f;>>> 日期&#xff1a;2011/12/20 来源&#xff1a;GBin1.com 在线演示 本地下载 这 个教程将实现一个页面部分内容突出显示效果&#xff0c; 大家可能经常见到一些页面组成内容比较多&#xff0c;可能会分散用户的…

[react] 说说你是怎么理解react的业务组件和技术组件的?

[react] 说说你是怎么理解react的业务组件和技术组件的&#xff1f; 业务组件即代码逻辑紧贴业务&#xff0c;如ajax请求&#xff0c;一些特定的需求特性等&#xff1b; 技术组件即使比较通用性的组件&#xff0c;如对loading的处理、ajax的hoc等 个人简介 我是歌谣&#xf…

查看静态库(.lib)和动态库(.dll)的导出函数的信息

From&#xff1a; http://blog.csdn.net/sunliangyuan/article/details/8075808 一般情况下&#xff0c;我们需要查看一个DLL或EXE中的包含的函数或是依赖的函数之类的信息&#xff0c;可以使用VS自带的工具dumpbin&#xff1b; 可以直接在命令行下输入dumpbin就可以查看他的…

Cracked me --1--Acid_burn

结合ida和od结合效果最好。 打开程序&#xff0c;首先是一个nag窗口&#xff08;去除nag&#xff09; 常用方法&#xff0c;一寻找字符串&#xff0c;发现和以往的 不同&#xff0c;不是对话框句柄的形式。只能第二种方法&#xff0c;单步找到对话框出现的位置。0042fd97-->…