您的位置:首页 > 编程语言 > Python开发

Python 3.6笔记开篇-------普通变量类型

2017-09-24 17:14 246 查看
最近突然好想玩爬虫,正好可以了解最近比较流行的python,写这篇博客的时候我其实已经对Python简单的过了一遍了,现在开始详细记录下,Python的一些重点要点。

--------------------------------------------------------------------------------------------------------------------

这里我全部用的是Python3.6版本进行的实验,这一篇主要整理一下,Python对于变量的一个理解(左值和右值)

近一年来,我了解了c c++ Android,感觉往往一些培训资料,对于内存讲的并不深刻,但是就我感觉而言,如果搞不懂最基本的内存写入和赋值的关系,是没有办法深入学习一门语言的,特别是自学。这里我就来梳理一下Python3.6的基本变量。

int double float str list 。。。。。这些都是基本的数据类型

但是Python不像c或者c++需要先声明变量,而且没有指针这个类型,那他到底是怎么玩的呢?

先看一段代码

num = 3
s = "abc"
flo = 1.1
print(type(num))
print(type(s))
print(type(flo))再来看结果
<class 'int'>

<class 'str'>

<class 'float'>

首先第一点,数据类型是存在的,再来看第二段代码

num = 3
s = "abc"
flo = 1.1
# print(type(num))
# print(type(s))
# print(type(flo))
print(id(num))
print(id(s))
print(id(flo))看结果
1577633520

2450139417880

2450109898944

id()这个方法就是用来显示内存地址

Return the identity of an object.

手工翻译:返回一个对象的标志

看到这里我直接来说一下我的理解

举个例子:

num = 3

num其实就是一个指针,而3其实是一段内存

指针指向一段内存,ok没毛病,Python为我们省去了申请内存,声明指针等等一系列问题,id(num)返回的其实就是3的内存地址。

再来看第二个例子:

num = 3
num2 = num
print(id(num))
print(id(num2))

结果

1577633520

1577633520

简单看起来,像是简单的变量赋值,其实却是两个指针指向了同一个地址

第三个例子

num = 3
print(id(num))
num = 4
print(id(num))

1577633520

1577633552

看结果有没有发现什么?

num------>内存A(值为3)num = 3

num------>内存B(值为4)num = 4

他并没有修改内存A的值,而是丢弃了内存A重新指向了一块内存(内存B)

很神奇的语言是不是(希望Python的内部申请和丢弃机制足够好。。。。。)

最后再补充一点,Python内部有一个优化机制

num = 3

num1 = 3

num2 = 3

这里有三个3,对应的其实是一块内存,数字字符串都适用。这个其实在深拷贝和浅拷贝的时候真的是容易混淆概念。。。。。。

好了第一篇不多说,就讲这点,这个系列,我会一直写到一些爬虫问题,同时准备重新开一个QT CPP的系列,对于原理更深刻的讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: