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()这个方法就是用来显示内存地址
手工翻译:返回一个对象的标志
看到这里我直接来说一下我的理解
举个例子:
num = 3
num其实就是一个指针,而3其实是一段内存
指针指向一段内存,ok没毛病,Python为我们省去了申请内存,声明指针等等一系列问题,id(num)返回的其实就是3的内存地址。
再来看第二个例子:
结果
1577633520
1577633520
简单看起来,像是简单的变量赋值,其实却是两个指针指向了同一个地址
第三个例子
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的系列,对于原理更深刻的讲解。
--------------------------------------------------------------------------------------------------------------------
这里我全部用的是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的系列,对于原理更深刻的讲解。
相关文章推荐
- 廖雪峰python3.6教程笔记3-Python基础之数据类型和变量
- 【学习笔记】Python基础-数据类型与变量
- Python学习笔记 - 数据类型和变量
- python学习笔记-2.python变量和数据类型
- 【python学习笔记】4.数据类型和变量
- Python3学习笔记(二)--变量数据类型
- Python学习笔记——变量数据类型
- Python笔记(五)--变量类型之列表
- 小甲鱼:Python学习笔记001_变量_分支_数据类型_运算符等基础
- Python学习笔记---变量与数据类型
- Python笔记(七)--变量类型之字典
- 【python学习笔记】4.数据类型和变量
- Python3学习笔记-数据类型和变量
- Python学习笔记1——数据类型和变量
- 2.变量类型-python笔记
- Python学习笔记-变量和数据类型
- Python学习笔记——基础篇(1): 变量及其类型
- Python笔记——基本语法:标识符、数据类型、变量、运算符及表达式/编码风格
- Python笔记(三)--变量类型之数字
- Python学习笔记-1(变量、类型、函数、类、作用域)