目录
一、标识符
二、变量的声明和赋值
三、最基本的内置数据类型介绍
标识符主要用于变量、函数、类、模块等名称。命名规则如下:
1.要区分大小写。eg:XGT和xgt是不同的。
2.第一个字符必须是下划线和字母。不能以数字开头。其后的字符是:字母、数字、下划线,不能是其他特殊字符。eg:# 是不行的。
3.不能使用关键字。eg: for、and、while等,使用python help()>>> keywords来查看关键字。
4.以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如 _int_ 是类的构造函数。
Python 标识符命名规则
类型 | 规则 | example |
模块和包名 | 全小写字母,尽量简单,若多个单词之间用下划线 | math |
函数名 | 全小写字母,多个单词用下划线隔开 | my_name |
类名名 | 首字母大写,采用驼峰原则,多个单词时,每个单词第一个字母大写,其余部分小写 | Myphone |
常量名 | 全大写字母,多个单词用下划线隔开 | SPE、SPE_DDD |
由前边对象和引用介绍可知,变量存放在栈里边,对象存放在堆里边。
变量的声明和赋值用于将一个变量捆绑在对象上。格式如下:
变量名 = 表达式
eg: a = 1234
解释器是如何运行的?
是从右向左运行的,先运行右边的表达式,生成一个代表表达式运算结果的对象,然后将对象的地址赋给左边的变量
操作:必须先初始化(先赋值)→ 和matlab类似
删除变量 del a(此时a这个变量将从栈中删除,但是1234这个值还在,他被Python 的垃圾回收站回收)
什么时候回收垃圾?
当这个对象没有被引用的时候,他将被回收。
链式赋值
就是将一个对象,同时赋值给多个变量。
eg:a=b=10 相当于 a=10 b=10
系列解包赋值
将不同的对象赋值给不同的变量(对象和变量的个数一定是相同的)
a,b,c = 1,2,3 相当于 a=1 b=2 c=3
eg:利用系列解包赋值对变量进行变换
a, b = 1, 2 a, b = b, a print(a) print(b)
c语言是通过中间变量来实现变量的替换,可知,python 比较方便
常量
Python 不支持常量,即没有语法限制改变一个值。我们只能约定常量的命名规则,以及程序在逻辑上不对常量值做出修改。
ZHANG = 20 print(ZHANG)
实际上是可以改变的,只是逻辑上是不改变的。
1.每个对象都有类型,Python中最基本的内置数据类型有:整型、浮点型、字符串型、布尔型
数据类型 | |
整型 | -7,-8, 0, 2, 3 |
浮点型 | -1.25,-10,1.23, 6.77 |
字符串 | ‘a’. 'zhangsan' '你好','heihie' |
布尔型 | 表示真假,仅包含:True、False |
2.数字
Python 支持整数(如:250,520)和浮点数进行运算。
运算符 | 说明 | eg | 结果 |
+ | 加法 | 3+2 | 5 |
- | 减法 | 30-5 | 25 |
* | 乘法 | 2*3 | 6 |
/ | 浮点数除法 | 10/2 | 5.0 |
// | 整数除法 | 7//2 | 3 |
% | 取余 | 8%5 | 3 |
** | 幂 | 2**3 | 8 |
注意: 使用divmod 可以同时得到商和余数
a = divmod(13, 3) print(a)
3整数:
Python中,除了10进制以外,还有其他的二进制,八进制,十六进制。
0b或者0B,二进制 0 1 |
0o或者0O,八进制 0 1 2 3 4 5 6 7 |
0x或者0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f |
eg:测试不同的进制(用IDLE开发环境测试,不用pycharm 进行测试)
十进制:
二进制:
0B10101010
输出值为:0*2^0+1*2^1+0*2^2+1*2^3+0*2^4+1*2^5+0*2^6+1*2^7=170
八进制:(利用Jupyter NoteBook 进行测试)
0O76543210
输出值为:0*8^0+1*8^1+2*8^2+3*8^3+4*8^4+5*8^5+6*8^6+7*8^7 = 16434824
十六进制:(利用Jupyter NoteBook 进行测试)
0xa9543f10
输出值为:0*16^0+1*16^1+15*16^2+3*16^3+4*16^4+5*16^5+9*16^6+10*16^7=
2840870672
数据类型的转换:(前边有讲解,为了知识的完备性,这里再讲一下)
使用int()实现数据类型转换
(1)浮点数直接转化为整数,将小数部分直接去掉。eg: int(8.8) = 8;
(2) 布尔值int()类型的转换。 int(False)= 0; int(True) = 1; 注意:True 和False 首字母要大写。
(3)字符串符合整数格式。将直接转化成对应的数字。eg: int("456") = 456;
如果字符串中含有一些字母将不能转换,程序将会报错。 eg: int("456abc") : error
注意:整数和浮点数混合运算,将自动转化成浮点数。
整数可以有多大?它像C语言一样吗?有规定的大小吗?
在Python 2中,int 是32 位的,long是64位的。
在python 3中,int 大小是任意的,并不限制它的大小,而long被取消。eg:100^100,运行如下:
整数缓存问题
Python仅仅对比较小的整数对象进行缓存(范围为:[-5,256])缓存起来,而并非所有的整数对象。需要注意的是,这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行时,结果是不一样的,这是因为解释器做了一部分优化。(范围是[-5,任意整数])
如何简单理解呢?
eg: 在IDLE开发环境中,(1)在[-5,256]时,当他们值相同时,他们的地址是一样的。(2)在之外他们的地址是不一样的。
(1)情况 a = 10, b = 10, 在[-5,256]之内,地址相同,可以整数缓存,下次使用直接从缓存中拿出来使用,提高运行速度
(2)情况 a = 1000, b = 1000, 在[-5,256],地址不同,不可以缓存
在Pycharm 开发环境中,可以自行验证哈
4.浮点数
浮点数又称,float型。浮点数用 形式的科学计数法来表示。eg:5.20,被表示成:520E-2或者520e-2.
类型转换和四舍五入
(1) 类似于int(),我们可以将float转化为其他类型的浮点数。
(2)整数和浮点数混合运算,将自动转化成浮点数。
(3)round(value),可以转化成四舍五入的值,但是原来的数值不会发生改变。eg:
(4)float()可以将数字字符转换为浮点数。float("5.20") = 5.20
5.字符串(字符串概念相当重要,因此下一篇博客,单独拿出来讲一下)
增强型赋值运算符
运算符+、-、*、/、//、**、和%和赋值号=结合可以构成"增强型赋值运算符"
eg:a = a+1;等价于 a+=1; 注意:+= 不要加空格
运算符 | eg | 等价 |
+= | a+=5 | a = a+5 |
-= | a-=5 | a = a-5 |
*= | a*=5 | a = a*5 |
/= | a/=5 | a = a/5 |
//= | a//=5 | a = a//5 |
**= | a**=5 | a = a**5 |
6.布尔值、布尔操作符
(1)布尔值
虽然整型、浮点型和字符串数据类型有无数种可能的值,但是“布尔”数据类型只有两种值:是(True)和否(False).布尔的首字母大写。
(2)比较操作符
所有比较运算符,返回 1为True,返回0为False。
以下假设 a = 5.20,b= 3.14
操作符 | 含义 | 实例 |
== | 等于,比较对象的值是否相等 | (a==b)返回False |
!= | 不等于,比较两个对象的值是否不相等 | (a!=b)返回True |
> | 大于,返回 x是否大于y | (a>b) 返回True |
< | 小于,返回 x是否小于y | (a |
>= | 大于等于,返回 x是否大于等于y | (a>=b) 返回True |
<= | 小于等于,返回 x是否小于等于y | (a<=b) 返回False |
注意:<,>,<=和>=操作符,只适应于整型和浮点型值
== 操作符(等于)有两个等号,而=操作符(赋值)只有一个等号,很容易混淆。。。。
(3)逻辑运算符
运算符 | 格式 | 说明 |
or(逻辑或) | x or y | 有一个真,即为真 |
and(逻辑与) | x and y | 两者同真才真,其余都为假 |
not(非) | not x | 相反 |
(4)同一运算符
同一运算符用于比较两个对象的存储单元,说白了,就是比较地址。
回顾一下?
Python 对象由哪几部分组成?(小伙伴们,投票一下哦,在下方)
操作符 | 描述 |
is | is 是判断两个标识符是不是引用同一个对象 |
is not | is not 是判断两个标识符是不是引用不同对象 |
注意: is 与 ==区别
a:is 是用于判断两个变量引用对象是否为同一个,即比较对象的地址。
b:== 用于判断引用变量,引用对象的值是否相同。
eg:a 和 b 地址不同,所以返回 True
a = 50
b = 100
c = a is b
print(a,b,c,id(a),id(b))
7.时间的表示
计算机中时间表示是从“1970年1月1日00:00:00”开始,以毫秒(1/1000秒)进行计算,我们把1970年这个时间点称为“unix时间点”。
这样我们把时间全部用数字表示(中间用毫秒计算)
Python 中可以通过 time.time()获得当前时刻。返回值是以秒为单位,带微秒精度的浮点值
首先导入时间包: import time
获得以上数字,以上数字的含义:从1970年到现在的时间。
如果用pycharm 怎么办?
首先更新pip 包工具(如果已经更新忽略此步骤)
用此命令:python -m pip install --upgrade pip
看一下从现在到1970年,经过了多少秒?多少分?多少小时?多少天?多少月?多少年?
import time
totalSec = int(time.time())
totalMinutes = totalSec/60
totalHours = totalMinutes/60
totalDays = totalHours/24
totalYears = totalDays/365
print('1970年到现在总共 {:d} 秒'.format(totalSec))
print('1970年到现在总共 {:f}分'.format(totalMinutes))
print('1970年到现在总共 {:f} 小时'.format(totalHours))
print('1970年到现在总共 {:f} 天'.format(totalDays))
print('1970年到现在总共 {:f} 年'.format(totalYears))