python和c语言全局变量,Python如何实现C/C++全局变量?

当我在阅读SWIG文档时,我读了以下几行。。在E> C/C++全局变量完全由SWIG支持。但是,由于Python赋值的工作方式,底层机制与您可能预期的有所不同。在Python中键入以下内容时

a=3.4

“a”成为包含值3.4的对象的名称。如果您稍后键入

b=a

那么“a”和“b”都是包含值3.4的对象的名称。因此,只有一个对象包含3.4,“a”和“b”都是引用它的名称。这与C语言大不相同,在C语言中,变量名表示存储值的内存位置(赋值将数据复制到该位置)。因此,无法直接将C中的变量赋值映射到Python中的变量赋值。

为了提供对C全局变量的访问,SWIG创建了一个名为“cvar”的特殊对象,该对象被添加到SWIG生成的每个模块中。然后将全局变量作为该对象的属性进行访问。

我的问题是,按上述方式实施有何必要。即使我们以上述方式实现了对象属性也被实现为对象。在

请参阅下面的python代码片段a = 10

b = a

a is b

True

class sample:

pass

obj = sample()

obj.a = 10

obj.b = obj.a

obj.a is obj.b

True

在上述两种情况下,对象分配的方式相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值