0、前言
本篇内容简单不烧脑,适用于新手小白,有许多扩展小知识,希望可以帮助大家更好的学习python!
1、入门小知识
1.1 第一句代码 “hello world”
在学习Python前我们首先完成一个仪式,也就是输出我们的第一句代码:
print('hello world')
输出结果:
hello world
1.2 运行代码的方式
1、临时的: 在Python解释器内部写代码,写一句输出一句,不能永久保存,通常用于临时调试代码;如:IDLE
2、永久的: 将代码写入文件永久保存,利用专业的软件通过文件路径,可以调用python文件,从而执行程序代码;如:pycharm(提供了图形化操作界面,可以更好的编写代码)
1.3 前提
- Python代码中的语法符号,都是英文状态的
- 我们学习Python语言是为了控制计算机,让计算机像人一样去工作,所以Python这门语言中,所有语法的意义都是让计算机具备人的某一项技能,这句话是我们后续理解所有Python语法的根本。
1.4 语法规范
1.4.1 引号的使用
在python中引号的使用必须成双成对,不能出现两边使用不同的引号,如:
print('正确写法1') # 单引号
print("正确写法2") # 双引号
print('错误写法") # 两边引号不成对,会报错
1.4.2 注释
1.4.2.1 什么是注释?
- 注释就是对代码的解释说明
- 注释的内容不会被当做代码运行
1.4.2.2 为什么需要注释?
- 主要是为了增强代码的可读性,方便理解
- 用于临时调试代码(在开发程序的时候)
1.4.2.3 如何使用注释?
注释分为两种:
- 单行注释:
在一行中以英文 # 号开头,# 号后面的内容都不会被运行;如:
# print("hello world!")
# print("hello world!") 我不会被运行哦!
扩展:
- Pycharm中在 # todo 后添加的注释会被高亮显示,如:
- pycharm中的快捷键
ctrl +c 复制
ctrl +v 粘贴
ctrl +s 保存
ctrl +x 剪切
ctrl +a 全选
ctrl +z 回退一步
ctrl +d 复制当前行
ctrl +y 删除当前行
ctrl +/ 快速注释、解开注释
- 多行注释:
使用三对引号进行包裹,引号内的内容不会被运行,成对的单引号(‘’’ ‘’')或双引号(“”" “”")都可以;如:
'''引号中的内容都不会被运行-------------------
print("hello world")
2223333
hhhh
'''
"""
我也不会被运行!666
1111
hahaha
"""
1.4.3 pycharm中的语法规范
在pycharm中编写代码,我们经常会在代码下看到许多波浪线,一般我们将它们分为两类:
- 红色波浪线: 表示该代码语法上有错误,运行后会报错,需要修改
- 其它颜色波浪线: 这些波浪线通常不是报错,不会影响代码的运行,但是不规范
说明:
规定: 类似法律,没有遵守python的语法规定,编写出的代码电脑看不懂就会报错
规范: 类似道德,在Pycharm中有自己定义的规范 pep8;他认为按照它的标准编写的代码更好看,不遵守不会影响代码运行
1.4.4 pycharm中出现的bug/报错
分为以下几种:
- 语法错误 SyntaxError
代表你写的语法有问题,不符合Python的语法规范,电脑看不懂
需要根据报错提示,解决bug,这是我们需要具备的一个能力 - Error(异常)
代码逻辑有问题,根据报错提示,进行修改 - bug
代码可以运行,但运行结果和你预期的不符,这时需要一点点的进行代码调试,慢慢分析自己的代码,直到符合预计结果
2、变量
拓展:
在C、JAVA等语言中在写完一句代码后以 ; 号结尾,而在python中一行通常只写一句代码,且不用以 ; 号结尾;但其实Python是可以用 ; 号结尾的,但不建议这样做;如:
print("hello world!"); print('hahahahaha'); print('12121212')
运行结果:
hello world!
hahahahaha
12121212
说明:
若Python以 ; 号结尾,则一行可以同时编写多句代码,运行结果不变,但这样代码就会变得冗余,从而降低可读性,不方便理解,所以我们通常一行只写一句代码
2.1 变量的定义
2.1.1 什么是变量?
变量是可以发生变化的量,用来临时保存数据
2.1.2 为什么要有变量?
为了使计算机像人一样具备临时记忆的功能
从底层上讲:数据保存在电脑内存中,而变量就是这块内存空间的名字
2.1.3 如何使用变量?
必须先定义变量,在使用变量;定义变量后,直接使用变量名,就可得到对应的变量值
格式:变量名 = 变量值
如:
x = '我是变量x'
y = '我是变量y'
z = '我是变量z'
print(x) # 使用变量必须在定义变量之后
print(y)
print(z)
输出结果:
我是变量x
我是变量y
我是变量z
2.1.4 变量名覆盖
当我们定义好一个变量后,在后面又定义了一个相同的变量,那么前面的变量就会被后面的变量覆盖掉;如:
a = 666
a = 777 # 将前面的变量值覆盖掉
print(a)
输出结果:
777
2.2 深度解析变量
基本原则: 必须先定义,在使用
2.2.1 定义变量到底发生了什么?
定义变量:变量名 = 变量值
执行上面的语句后,会发生以下的事件:
- 在电脑内存中开辟一块空间
- 将定义的变量值放入到这个空间当中
- 将这块空间的地址绑定给变量名
最后python通过变量名来调用存放到内存中的变量值
结合图画理解:
2.2.2 变量命名规定
- 只能是字母,数字,英文下划线的组合
- 不能以数字开头
- 不能是python中的关键字
关键字:python中提前定义好了有意义的字符,若我们跟它取相同的名字,电脑就无法判断该使用谁的数据,导致出错
常见的关键字,可以在Pycharm中运行以下代码查看:
import keyword
print(keyword.kwlist) # 打印出python中的关键字
输出结果:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
拓展:
变量名可以是中文吗?
其实是可以的,但不建议使用中文名变量,容易出现bug
我是阿豪 = 666666
print(我是阿豪)
输出结果:
666666
2.2.3 推荐的变量名(取名要讲究)
- 见名知意,不要用无意义的字符,避免混乱
- 推荐使用小写,下划线链接法,驼峰法
如:
name = '盲敲代码的阿豪'
time = '14:20'
id_student= '24001'
Ahao = '阿豪' #驼峰法
AHao = '阿豪'
2.2.4 常量
常量指在程序运行过程中不会改变的量
2.2.4.1 为什么使用常量?
在编写代码程序时,有些值是固定的,不会被改变,这时可以把这个值定义为一个常量来使用;
如:圆周率 π=3.1415926....
在python中没有常量的概念,我们口头上约定将全为大写的字母规定为一个常量;如:
CONSTANT = '常量' # 该变量在程序中不会改变
2.2.5 变量的本质
我们定义变量是因为后续会经常使用到这个数据,若一个数据只会用到一次,那么就没必要定义它
我们在编写代码时一定要尽量简写代码,不要写无意义的代码,避免代码重复;用最少得代码得到想要的结果
2.2.6 变量的三大特性(id、type、value)
- id
- id是变量在内存中的唯一编号
- 变量的内存地址不同id肯定不同
- 变量的内存地址相同,内存中保存的数据也相同
我们通常通过id来判断是否为同一个数据
name = '阿豪'
x = '阿豪'
print(id(name))
print(id(x))
输出结果:
1982956173616
140728009301456
-
type (数据类型)
为什么需要数据类型?
电脑的内存空间是有限的,若所有的数据类型都相同,在编写代码时就无法满足不同的需求,从而浪费资源,所以数据类型的作用:
1、合理的利用内存空间
2、可以更好的操作数据,以满足不同需求
数据类型是可以更好利用内存空间的一种方式,不同的数据类型无法放在一起使用 -
value (数据)
内存中保存的数据,通过变量名找到并调用该数据
拓展:python中的小整数池
我们在打开pycharm时,会出现卡顿,启动变慢,是什么原因呢?
前面我们提到过,不同变量的内存地址不同,id就不同,而事实真的如此吗
-
在python解释器(IDLE)启动时会开辟一个块内存空间,作为小整数池,范围在 [-5,256],也就是变量赋值在这个范围间的id是相同的,如:
从上面可以看到,明明定义了两个不同的变量,但id却相同,就是因为python解释器开辟了一块内存空间专门用于对变量值在 [-5,256] 间的整数使用,当有不同的变量使用在这个范围的同一个数时,他们就会指向同一块内存空间,所以内存地址相同,id也相同 -
在pycharm启动时同样会开辟一个小整数池,且开辟的范围更大,所以pycharm启动较慢其实是因为需要开辟更大的内存空间
除了整数,还有一些字符串也是如此,提前开辟了空间