1、什么是变量

a=1,其中 a 就是变量名称,1 就是它的值。在程序运行过程中,变量的值一般都会发生改变,内存中会专门开辟一段空间,用来存放变量的值,而变量名将指向这个值所在的内存空间。与变量相对的就是常量,在程序运行过程中,常量的值不会发生改变。

2、变量的命名规范

变量名只能是 字母、数字或下划线的任意组合

变量名的第一个字符不能是数字

以下关键字不能声明为变量名

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

变量的命名方式一般有2种:

1)变量中单词与单词之间使用下划线分隔

hello_kitty='abc'

2)变量中的每个单词的首字母大写

helloKitty='abc'

Tip:推荐使用第一种方式~

3、变量的定义与赋值

a=1,就是一个变量的赋值过程,等号“=”左边的值赋值给右边的变量a,这个过程已经包含了变量的申明和定义过程,每个变量需要先赋值再使用,变量在被赋值之后才会被创建。不同于其他语言,例如在C语言中,变量在被赋值前,必须先定义变量的类型,而Python不需要,可以不定义变量的类型直接赋值,Python解释器会根据语法和操作数决定对象的类型。

动态类型语言和静态类型语言

静态类型语言:数据类型在编译期间确定,编码时,必须明确指定变量的数据类型,然后再赋值。

主要语言:C、C++、Java、Object-C...

例如 java的赋值语句如下:

String str = "abc";

char sex = 'M';

动态类型语言:数据类型不在编译期间确定,变量的类型绑定延后到了运行阶段。变量使用之前不需要类型声明。

主要语言:Python、Perl、Ruby、Erlang、PHP...

例如 python的赋值语句:

>>> str = 'abc'

>>> var = 1

在python中,可以对同一个变量反复赋值,且每次赋值的数据类型都不一致(type()函数查看数据类型):

>>> abc = 1

>>> type(abc)

# abc 为 int 类型

>>> abc = 1.2

>>> type(abc)

# abc为 float 类型

>>> abc = 'hello'

>>> type(abc)

# abc为 字符串 类型

内存图解:

变量的赋值过程

程序中的一个赋值操作,例如:abc=1,在内存中大致可以分为两个步骤:

1)内存中开辟一段空间用于存放值 1

2)内存中创建一个变量abc,并指向 值 1

赋值完成后,若修改 abc 的值,python解释器并不是修改变量abc指向的内存空间中存放的值,而是重新开辟一段内存空间,将新的值存放进去,变量abc重新指向这段新开辟的内存空间:

>>> abc = 1

>>> id(abc)

1465150944

>>> abc='hello kitty'

>>> id(abc)

1730859168688

注:函数id()用于查看变量的内存地址~

Python小整数对象池

示例1:

>>> a = 10

>>> b = 10

>>> id(a)

1465151232

>>> id(b)

1465151232

示例2:

>>> a = 300

>>> b = 300

>>> id(a)

1730858159920

>>> id(b)

1730858412880

如上面所说,在Python中修改变量的值并不是在对应的内存空间中直接修改,而是需要malloc重新分配内存,用完之后再回收。为了提高效率,Python解释器将小整数[-5,257)存放在小整数对象池中,即small_ints数组中。small_ints缓存了[-5,257) 之间的所有整数,且在python解释器初始化后small_ints数组就一直存在。若变量的值在[-5,257)范围内,就直接从small_ints数组中获取,而不需要再分配内存空间。

小整数的范围为[-5,257),若要修改需要通过修改python的源代码实现

所以如 示例1 中所示:不同的变量,它们的值是同一个小整数时,这些变量引用的是同一个对象。若整数的值不在[-5,257) 范围内,python解释器会将其存放在PyIntBlock中,这里不做介绍~

其他赋值方式

多重赋值

同时为多个变量赋值,也称链式赋值。

a = b = c = 1 # a,b,c的值都为1

多元赋值

多个变量,多个值,逐一对应。

a, b, c = 1, 2, 3 # a = 1,b = 2,c = 3

对换赋值

x=1; y=2

x, y = y, x # x = 2, y = 1

分解赋值

元组分解后赋值给多个变量

a, b, c = (1,2,3) # a = 1,b = 2,c = 3

s='hello'

a,b,c,d,e=s # a = 'h',b = 'e',c = 'l',d = 'l',e = 'o'

a,_,_,_,e=s # a = 'h',e = 'o',只取出开头结尾,单个下划线仅仅是一个有效的变量名称,来表示某个变量是临时的或无关紧要的(把不需要的值赋值给下划线)

# 也可以按下列方式书写:

a,*_,e=s

print(a,e) # a = 'h',e = 'o'

增量赋值

x += 1

4、python引用计数 和 垃圾回收机制

引用计数

Python使用引用计数来追踪内存中的对象。当对象被创建并赋值给变量时,该对象的引用计数被设置为1。

当对象再次被引用时,引用计数加1。引用计数也会减少(例如del 变量名或对变量重新赋值等),当引用计数为0是,意味着这个对象已经没有被使用~

del语句

del语句会删除对象的一个引用,del语法:del obj[, obj2[, ...objN]]

执行 del x 后的两个动作:

1)从现在的名称空间中删除x

2)x所指向的对象的引用计数减1

垃圾回收机制

Python的GC模块通过引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来进一步提高垃圾回收的效率。

5、常量

常量指在程序运行过程中不会改变的量,c语言中有专门的常量定义语法:const int a = 60; 常量定义之后就不能更改,若更改就会报错,Python中没有类似const这样的修饰符,即没有专门用于定义常量的语法,一般约定俗成 变量名以全大写的形式来表示这是一个常量~

NAME=kitty

.................^_^

python定义一个整数变量_Python变量与常量相关推荐

  1. python定义一个空数组_python数组 1_python 数组最后一个元素_python定义一个空数组 - 云+社区 - 腾讯云...

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 感悟: 1.python列表操作里不允许变量类型的指针2.case1类似于冒泡排 ...

  2. python定义一个整数变量_python循环定义多个变量的实例分析

    python循环定义多个变量方法 我们可能会时长碰到这样一个场景,计算得到一个非固定值,需要根据这个值定义相同数量个变量. 实现方式的核心是exec函数,exec函数可以执行我们输入的代码字符串. e ...

  3. python定义一个整数变量a_第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:"变"=>变 ...

  4. python定义一个list数据来源于变量_python基础知识4--数据类型与变量

    阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...

  5. python定义一个求和函数_Python定义函数实现累计求和操作

    一.使用三种方法实现0-n累加求和 定义函数分别使用while循环.for循环.递归函数实现对0-n的累加求和 1.使用while循环 定义一个累加求和函数sum1(n),函数代码如下: 2.使用 f ...

  6. python定义一个复数类_Python中complex复数类型的简单介绍

    1 复数的简要描述 虚数由实部和虚部两个部分构成: real+imag(虚部后缀为j或J) 其中实数部分和虚数部分都为浮点数.  例如定义一个虚数,分别输出它的实部和虚部: a=4.7+0.666j  ...

  7. 用python定义一个员工类_Python:定义一个只有整数定义的类

    使用MutableSet ABC,这是非常低效但完整的实现: import collections class MySet(collections.MutableSet): def __init__( ...

  8. 用python定义一个员工类_python类的定义和使用

    类的定义: 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中的每个对象所共有的属性和方法.对象时类的实例. 二.Python创建类: 使用class语句来创建一个新类,class之后为类 ...

  9. python定义一个空数组_python如何创建空数组?

    Python创建空数组的三种方式: 1.numpy指定形状为0 实际上,empty生成的数组当然可以为空,只要我们指定了相应的形状.例如,如果我们传入数组的形状参数为(0,3),则可以生成目标空数组: ...

最新文章

  1. 机器人领域牛人和研究组列表
  2. 在VM6.5正式版中安装ESX Server 3.5的办法
  3. mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数
  4. 使用个推的时候出现Installation error: INSTALL_FAILED_DUPLICATE_PERMISSION
  5. 匿名内部类创建线程的三种方式
  6. 查看 rabbitmq 启动websocket 提示404_RabbitMQ在windows下安装(笔记)
  7. spring 查找实现类_69道Spring面试题和答案
  8. 信息学奥赛一本通C++语言——1117:整数去重
  9. 软件技术基础_前端系列课程(7)-软件技术基础
  10. 对VLAN间路由实验的总结
  11. PHP框架自动加载类文件原理
  12. 物联网处理器五大类型应用分析指南
  13. ORA-04031错误分析和解决
  14. PHP购物网站(含购物车、全部源码、数据库设计表及其源码)
  15. hustoj搭建教程
  16. 树莓派Zero的千兆测速
  17. 【Python框架】Scrapy简单入门及实例讲解
  18. 第2章——R的数据组织
  19. android计算dpi代码_android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法...
  20. 基于Python实现语法分析

热门文章

  1. 由网页假死现象查找到的资料
  2. 2021年下半年软考中级——软件设计师考试总结感想(博主本人已过!!!)
  3. 基于云ModelArts的PPO算法玩“超级马里奥兄弟”【至简致远】
  4. apache Alias用法
  5. Linux就该这么学第十四节课学习心得
  6. 记录中国银行原油宝导致 中国普通人亏300多乙事件
  7. 计算机vfp考试笔试试题,计算机二级vfp历年考试真题及答案
  8. GMQ——“技术在革新,时代在发展”
  9. python操作word文档——python-docx
  10. 双击vscode启动后无限弹窗,求解决!!!