hi~大家好呀,本篇我在自学Python3过程中的一篇自学笔记,主要参考书上和网络上的内容,有错请大家多多指出,让我们一起学习吧~
本篇文章,我会具体学习Python程序的运行原理以及如何运行Python程序,之后就是在具体学习Python前的一些基础知识。
--------------------------------------------------------------------------------------------------------------------------------
目录
一、初识Python程序并且学会使用自带IDLE
1.Python运行程序原理
2.Python程序的运行以及在IDLE环境下的使用
二、Python基础知识:
1.Python的书写规范
2.标识符和关键字
3.Python的数据类型
4.Python的运算符
首先,Python是一种程序语言。在Python的发展过程中形成了Python2.x和Python3.x两种不同系列的版本。本篇就是基于我的Python版本3.10下写的。
既然是一种程序语言,那么也满足人对计算机实现指令操控的需求。程序在具体的实现上遵循了一定的模式,典型的程序设计模式就是IPO模式:程序由输入(Input)、处理(Process)、输出(Output)三部分组成。
那么,实现上述要求的首先就是我们所完成的源代码。正如C语言中的.c文件,C++中的.cpp文件,java中的.java文件,Python中类似这样的文件就是.py文件,同样的,也就是源文件。然后经过Python解释器翻译成中间码,中间码是.pyc文件。再由Python虚拟机PVM就像Java中的虚拟机JVM那样,将这个中间码逐条翻译成机器指令进行执行。
上面的大致过程可以用如下图进行解释:
需要进行说明的是,.pyc文件保存在Python的安装目录下的Lib中的__pycache__下的。
如果Python无法在磁盘上写入字节码即.pyc文件的话,那么其字节码文件就会只在内存中生成,程序运行结束时丢弃。所以平时写的源程序只需要装载一次,所以并没有保存.pyc文件。但是比如import(导入头文件类似的功能)导入其他的源文件时,此时就会在当前目录下生成.pyc文件,后序会进行演示。 -- .pyc文件可以重复利用,省略了解释器那一步,能够提高执行效率。
在安装完Python包后,会发现在计算机快捷栏下的Python3中会出现如下四种可执行文件:
第一个IDLE就是自带的集成开发环境。
第二个时以命令行的方式启动Python的解释器。
第三个和第四个均为帮助文档。
首先,我们需要认识到的是如何在windows自带的cmd下执行Python程序和如何在自带的IDLE下完成新建源程序文件、执行的过程。
先要明确Python编程语言的程序执行方式:
1.交互方式:
Python解释器即时响应并且运行用户的程序代码,有输出就输出结果。
2.文件方式:
即编程方式,写在程序文件中,启动解释器批量执行文件的代码。
这两种的执行方式分别适用于调试少量代码和最常用的编程方式。
比如,在cmd下以交互执行方式进行运行:(两种方式打开:1.cmd --输入Python 2.打开Python包中的第二个执行文件)
第一种方式:
第二种方式:
当输入一行Python代码后,按下enter,解释器立马进行工作,执行当前这条Python语句。
同样的,此时光标继续闪动,可以继续输入简单的Python代码,按下enter就执行。(如果没有显示打出,那么也就相当于换行效果)
上面就是简单的cmd下的交互实现,下面我们具体了解一下在IDLE的执行Python程序吧:
IDLE下的交互执行:(打开IDLE可以去那四个文件中的第一个文件打开哦,也可以参照目录:C:\Users\HP\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python 3.10)
直接打开此画面就可以直接进行交互执行了:
可以发现和刚刚的操作无异。
可以发现,在Python的交互执行模式下,并没有写入磁盘中的.py文件,也就是没有实现文件的执行方式。cmd下交互执行无法使用文件的执行方式,但是在自带的IDLE下是可以进行实现的:
IDLE下的文件执行:(程序的常见标准执行方式)
首先按下File->New File就可以新建一个Python文件,初始文件名就是untitled,当crl s或者File->Save第一次保存,就会要求输入文件名字。我们写入之前测试的简单Python代码,然后保存为test1的名字。
保存
然后在当前界面, 按下Run->Run Module就可以运行了(或者快捷键F5):
(注意是在源文件所在的界面按下Run)
在了解完Python程序的执行方式后以及使用Windows的cmd进行交互式执行、IDLE的使用,我们来稍微了解一下Python的相关基础知识,语法吧:(之后我就会在PyCharm下进行编程哦)
Python通常一行书写一条语句,一行一条的时候,语句结束不加分号。
Python一行书写多条语句的时候,语句间应该使用分号间隔。
如果书写一条语句过长,需要进行换行书写的话,可以在一条语句外部加上\就表示分行,如果是()、[]、{}括号之类的在内部默认支持分行。
上述就是Python的语句规范,下面代码作为演示:
data1 = 1
data2 = 2
# Python语句通常一行书写一条,结尾不加分号
data3 = 3; data4 = 4
print(data3); print(data4)
# 一行书写多条语句直接应该使用分号进行间隔
str1 = "Hello" \
"world"
# 一条语句写不下一行时可以使用\进行间隔
str2 = ("hello"
"world")
day = [1, 2,
3, 4]
print(str1)
print(str2)
print(max(day))
# 同样使用括号也支持一行语句分行书写,需要注意"
注意""括起来的是字符串哦,在换行的时候,别忘了""的存在哦~
Python中的语句块:
一个语句块,也就是复合语句,由多行代码组成。Python中的一个语句块由多行代码相同的缩进组成。C/C++和Java中一个语句块就是用大括号来进行表示的{}
建议以4个空格为一个缩进。
比如下面使用if else语句进行演示:
electricity = 10
if electricity < 20:
i = 100 - electricity
print("当前电量不足,需要充{}的电量".format(i))
else:
print("当前电量充足,还有{}的电量".format(electricity))
注意if和else语句在C/C++/Java中的条件判断的圆括号()不存在,取而代之的就是在对应关键字之后加一个空格,结束条件后加上:作为此语句下的语句块开始。
Python中的注释:
多行注释使用的是三个'或者"作为开始和结束的标志,单独为一行,中间就可以进行多行注释了。这其实是一种跨行的字符串。
单行注释使用的是#,在其后面(此行)写即就为注释 。
str1 = """
多行注释
2022 - 10 - 24
"""
print("单行注释") # 输出语句 -- 单行注释
print(str1) # 可以证明多行注释实际上就是一个多行字符串
'''
这个
也是多行注释哦
'''
当然,在写注释的时候也需要一定的规范:比如在#后写注释时,之间要留下一个空格。然后在行内注释的时候直接的间隔至少两个空格哦。
计算机数据中的一个变量、方法、对象都需要名称,而这些名称所使用的的符号就是所谓的标识符,方便程序进行调用。
标识符的格式:
Python标识符可以由如下组成:字母、数字、_。同理,注意不能以数字开头。
标识符区分大小写,没有长度限制。
注意不可和关键字重名。
标识符的命名尽量符合见名知义的原则,提高代码的可读性。
在了解完后标识符后,我们再来看看关键字吧:
Python语言保留某些单词作为特殊用途,这些单词被称为关键字。标识符不可与其重名哦~
and | as | assert | break | class | continue |
def | del | elif | else | except | False |
finally | for | from | global | if | import |
in | is | lambda | nonlocal | not | or |
None | pass | raise | return | True | try |
while | with | yield |
可以使用帮助文档进行详细查看关键字信息哦,在交互执行下,输入help()
然后输入指令keyworlds
任意输入一个关键字名字即可:
按下enter就是看下一行,输入q就可退出当前画面,quit就退出此查询系统。
计算机程序设计的目的是存储和处理数据,将数据分为不同并且合理的类型既可以方便数据处理,也可以提高数据的处理效率,节省储存空间。数据类型指明了数据的状态和行为。
在Python中,数据类型有:
数值类型(Number)
基本数据类型,包含整型(int)、浮点型(float)、复数类型(complex)、布尔类型(bool)四种。
字符串类型(Str)
是由一对' 或者"以及三个引号'''、"""括起来的字符序列。由于字符串应用频繁,有时候我们也将字符串当做基本数据类型哦。
列表类型(List)
是一种序列类型,由[]括起来的数据集合。列表内容用,进行分隔。
元组类型
元组由0个和读个元素组成的不可变序列类型。用()括起来的数据集合,和列表的区别除了括号不同外就是无法修改数据。
字典类型
映射类型,可以实现通过数据查找关联数据的功能,是用{}括起来的数据集合:字典中的数据包含两部分:键和值,键通常是一个字符串,对应的值可以任意类型,中间由:表示映射关系。同样的不同元素之间用,进行间隔。
集合类型
在Python中,集合是一组对象的集合,此对象可以是任何类型。元素之间没有任何顺序,并且元素都不重复。集合和数学上的集合类似,使用{}进行表示或者set()进行表示。空集合必须使用set()进行表示。
上述类型只是大致的介绍和理解,下面简单使用代码演示一下如上类型:
整型中,表示其数据的方式有四种:十进制(直接就是字面值),二进制(以0B/0b开头),八进制(0o/0O开头),十六进制(0X/0x开头)。可以使用方法type()测试类型。将十进制转化为对应进制类型的方法有:bin()、oct()、hex()
(在Python中变量具备类型的概念,即变量的类型由所赋的值来决定。--系统自动识别变量的数据类型)
我们可以使用交互执行的方式测试代码:
浮点型是带有小数点的数据类型,也可以使用十进制或者科学计数法进行表示:科学计数法中E或者e的基数为10,后面的整数表示指数,默认为+,想表示负数在E/e后加-即可。Python的浮点型占8个字节,能表示数的精度为2.2e-302~1.8e308。
f = 1.2 # 带有小数点的
f3 = 1.1e2 # 可以使用科学计数法进行表示
f4 = 1.2E-2 # +-
print(f, f3, f4)
print(type(f), type(f3), type(f4))
布尔类型可以看做是一种特殊的整型,True和False。如果将这两个关键字进行数值运算就分别代表1和0.空对象空的数据类型均可以当做是False,有值的均为True。
使用bool方法可以验证变量是否为空。
Bool = True
print(type(Bool))
i = 0
print(bool(i)) # 验证空对象
while Bool:
print(i, end=" ") # end参数可以修饰结尾的符号,默认为\n
i += 1
if i == 10:
Bool = False
print() # 打印\n
print(i)
print(bool(i)) # 验证非空对象
字符串类型、列表类型、元组类型、集合类型:
str1 = 'Hello'
str2 = "Hello" # ''或者 "",多行字符串使用'''或者"""进行,上面已经演示过
print(str1, str2)
list1 = [1, 2, 3, "world", 3.2] # 列表 数据集合 -- 可变
print(list1[0])
list1[0] = "Yu"
print(list1[0])
tuple1 = (1, 2, 3, "world") # 元组 数据集合 -- 不可变
print(tuple1[0])
print(tuple1[3])
gather1 = {1, 2, 3} # 集合 元素不重复
gather2 = set([1, 2, "shen"])
gather3 = set() # 空集合
print(bool(gather3))
print(gather1, gather2)
字典类型:使用{},数据有两个部分,键值。每个数据之间用,进行分隔。
dictionary = {'year': 2022, 'age': 19, '生日': "农历6月初10"}
print(dictionary)
print(dictionary.get("year"))
print(dictionary.get("age"))
print(dictionary.get("生日"))
使用get方法可以返回键对应的值。
如果想要比较类型之间的是否相同的话可以使用isinstance(obj, 类型),相同就返回True,否则返回False。
运算符是用来表示不同运算类型的符号,运算符可以分为算术运算符、比较运算符、逻辑运算符、赋值运算符:
算术运算符:
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
** | 求幂 |
// | 整除 |
比较运算符:< > <= >= == != (判断完后返回的值也就是布尔类型的)
赋值运算符:=
相关应用:
复合赋值运算符:+=、-=、*=、**=、/=、%=、//=
位运算符:根据整型的二进制进行变化
~ | ~i | 按位取反(二进制每一位进行取反) |
& | i&j | 按位与(二进制对应的一位均为1就为1,否则为0) |
| | i|j | 按位或(二进制对应的一位有1就为1,全0就为0) |
^ | i^j | 按位异或(二进制对应的相等就为0,不相等就为1) |
>> | i>>j | 右移(i为被操作数,向右移动j位,左边补符号位,无符号补0) |
<< | i<左移(i为被操作数,向左移动j位,右边补0) |
|
逻辑运算符:and、or、not表示逻辑与、逻辑或、逻辑非。C/C++中为&&、||、!
运算符的优先级:
优先次序 | 运算符 | 优先次序 | 运算符 |
1 | **(指数) | 8 | | |
2 | ~ +(正数) -(负数) | 9 | < > <= >= |
3 | * / % // | 10 | == != |
4 | + - | 11 | = += -= *= /= %= //= |
5 | >> << | 12 | not |
6 | & | 13 | and or |
7 | ^ |