变量

一:什么是变量?

变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态

  • 变:状态是会发生改变的
  • 量:记录现实世界中的状态,让计算机能够像人一样去识别世间万物。

变量是存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。

基于变量的数据类型如(整型数,实数,布尔值,字符串,列表,字典,等)也称变量类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。

二:为什么要有变量?

程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态以及状态的变化。

例如:王者荣耀等级从1-15的变化,LOL等级从1-18的变化,攻击力的变化,用户名的改变

三:定义变量及变量的组成

3.1定义变量

变量名只有在第一次出现才是定义变量(变量名再次出现,不是定义变量,而是直接使用之前定义的变量)

在 python 中,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建

等号(=)用来给变量赋值

= 左边是一个变量名

= 右边是存储在变量中的值

变量名 = 值

变量定义之后,后续就可以直接使用了

name(变量名) =  the_hun(变量值)

3.2变量的组成

从我们上面定义的变量可以看到,变量的组成分为以下三个部分:

  1. 变量名:变量名用来引用变量值,但凡需要用变量值,都需要通过变量名。
  2. 赋值符号:赋值
  3. 变量值:存放数据,用来记录现实世界中的某种状态。

3.3定义变量的过程

a = 10

这段代码的动作就相当于:

a = 10

b = a

a = 20

那么,此时b=?

如果按照我们常用的数学思维的话,那么b肯定是等于20的,但这里却不是这样的,如果按照一般的思维的话,是下面这样的:

如果按照这个逻辑的话,那么b肯定是等于20的,但这里是错误的,所以我画了个叉。

因为变量是一个标记,用来调用内存中的值,当我们将一个标记赋值给另一个标记的时候,应该是让其指向另一个标记的内存,而不是指向标记。

按照这个原则,我们的思路应该是这样的:

 • 过程是先生成对象

举个例子:

a=1  # a-->class <int>
print(a)

3.4 变量的三个特征

对于每个变量,python都提供了这三个方法分别获取变量的三个特征,其中python的内置功能id(),内存地址不一样,则id()后打印的结果不一样,因为每一个变量值都有其内存地址,而id是用来反映变量值在内存中的位置,内存地址不同则id不同。

x = 10
print(x) # 获取变量的变量值
print(id(x)) # 获取变量的id,可以理解成变量在内存中的地址
print(type(x)) # 获取变量的数据类型,下章会详细介绍数据类型

3.4.1变量值

x = 10
print(x) # 获取变量的变量值
10

3.4.2内存地址

id(x) 获取变量的id,可以理解成变量在内存中的地址

这里id是一个函数,它有返回值,返回的值是变量的内存地址(十进制)。我们通常看到的内存地址实际上是十六进制。我们在这里可以通过hex()把十进制转换成十六进制

3.4.2.1判断变量值是否相等用(二)
name1 = 'egon'
name2 = 'nick'
print(name1 == name2) # False
False
3.4.2.2判断变量id是否相等(三)
x = 11
y = x
z = 11
print(x == y) # True
True
print(x is y) # True
True
print(x is z) # True,整数池的原因
True
x = 257
z = 257 print(x is z) # False
False

从上述的打印消息可以看出:id相等的变量,值一定相等,指向的是同一个内存地址;值相等的变量,id不一定相等。

3.4.2.3变量的数据类型
x = 11
print(type(x)) #int

四 多个变量的赋值

4.1 链式赋值

a = 10
b = 10
c = 10
d = 10
print(f'a:{a}, b:{b}, c:{c}, d:{d}')
a:10, b:10, c:10, d:10
a = b = c = d = 10
print(f'a:{a}, b:{b}, c:{c}, d:{d}')
a:10, b:10, c:10, d:10

4.2 交叉赋值

x = 100
y = 200 temp = x
x = y
y = temp
print(f'x:{x}')
print(f'y:{y}')
x:200
y:100
x, y = y, x
print(f'x:{x}')
print(f'y:{y}')
x:100
y:200

五 变量的命名规范和方式

Python官方提供有一系列PEP文档,其中第8篇文档专门针对Python代码格式给出了建议,也就是俗称的PEP 8PEP 8文档地址 谷歌有对应的中文文档

一定要记住,定义一个变量其实就是在记录现实世界中的的状态,并且存永远不是目的,取才是目的。所以变量的命名应该满足以下三个规范:

  1. 变量的命名应该能反映变量值所描述的状态,切记不可用中文
  2. 变量名必须用字母数字下划线组合,并且变量名的第一个字符不能是数字。
  3. 关键字不能声明为变量名
['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']

驼峰体

AgeOfNick = 19
print(AgeOfNick)
19

小驼峰式命名法

o 第一个单词以小写字母开始,后续单词的首字母大写

o 例如:firstName、lastName

· 大驼峰式命名法

o 每一个单词的首字母都采用大写字母

o 例如:FirstName、LastName、CamelCase

下划线(推荐)

age_of_nick = 19
print(age_of_nick)
19

注意:以上两种变量名的风格,推荐使用下划线的风格。

Python3中的命名规范---基于PEP8标准 https://blog.csdn.net/weixin_39723544/article/details/82144280

六 变量扩展(仅作了解)

python是强语言还是弱语言,没有一个具体官方的说法

数据类型也就是变量类型,一般编程语言的变量类型可以分成下面两类。

静态类型与动态类型

  • 静态类型语言:一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java 和 C 是静态类型语言。
  • 动态类型语言:一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript 和 Python 是动态类型的,因为它们确定一个变量的类型是在你第一次给它赋值的时候。不使用显示数据类型声明,且确定一个变量的类型是在第一次给它赋值的时候。

强类型与弱类型

强类型语言:一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。强类型:不允许不同类型相加。例如:整形+字符串会报类型错误。偏向于不容忍隐式类型转换

弱类型语言:一种类型可以被忽略的语言,与强类型相反。VBScript 是弱类型的。在 VBScript 中,您可以将字符串 '12' 和整数 3 进行连接得到字符串'123',然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。偏向于容忍隐式类型转换

所以,Python 既是动态类型语言 (因为它不使用显示数据类型声明),又是强类型语言(因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)。

Python是有变量类型的,而且会强制检查变量类型:

注意: 强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!

  例如:Python是动态语言,是强类型定义语言(类型安全的语言); javaScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)

变量的声明和定义

Python 与大多数其它语言一样有局部变量和全局变量之分,但是它没有明显的变量声明。变量通过首次赋值产生,当超出作用范围时自动消亡。

  • 变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一 个定义。
  • 变量声明:用于向程序表明变量的类型和名字。
  • 定义也是声明

java中变量声明

String employee;    // String 类型的变量
boolean isSave; // boolean 类型的变量
int create_at; // int 类型的变量

java中变量赋值

char usersex='女';    // 直接赋值
或者
String username; // 先声明
username ="琪琪"; // 后赋值
另外,多个同类型的变量可以同时定义或者初始化,但是多个变量中间要使用逗号分隔,声明结束时用分号分隔。
String username,address,phone,tel; // 声明多个变量
int num1=12,num2=23,result=35; // 声明并初始化多个变量

JavaScript的隐式转换

JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。

object是引用类型,其它的五种是基本类型或者是原始类型。

隐式转换记住以下三点:

1.字符串数字,数字就会转成字符串

2.数字字符串,字符串转成数字

如果字符串不是纯数字就会转成NaN。

字符串减数字也一样。

两个字符串相减也先转成数字

3.乘,除,大于,小于跟减的转换也是一样

console.log(10+'20') //2010 String
console.log(10-'20')//-10 number
console.log(10-'one') //NaN not a number
console.log(10-'101a') //NaN
console.log(10*'20') //200 number
console.log('10'*'20') //200 number
console.log(20/'10') //2 number
console.log('20'/'10') //2 number
console.log('20'/'one') //NaN

隐式赋值: a =1

显示赋值: char a = 1

python 变量 (全面不一样的变量)的更多相关文章

  1. 关于python中带下划线的变量和函数 的意义

    总结: 变量: 1.  前带_的变量:  标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量 2.  前带两个_ ,后带两个_ 的变量:  标明是内置变量, 3.  大写加下划线的变量: ...

  2. Python 基础篇:编码、变量、模块

    1. 编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASCII). 2. 变量 变量定义的规则: 变量名只能是 字母.数字或下划线的任意组合 变量名的第一个字符不能是数 ...

  3. Python新手学习基础之数据类型——变量

    关于Python的变量是这样描述的: 变量是存储在内存里的一个值,通过变量名,我们可以访问到该变量的值. 上面这几行代码中,price,count和sum都是变量,Python是动态类型语言,变量是不 ...

  4. python语言学习7——数据类型和变量

    整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...

  5. Python教程(2.2)——数据类型与变量

    和C/C++.Java一样,Python也有数据类型和变量两个概念. 数据类型 Python中的几个基本数据类型为整数(integer/int).浮点数(float/float).布尔值(boolea ...

  6. python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)

    一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...

  7. [转]关于python中带下划线的变量和函数的意义

    Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...

  8. python基础学习(三)变量和类型

    变量的作用:变量就是用来存储数据的. 变量的定义 在python中,变量在使用之前需要进行赋值,变量只有赋值后才能使用,如果变量没有赋值就使用会出现什么情况呢?如下图,使用之前变量未定义,会报错,如下 ...

  9. python学习Day2 python 、pycharm安装及环境变量配置

    复习 进制转换:二进制&十六进制转换(从左往右1248机制,每四位二进制对应一位16进制) 二进制&十进制转换   2n-1幂次方相加 十进制到二进制转化  将十进制除以2,把余数记下 ...

  10. Python十讲 - 第二讲:变量和基础数据类型

    本讲主要内容 变量 字符串 数字和运算符 数据类型转换 2.1 变量 1. 变量是什么? 变量,是指把程序运行的中间结果临时的存在内存里,以便后续的代码调用,其值可以修改. 在python中,当变量被 ...

随机推荐

  1. CodeForces–830A--二分,贪心

    Office Keys time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  2. 【面试】SSH 框架原理

    SSH 框架原理: 1.通过 Configuration().configure();读取并解析 hibernate.cfg.xml 配置文件2.由 hibernate.cfg.xml中的<ma ...

  3. iOS即时通讯之CocoaAsyncSocket源码解析三

    原文 前言 本文实例Github地址:即时通讯的数据粘包.断包处理实例. 本文旨以实例的方式,使用CocoaAsyncSocket这个框架进行数据封包和拆包.来解决频繁的数据发送下,导致的数据粘包.以 ...

  4. Visual Studio Code-Vscode下快速补全新建HTML文件默认代码

    1.新建文件. 2.点击右下角文档格式:纯文本,上方弹出框输入HTML改成 html文档格式. 3.输入“ !”,按tab. 4.完成.

  5. Copy-On-Write in Swift

    Premature optimisation is the root of all evil. But, there are moments where we need to optimise our ...

  6. LC 889. Construct Binary Tree from Preorder and Postorder Traversal

    Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...

  7. LC 163. Missing Ranges 【lock, hard】

    Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...

  8. 通过ssh管道连接内网数据库(mysql)

    公网连接内网数据库(如云数据库)时,通常需要白名单:如果不是白名单IP,通常需要一个跳板机(类似代理)来连接内网数据库, 下方以mysql为例(其他数据库基本一致): import pymysql a ...

  9. Selenium 2自动化测试实战28(断言方法)

    一.断言方法 执行用例的过程中,最终用例是否执行通过,是通过判断测试得到的实例结果与预期结果是否相等决定的.unittest框架的TestCase类提供下面这些方法用于测试结果的判断. -assert ...

  10. split切割.号的字符串

    excel中的日期为下图所示,利用io读取到后,调试发现值为“12.10.2019”,需要将其转换为“2019-10-12” 用split方法以.号切割时,需要用转移字符“\\.”,代码如下 pack ...