精华内容
下载资源
问答
  • python查看内存地址

    2020-12-31 14:02:58
    python 通过id查看内存地址 eg: a=1 print(id(a)) #输出94486697843200 2、不可变量 不可变对象是指对象的内存值不能被改变。Python中变量以引用的方式指向对象,如果变量引用了不可变对象,当改变该变量时...

    1、查看python内存地址

    python 通过id查看内存地址

    eg:

    a=1
    print(id(a))
    
    #输出94486697843200

     

    2、不可变量

    不可变对象是指对象的内存值不能被改变。Python中变量以引用的方式指向对象,如果变量引用了不可变对象,当改变该变量时,由于其所指的对象的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址,即变量引用了新的对象。

        数值类型(整数和浮点)、字符串str、元组tuple都是不可变类型。比如a=1,b=[1],c={'a':1},id(a)、id(b[0])、id(1)、id(c['a'])将输出一样的值,因为1是不可变对象,其在内存中是不可改变的。

    3、可变对象

        可变对象是指对象的内存值可以被改变,变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的内存地址,通俗点说就是原地改变。列表list、字典dict、集合set是可变类型。

    参考博客

    https://blog.csdn.net/fragmentalice/article/details/81363494

    展开全文
  • 主要介绍了python查看变量内存地址的方法,涉及Python中id使用技巧,需要的朋友可以参考下
  • 使用id函数获取对象的内存地址 a = 1 print(id(a))

    使用id函数获取对象的内存地址

    a = 1
    print(id(a))
    
    展开全文
  • python中一般并不需要查看内存内容,但作为从C/C++过来的人,有的时候还是想看看内存,有时是为了验证内容是否与预期一致,有时是为了探究下内存布局。 from sys import getsizeof from ctypes import string_at '...

    博客:博客园 | CSDN | blog

    python中一般并不需要查看内存内容,但作为从C/C++过来的人,有的时候还是想看看内存,有时是为了验证内容是否与预期一致,有时是为了探究下内存布局。

    from sys import getsizeof 
    from ctypes import string_at
    
    '''
    getsizeof(...)
        getsizeof(object, default) -> int
        Return the size of object in bytes.
        
    string_at(ptr, size=-1)
        string_at(addr[, size]) -> string
        Return the string at addr.
    '''
    
    

    getsizeof用于获取对象占用的内存大小,string_at用于获取指定地址、指定字节长度的内容,因为返回的对象类型是bytes,可以调用hex()函数转换成16进制查看。

    int对象的内存内容如下,首先通过函数id获取对象的内存地址。

    i = 100
    type(i)
    # int
    s = string_at(id(i), getsizeof(i))
    type(s)
    # bytes
    s
    # b'>\x00\x00\x00\x00\x00\x00\x00\xa0\x99\xfd\x1d\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00d\x00\x00\x00'
    s.hex()
    # '3e00000000000000a099fd1d00000000010000000000000064000000'
    

    如果对int对象的内存布局不熟悉,可能看不出什么。

    再举一个numpy的例子。

    >>> import numpy as np
    >>> a = np.arange(12).reshape(3,4)
    >>> a
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    
    >>> a.data
    <memory at 0x00000000062483A8>
    >>> m = a.data
    >>> type(m)
    memoryview
    >>> m.hex()
    '000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b000000'
    
    >>> a.ctypes.data
    68393696
    >>> string_at(a.ctypes.data, a.nbytes).hex()
    '000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b000000'
    
    
    

    上面展示的两个例子,一个是通过memoryview对象查看,另一个是通过string_at查看。不是所有对象都支持memoryview

    class memoryview(obj)

    Create a memoryview that references obj. obj must support the buffer protocol. Built-in objects that support the buffer protocol include bytes and bytearray.

    —— from https://docs.python.org/3/library/stdtypes.html#memoryview

    string_at

    ctypes.string_at(address, size=-1)

    This function returns the C string starting at memory address address as a bytes object. If size is specified, it is used as size, otherwise the string is assumed to be zero-terminated.

    —— from https://docs.python.org/3/library/ctypes.html?highlight=string_at#ctypes.string_at

    展开全文
  • 主要介绍了Python查看变量的类型,内存地址,所占字节的大小,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • python查看地址

    千次阅读 2018-09-25 21:06:30
    在计算机中,通常使用 十六进制 表示 内存地址 十进制 和 十六进制 都是用来表达数字的,只是表示的方式不一样 十进制 和 十六进制 的数字之间可以来回转换 %d 可以以 10 进制 输出数字 %x 可以以 16 进制 输出...

    在计算机中,通常使用 十六进制 表示 内存地址

    • 十进制十六进制 都是用来表达数字的,只是表示的方式不一样
    • 十进制十六进制 的数字之间可以来回转换
    • %d 可以以 10 进制 输出数字
    • %x 可以以 16 进制 输出数字

    通过id(变量名可以查看地址)

    在查看对象时可以通过id(对象名),也可通过id(对象名)来查看

    在计算机中,通常使用 十六进制 表示 内存地址

    • 十进制十六进制 都是用来表达数字的,只是表示的方式不一样
    • 十进制十六进制 的数字之间可以来回转换
    • %d 可以以 10 进制 输出数字
    • %x 可以以 16 进制 输出数字
    class Dog:
        """一次模拟小狗的简单尝试"""
    
        def __init__(self, name, age):
            """初始化属性name和age"""
            self.name = name
            self.age = age
    
        def sit(self):
            """模拟小狗被命令时蹲下"""
            print(self.name.title() + "is now siting.")
    
        def roll_over(self):
            """模拟小狗被命令时打滚"""
            print(self.name.title() + " rolled over!")
    
    
    my_dog = Dog('willie', 6)
    print(my_dog)
    add = id(my_dog)
    print("%d" % add)
    print("%x" % add)
    my_dog.sit()
    my_dog.roll_over()
    
    
    

     输出结果

     

    print(my_dog)时输出为:
    
    <__main__.Dog object at 0x000002B1BC76F080>
    
    Dog为类名,object 为对象,0x000002B1BC76F080十六进制地址。不但指出了十六进制地址,还指出了该对象是属于哪一个类
    
    
    add = id(my_dog)时输出为:
    print("%d" % add)
    
    2962394378368 %d 可以以 10 进制 输出数字,该地址为十进制地址
    
    print("%x" % add)
    
    2b1bc76f080 %x 可以以 16 进制 输出数字,该地址为十六进制地址
    
    

     

    展开全文
  • 文章目录查看内存地址编译后生成的字节码 查看内存地址 id() 函数用于获取对象的内存地址 a = '3' b = '3' print(id(a)) print(id(b)) > 140328813804208 140328813804208 结论: a和b指向相同的内存地址 编译...
  • 可以使用id >>> print id.__doc__ id(object) -> integer Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (Hint: it's the ...
  • Python如何查看变量在内存中的地址

    千次阅读 2018-11-03 12:55:00
    python中可以用id()函数获取对象的内存地址。 用法: object = 1 + 2 print(id(object)) #4304947776 object -- 对象 转载于:https://www.cnblogs.com/lshedward/p/9900429.html...
  • python中如何查看某个“常量”的内存地址呢?我们可以通过以下的方法: name = 'admin' #后面的admin值赋给变量name name1 = name name2 =name print(id(name),name) print(id(name1),name1) print(id(name2),...
  • 使用 Python 查看局域网内存活主机

    千次阅读 热门讨论 2018-04-30 17:58:16
    当我们的网络首次接入一些新的设备,而且这些设备不是像手机、电脑一类的有屏幕设备,如服务器、Nas、树莓派等硬件,我们想要通过网络连接控制,但是并不知道设备的 IP 地址,这时,我们就需要扫描网络找到我们目标...
  • 查看变量的类型 #利用内置type()函数 >>> nfc=["Packers","49"] >>> afc=["Ravens","48"] >>> combine=zip(nfc,afc) ...查看变量的内存地址 #利用内置函数id(),是以十...
  • python源代码如下: a=1000 #id()可以查看该变量的内存地址 id(a) #sys.getsizeof()可以查看该变量的内存大小 import sys print(sys.getsizeof(a))
  • python内存管理机制

    2018-12-01 14:26:34
    引用 python 中的赋值语句 a = 100 代表。...我们可以使用id()函数查看对象的内存地址,或者使用is关键字判断两个引用是否指向统一对象 a = 100 b = a print(id(a)) print(id(a)) print(a is b) # 1...
  • python内存管理

    2018-01-14 23:17:07
    2:所有的对象都会在内存中开辟一块空间进行存储,返回这个内存空间的地址给外界操作(引用,指针)可以通过id()查看内存地址10进制,hex()转换成16进制 3:对于整数和短小的字符,python会进行缓存,创建的对象时...
  • id(x) # 查看变量x指向的内存地址:30834096L y = x # 将变量x重新赋给另一个新变量y id(y) # 地址为30834096L x = 2 # 对变量x重新赋值 print(x, y) id(x) # 地址为30834144L id(x) # 地址为30834096L 可以看出,...
  • python内存管理机制

    2019-11-14 15:19:42
    使用id()的方法访问内存地址 使用is()的方法比较内存地址是否相等 垃圾回收机制 以引用计数为主,分代收集为辅 如果一个对象的引入数为0,python虚拟机就会回收这个对象的内存 引用计数的缺陷是循环引用的问题 引用...
  • 这篇文章主要是对python中的数据进行认识,对于很多初学者来讲,其实数据的认识是最重要...(id函数:你可以通过python的内置函数 id() 来查看对象的身份(identity),这个所谓的身份其实就是 对象 的内存地址) 一、引

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 670
精华内容 268
关键字:

python查看内存地址

python 订阅