python语法入门
程序=数据+功能
我们学习编程语言的目的是为了控制计算机能够像人一样去做事
所以说,编程语言中出现的所有的语法都是为了控制计算机能够像人一样去做xxx事
一、注释:
1.多行注释
加在哪?
通常加在整个文件的开头,用于对文件进行整体性的说明
可以有多少个?
所以说通常一个文件只有一个多行注释
“”“
注释1
注释2
注释3
"""
2. # 单行注释
print('hello') # 单行注释,PEP8规范 通常写在代码的上方或者后面
# 暂时注释掉不想运行的代码,被注释掉的代码不会运行
二、变量
1.什么是变量?
量指的是事物的状态。
变指的是事物的状态是可以发生变化的。
变量就是可以变化的量,量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等
变量是一种机制,什么机制呢?
变量是一种存取内存的机制。 这种机制/语法可以把事物的状态记录下来,并且以后可以取出来改变。
2.为什么要用变量?
为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的。
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
3.怎么用变量?
3.1 变量的基本使用原则
原则:先定义,后引用
定义的语法:变量名 = 变量值 name="egon"
引用变量的语法: print(name)
补充:程序出错有两种
( 1)、语法错误(SyntaxError):不允许犯语法错误,必须在程序运行前改正====>直接报错
prit("hello1")
print("hello2")
print("hello3"
print("hello4")
print("hello5")
(2)、逻辑错误:逻辑上的错误只能在程序运行前被python解释器发现,应该尽量把逻辑写到完美。====>运行前2行,第三行报错
print("hello1")
print("hello2")
print(age)
age = 18
print("hello4")
print("hello5")
3.2、变量的定义由三大部分组成
变量名:用来访问变量值
赋值符号:将变量值的内存地址绑定给变量名
变量值:就是我们记录的事物的状态,也就是存到内存中的数据 ps: age=18
print(age)
补充:
左值:变量名如果在等号的左边,是存值
右值:变量名不在等号左边,是取值
![在这里插入图片描述](https://img-blog.csdnimg.cn/95796cb27940493eaaaf6d2f211a0bd9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTcxNDE5OA==,size_16,color_FFFFFF,t_70) 3.3变量名详解:
3.3.1大原则:见名知意
3.3.2变量名的命名规范
1. 变量名只能是 字母、数字或下划线的任意组合
2. 变量名的第一个字符不能是数字
3. 不能使用python关键字,常用关键字如下
['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']
3.3.3变量名的命名风格
风格一:驼峰体
AgeOfTony = 56
NumberOfStudents = 80
风格二:纯小写字母加下划线(在python中,变量名的命名推荐该方式)
age_of_tony = 56
number_of_students = 80
补充: age 不加引号是一个变量名,代表的是取值行为
"age" 加上引号是一种变量值
3.3.4变量值的三大特性:
****id身份****
x = age
print(id(age))
print(id(x))
****type类型****
print(type(age))
value
反应的是变量在内存中的唯一编号,内存地址不同id肯定不同
三、常量
不能被改变的量
AGE = 18
AGE = 19
print(AGE)
变量值详解:变量值都有哪些常用类型,每一种类型都可以用来记录什么样的状态----》基本数据类型
四、基本数据类型
1.int整型:记录年龄、等级、号码等整数相关
age=18
2.float浮点型:记录薪资、身高、体重等小数
salary=3.1
3.str字符串类型:记录名字、性别、一段话等描述性质的内容
定义:在引号内包含一串字符,引号可以是''、""、""" """、''' '''
name="tony"
msg="两只黄鹂鸣翠柳
一行白鹭上青天"
print(type(name))
print(type(msg))
4.list列表型:按照位置存放多个任意类型的元素
0 1 2 3
l = [111,3.333,"aaaa",[666,777]]
print(l[1])
print(l[3])
print(l[-1][0])
hobbies = "read music movie"
hobbies = ["read", "music", "movie"]
print(hobbies[1])
练习:取出第二名学生的第二个爱好
students_info = [['egon', 18, ['play', 'music']], ['alex', 18, ['play', 'sleep']]]
print(students_info[1][2][1])
5.dict字典型:按照key:value的形式存放多个任意类型的value
定义:在{}内用逗号分割开多个key:value,其中value可以是任意类型,而key通常是字符串类型
info = {
"name": 'egon',
"age": 18,
"gender": 'male',
"level": 20,
"salary": 10
}
print(info["age"])
不好:
names = {
"name1":"张三",
"name2":"李四",
"name3":"往屋内”
}
推荐: names = ["张三","李四","往屋内"]
info = {
"name": 'egon',
"age": 18,
"gender": 'male',
}
info = ['egon',18,'male']
print(info['age'])
练习:所有同学的信息存下来
students_info = [
{"name": 'egon', 'age': 18, 'hobbies': ["read", 'music']},
{"name": 'tom', 'age': 19, 'hobbies': ["play", 'music', 'movie']},
]
print(students_info[1]['hobbies'][-1])
6、布尔类型:True,False,用来记录真假两种状态
通常不是直接定义的,而是通过比较运算得到的
tag = True
print(10 > 3)
print("egon" == "egon")
用途:但凡结果为布尔值的操作,都是要当做条件用
ps:布尔值分为显式与隐式两种
(1)显式的布尔值:结果明确为True和False的
tag = True
print(10 > 3)
print("egon" == "egon")
if 10 < 3:
print('ok')
else:
print('no')
(2)隐式的布尔值:结果看上去并不是布尔值,但是python解释器在背后会将其解析为True或False
所有的数据当条件都是隐式的布尔值,只需要记住0、None,空 对应的隐式的布尔值为False,其余都为tRUE
if "":
print('ok')
else:
print('no')
x = len("abcdef")
print(x)
x = print("hello")
print(x)
五、内存管理机制—— 垃圾回收机制GC
1.什么是垃圾回收机制
Python解释器自带一种机,专门用来回收不可用的变量值所占用的内存空间
2.为什么要用垃圾回收机制
程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是一件重要且繁杂的事情,而python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来。
3. 引用计数
(1)引用计数增加
x=18 18的引用计数次数为1
y=x 18的引用计数次数为2
l1=[111,x] 18的引用计数次数为3
print(id(x))
print(id(y))
print(id(l[1]))
(2) 引用计数减少
del x # 值18的引用计数为2
y = 100 # 值18的引用计数为1
del l[1] # 值18的应用计数为0
4.分代回收:为了解决引用计数的效率问题
问题:个别垃圾有可能得不到及时的清理
5. 标记/清除:为了解决循环引用带来的内存泄露问题
核心:一个变量值如果没有任意一条从栈区到自己的引用,就会被标记下来,方便后续清除。
lll = [66,77] (见右图)
l1 = [111]
l2 = [222]
l2.append(l1)
l1.append(l2)
print(l1) # l1 = [111的内存地址,l2的内存地址]
print(l2) # l2 = [222的内存地址,l1的内存地址」
print(l1[1][1]) (见下图)
del l1
print(l2[1][0])
del l2
3. 小整数池[-5,256]
从python解释器启动的那一刻开始,就会在内存中事先申请一系列内存空间存放好常用的整数二 小整数池
x = 100000
y = 100000
x = "abc"
y = "abc"
print(id(x))
print(id(y))
python语法入门的更多相关文章
- python语法入门之流程控制
python语法入门之流程控制 流程控制是指控制流程,具体指控制程序执行的流程. 流程控制分为三种: 1.顺序结构 程序从上而下的正常执行(正常执行的代码就是顺序结构) 2.分支结构 赋予程序人的思维 ...
- 03.python语法入门--注释、变量
注释 """多行注释加在整个py文件的开头用来对该py文件进行一个整体性的说明通常一个py中只有一个多行注释"""# 这是一行贼溜的代码p ...
- 07.python语法入门--流程控制
分支结构 什么是分支结构 为什么要用分支结构 如何使用分支结构 if语法 if应用案例 循环结构 什么是循环结构 为什么要用循环结构 如何使用循环结构 while循环语法 while循环应用案例 fo ...
- 002 python语法入门
一:基本数据类型知识点 1.基本数据类型 Number 数字 String 字符串 Bool 布尔 List 列表 Tuple 元组 Set 集合 Dictionary字典 2.分类 )标准的pyth ...
- Python语法入门02
引子 上一篇我们主要了解到了python这门编程语言,今天来说一下关于用户交互,数据类型和运算符方面的学习内容 用户交互 什么是用户交互? 用户交互就是人往计算机里输入数据(input),计算机输出结 ...
- python语法入门之变量
目录 一.变量 1.1 什么是变量 1.2 怎么使用变量 1.3 变量名的命名规范 1.4 变量名的命名风格 1.5 变量的三大特征 2.常量 一.变量 1.1 什么是变量 # 变量就是可以变化的量, ...
- 05.python语法入门--垃圾回收机制
# (1)垃圾回收机制GC# 引用计数# x = 10 # 值10引用计数为1# y = x # 值10引用计数为2## y = 1000 # 值10引用计数减少为1# del x # 值 ...
- 04.python语法入门--基本数据类型
# python是一门解释型的.强类型的.动态语言# 一:数字类型# 1.1 整型int:记录人的年龄.等级.号码.个数# age = 18# print(type(age))# 1.2 浮点数 ...
- 06.python语法入门--与用户交互、运算符
与用户交互 输入 input # python2与python3的区别 '''python3''' # 将获取到的用户输入赋值给变量名res res = input(' ...
随机推荐
- 图的存储与遍历C++实现
1.图的存储 设点数为n,边数为m 1.1.二维数组 方法:使用一个二维数组 adj 来存边,其中 adj[u][v] 为 1 表示存在 u到 v的边,为 0 表示不存在.如果是带边权的图,可以在 a ...
- Spring中这么重要的AnnotationAwareAspectJAutoProxyCreator类是干嘛的?
大家好,我是冰河~~ 停更了很久的[Spring注解系列]专题,终于重新更新了,我们还是接着之前的文章继续往下更新.在<[Spring注解驱动开发]二狗子让我给他讲讲@EnableAspectJ ...
- Tars | Win10下Docker部署TarsJava(SpringBoot)全过程及踩坑记录
@ 目录 前言 1. 相关环境版本: 坑点一:VMware与Win10 Docker冲突 坑点二:20.版本TarsJava(SpringBoot)依赖文件缺失 2. Docker安装: 坑点三:Do ...
- 基于js的姓名校验
// 姓名校验 isRightName: function(name) { var reg = /^[a-zA-Z\u4E00-\u9FA5\uF900-\uFA2D\u00B7\u2022\u009 ...
- linux学习之路第三天(vim和vi使用)
vi和vim编辑器 vi和vim的三种常见模式 1.正常模式 在正常模式下,我们可以使用快捷键 以vim打开一个档案就直接进入一般模式了(这是默认的模式).在这个模式中,你可以使用 上下左右按键来移动 ...
- mysql,mongodb,redis区别
MongoDB: 它是一个内存数据库,数据都是放在内存里面的. 对数据的操作大部分都在内存中,但 MongoDB 并不是单纯的内存数据库. MongoDB 是由 C++ 语言编写的,是一个基于分布式文 ...
- PID算法控制直流电机笔记
1.将偏差的比例.积分和微分通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器称为PID控制器.简单说就是根据系统的误差,利用比例.积分.微分计算出控制量进行控制. 2.为什么需要P ...
- 二进制方式搭建Kubernetes集群
环境准备: 演练暂时用单节点一台master和一台node节点来进行部署搭建(kubernetes 1.19版本) 角色 IP 组件 master 10.129.246.114 kube-apiser ...
- Spring 的循环依赖问题
什么是循环依赖 什么是循环依赖呢?可以把它拆分成循环和依赖两个部分来看,循环是指计算机领域中的循环,执行流程形成闭合回路:依赖就是完成这个动作的前提准备条件,和我们平常说的依赖大体上含义一致.放到 S ...
- 「AGC010F」 Tree Game
「AGC010F」 Tree Game 传送门 切了一个 AGC 的题,很有精神. 于是决定纪念一下. 首先如果任意一个人在点 \(u\),他肯定不会向点权大于等于 \(a_u\) 的点走的,因为此时 ...