Python程序的构成
python文件的创建和执行
(1)前面使用的交互式环境,每次只能执行一条语句;为了编写多条语句实现复杂的逻辑,本章开始我们通过创建Python文件,并执行该文件。 => 交互式环境一次只能执行一条语句,而文件一次可执行多条语句. (2)在IDLE 环境中,我们可以通过File-->new 创建Python 文件,并可以编辑该文件内容。我们也可以通过File-->save/save as 保存文件。一般保存成扩展名为py 的文件。 (3)需要执行编辑好的文件,可以用快捷键F5 或者点击Run-->Run module。
代码的组织和缩进
Python完全是依靠缩进来进行组织的
(1) “龟叔”设计Python 语言时,直接通过缩进来组织代码块。“缩进”成为了Python 语法强制的规定。 (2) 缩进时,几个空格都是允许的,但是数目必须统一。我们通常采用“四个空格”表示一个缩进。同时,也要避免将“tab 制表符”或者tab 与空格混合的缩进风格。目前,常用的编辑器一般设置成:tab 制表符就是4 个空格。 => 不要搞特殊,大家都是习惯使用4个,那就4个就完事了
使用注释#
"""
(1) 注释是程序中会被Python 解释器忽略的一段文本。程序员可以通过注释记录任意想写的内容,通常是关于代码的说明。 (2) Python 中的单行注释,使用#开始知道行结束的部分。 (3) 段落注释 """ ... """
使用\
行连接符号
因为Py是按行来解释执行的,行连接符是有必要的
一行程序长度是没有限制的,但是为了可读性更强,通常将一行比较长的程序分为多行。这是,我们可以使用\行连接符,把它放在行结束的地方。Python 解释器仍然将它们解释为同一行。
>>> a = [10,20,30,40,\ ... 50,\ ... 60] >>> a [10, 20, 30, 40, 50, 60] >>>
对象
Py中一切都是对象,后面学习的函数,类,都是对象.
每个对象由: 标识(identity),类型(type),value(值)组成.
引用
在Py中,变量也称为 => 对象的引用.
因为,变量存储的就是对象的地址,变量通过地址引用了对象
(1) Python是动态类型语言 变量是没有类型的,但是数据是有类型的. 变量不需要显示声明类型,根据变量引用的对象,Python解释器自动确定数据类型. 在Python中,每一个数值都是一个对象,每个对象都有自己id,type,value,所以没有必要进行变量的类型定义 (2) Python是强类型语言 每个对象都有数据类型,只支持该类型支持的操作. 比如: a = 3 + "aaa" 就是错误的,因为数值的类型不同.
标识符
标识符:用于变量、函数、类、模块等的名称。
标识符有如下的特定的规则
(1) 区分大小写 如 sxt 和 SXT 是不同的 (2) 第一个字符必须是 => 字母,下划线, 然后的字符是 字母,数字,下划线 (基本所有的语言都是这一样的) (3) 不能使用关键字。比如:if、or、while 等 => 在python中使用 help() => keywords 查看关键字 => 关键字是不用特意去背的,慢慢学慢慢记 (4) 以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如:__init__是类 的构造函数。
查看Python中的关键字
>>> help() help> keywords Here is a list of the Python keywords. Enter any keyword to get more help. False class from or None continue global pass True def if raise and del import return as elif in try assert else is while async except lambda with await finally nonlocal yield break for not help>
Python标识符命名规则
对于Python的标识符命名,除了上面基本的,还要遵循下面规定
变量和简单赋值语句
变量的声明和赋值
赋值 => 将对象和变量绑定
变量的声明和赋值用于将一个变量绑定到一个对象上,格式如下: 变量名 = 表达式
删除变量和垃圾回收机制
del 变量名 => 使用del关键字删除变量
系统自动对对象进行回收
通过del
删除不在使用的变量
>>> a = 123 >>> a 123 >>> del a >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined >>>
如果不存在变量对对象的引用 => 也就是没有变量绑定这个对象了,那么这个对象(在heap中), 就会被垃圾回收器清除
链式赋值
如果值是一样的话就可以一起赋值,因为不同变量,指向的还是同一个对象
清楚链式赋值的逻辑啊! id(a) = id(b) 绑定的都是 123 这个对象
x = y = 123 相当于 x = 123 y = 123
系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致) a,b,c = 4,5,6 相当于 a = 4 b = 5 c = 6
使用系列解包赋值实现变量交换
>>> # 使用系列解包赋值实现变量交换 ... a,b = 12,37 >>> b,a = a,b >>> a 37 >>> b 12 >>>
常量
Python不支持常量,只能在逻辑上进行控制
C,Java这些常量一旦定义就不能在修改
>>> MAX_SPEED = 120 >>> MAX_SPEED 120 >>> MAX_SPEED = 140 # Py的常量是可以修改的 >>> MAX_SPEED 140 >>>
最基本内置数据类型和运算符
每个对象都有类型,python 中最基本的内置数据类型: (这是最基本的内置数据类型,后面还可以自定义很多类型) 1. 整型 整数,2345,10,50 2. 浮点型 小数,3.14 或者科学计数法314e-2,3E4 3. 布尔型 表示真假,仅包含:True、False 4. 字符串型 由字符组成的序列。“abc”,”sxt”,“尚学堂”,”百战程序员”
数字和基本运算符
整数
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 这三种进制可以非常方便的进行“位运算”操作.
使用int()
实现类型转换
1. 浮点数直接舍去小数部分。如:int(9.9)结果是:9 2. 布尔值True 转为1,False 转为0。如:int(True)结果是1 3. 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。 也就是字符串转整数只能像 int("345") 这样的. int("23.5") 和 int("abc123") 和 int("123abc") 都会报错. 这与JS和Java这些不一致.
自动转型
整数和浮点数混合运算时,,表达式结果自动转型成浮点数。比如:2+8.0 的结果是10.0
整数可以有多大?
Python2 中,int 是32 位,可以存储从-2147483648 到2147483647 的整数(约± 21 亿)。Long 类型是64 位,可以存储:-2^63--2^63-1 之间的数值。 Python3 中,int 可以存储任意大小的整数,long 被取消。 Python3 中可以做超大数的计算,而不会造成“整数溢出”,这也是Python 特别适 合科学运算的特点。
浮点数
浮点数在内存中是使用科学计数法来表示的
浮点数,称为float。 浮点数用 a * b ^ 10 形式的科学计数法表示。比如:3.14,表示成:314E-2 或者314e-2。 这些数字在内存中也是按照科学计数法存储。
类型转换和四舍五入
1. 类似于int(),我们也可以使用float()将其他类型转化成浮点数。 如float("12.34") float(4) 2. 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是10.0 3. round(value)可以返回四舍五入的值(生成的是整数). 如 round(23.5) => 24 注:但不会改变原有值,而是产生新的值 => 也就是 值为3的那个变量,依旧在那里,不过经过运算或转化后产生了一个新的 值为3.0 的对象
增强型赋值运算符
时间的表示
这里讲时间因为时间也是一个数字
表示一个时间要选择一个时间零点
计算机中时间的表示是从“1970 年1 月1 日00:00:00”开始,以毫秒(1/1000 秒) 进行计算。我们也把1970 年这个时刻成为“unix 时间点”。 这样,我们就把时间全部用数字来表示了。 1970年1月1日 00:00:00 => 0ms 1920年10月22日 11:45:15 => -155241685000ms 2020年10月22日 11:45:15 => 1603338315000ms
time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000 毫秒)精度的浮点值
>>> import time >>> time.time() 1583243849.4714777
基本运算训练
# 绘制多个点,并计算出起始点和终点的距离 import math # 开方会用到 import turtle # 赋值训练 x1 = y1 = 50 x2, y2 = 50, -50 x3, y3 = -50, -50 x4, y4 = -50, 50 turtle.penup() turtle.goto(x1, y1) turtle.pendown() turtle.goto(x2, y2) turtle.goto(x3, y3) turtle.goto(x4, y4) distance = math.sqrt((x1 - x4) ** 2 + (y1 - y4) ** 2) turtle.write(distance) turtle.done();
布尔值
True
和False
实际上是特殊的变量
(1)Python2 中没有布尔值,直接用数字0 表示False,用数字1 表示True。 (2)Python3 中,把True 和False 定义成了关键字,但他们的本质还是1 和0,甚至可以和数 字相加。
布尔值和整数相加
# 布尔值的本质是 0 和 1 只是把True,False定义为关键字 >>> b = True >>> b += 5 >>> b 6
比较运算符
逻辑运算符
逻辑运算符为 and, not, or
注意与其他语言的 &&, !, || 区别
同一运算符
比较值 => ==
比较是否同一对象 => is
整数缓存问题
1. Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行. 2. 在Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。
小总结
1. is 比较两个对象的id 值是否相等,是否指向同一个内存地址; 2. == 比较的是两个对象的内容是否相等,值是否相等; 3. 小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用; 4. is 运算符比== 效率高,在变量和None 进行比较时,应该使用is。
来源:https://www.cnblogs.com/Rowry/p/12399610.html