1.python语法之注释
注释:相当于是对代码的一串解释信息
三种注释的方式
方式1
单行注释 # 注释内容
ps:shift + #
方式2
多行注释 '''注释内容'''
ps:回车键左边那个键 英文输入法下 连续按三下
方式3
多行注释 """注释内容"""
ps:回车键左边那个键 英文输入法下 shift + 连续按三下
pycharm中可以使用:
ctrl+?快速注释和解开注释
代码缩进使用tab
代码回退使用shift+tab
2.PEP8规范
"""注意
pycharm中如果出现非红色的波浪线 表明你写的代码有可能不是很规范不影响执行
PEP8该规范定义了一些较为标准的编写格式 可以不遵守但是显得很low!!!
我们在学习的时候不需要死记硬背 可以利用pycharm自动规范
反向推到规范守则
ps: ctrl + alt + L
课下也可以自行百度查阅规范详细内容
3.变量与常量
1.变量
用来记录事物变化(可能会经常改变)的状态
2.常量
用来记录事物不变(可能不经常改变)的状态
ps:变量和常量其实在使用的时候是一样的 所以后面我不做特殊说明的情况下统一称之为变量
3.基本使用
大街上看到了老师立刻脑袋瓜子里面就会有一些信息
姓名是小王 性别是男性 职位是程序员 ......
对于到程序中需要做以下改变
姓名 = 小王
性别 = 男性
职位 = 程序员
最为正规的写法
name = '小王'
age = 18
job = '讲师'
4.语法结构
name = '小王'
'''
变量名/常量名 赋值符号 数据值
'''
使用的时候通过前面的变量名就可以反复查询后面的数据值
4.变量与常量的本质
name = '小王'
遇到赋值符号 先看符号的右侧 再看符号的左侧
1.在内存空间中申请一块内存空间 存储数据值为'小王'
2.给该内存空间绑定一个名字 name
3.通过name就可以访问到内存空间中存储的数据值小王
ps:如果内存中数据值没有绑定名字 那么意味着我们使用不到 也就是垃圾数据!!!
1.一个数据值可以同时被多个名字绑定
如果赋值符号的右侧也是一个名字
那么意思是让左边的名字绑向右边名字绑定的数据值
a = 123
b = a
c = b
2.同一个名字同一时间只能绑定一个数据值
x = 10
x = x + 10
print(x) # 结果:20
ps:如果右侧是名字和数据值的组合 那么需要先做相应的运算 得出单纯的数据值之后再做绑定
5.变量的命名规范
1.变量里面最多只能出现数字、字母、下划线
2.数字不能开头
3.变量不能与python关键字冲突
4.变量尽量做到见名知意
真的没办法的时候 才可以临时用一下汉语拼音(尽量不要这样)
ps:前期学习阶段 可以简单的用用字母(仅限于教学)
6.变量的命名风格
1.下划线 # 单词之间下划线隔开 python推荐使用
user_name_from_others = 'sam'
2.驼峰体 # 单词之间首字母大写 javaScript推荐使用
2.1.小驼峰
userNameFromOthers = 'jason'
3.1.大驼峰
UserNameFromOthers = 'jason'
ps:有些程序员洁癖很严重 用了一个风格就不准出现其他风格
7.常量
"""君子协定"""
# 常量的其他特性与变量一致!!!
1.在python中没有真正意义上的常量 所有的名字都是变量
将纯大写的变量名看成是常量
HOST = '127.0.0.1'
print(HOST) # 127.0.0.1
HOST = '192.168.1.112'
print(HOST) # 192.168.1.112
2.在其他编程语言中存在真正意义上的常量 绑定了关系就不能再修改
浏览器其实是一个编写js代码的工具
let name = 'jason'
name = 'tony' 变量可以修改
const pi = 3.14
pi = 666 报错 常量不能修改了!!!
8.数据类型的概念
如何理解数据类型
eg:
日常生活中
表示姓名用文本 表示年龄用整数 表示体重用小数
视频文件 文本文件 表格文件 pdf文件 程序文件
代码程序中
也需要有不同的数据类型来表示不同的数据状态
储备知识
如何查看数据的数据类型
type()
ps:数据类型的学习就相当于在学习英语的字母、单词
数据类型先全部混个眼熟 知道谁属于哪个类型以及如何定义出来即可!!!
9.数据类型——整型
其实就是整数!!!
主要应用场景:年龄 学生人数 年份
基本使用:
age = 18
stu_num = 38
year = 2022
表达关键字:int
核心语法:直接写整数即可
10.数据类型——浮点型
其实就是小数!!!
主要应用场景:体重 身高 薪资待遇
基本使用:
weight = 76.8
height = 1.83
salary = 3.1
表达关键字:float
核心语法:直接写小数即可
11.数据类型——字符串/字符型
其实就是文本信息!!!
主要应用场景:描述性性质的信息 姓名 住址 爱好
基本使用:
name = 'sam'
addr = "上海"
hobby = '''读书\写字'''
info = """你们好呀 准备好起飞了吗"""
表达关键字:str
核心语法:引号引起来的部分
疑问1:为什么定义字符串需要有这么多种方式???,比如一下语句:
"老师说:"只要下定决心好好学 你肯定不会失望"" # 运行报错
原因:我们在定义字符串的内部可能也需要使用引号 如果冲突了会报错
所以定义字符串给出了多种方式 避免冲突
核心:明确定义字符串的符合和内部文本的符号(不冲突即可)
疑问:三引号前面学习的是注释 为什么又变成了字符串
当三引号左边没有赋值符号和变量名的时候 意思是注释
当三引号左边有赋值符号和变量名的时候 意思是字符串
12.数据类型——列表(list)
1.本质
能够存储多个数据 并且能够方便的获取整体或者局部
2.基本使用
l1 = [1, 2, 3, 4, 5]
3.语言描述
中括号括起来,里面可以存放多个数据值,数据值与数据值之间逗号隔开
数据值可以是任意数据类型
l2 = [11, 11.11, 'sam', [11, 22, 33]]
4.索引取值
# name_list = ['张三', '王二', '李五']
'''索引取值:在IT领域数字的起始位置通常是从0开始 现实生活中是从1开始'''
print(name_list) # 张三, 王二, 李五
print(name_list[1]) # 王二
print(name_list[0]) # 张三
print(name_list[100]) # 索引超出范围直接报错
练习题:在以下列表中获取666
l1 = [11, 22, [111, 222, 333, [123, 321, 666], 444]]
'''遇到复杂构造的数据 先明确整体有几个数据值 然后再一步步拆分'''
# 1.先获取666所在的小列表
print(l1[2]) # [111, 222, 333, [123, 321, 666], 444]
l2 = l1[2] # 将索引取值获取到的数据绑定给l2
print(l2) # 之后就可以通过l2获取列表
# 2.再获取666所在的小小列表
print(l2[3]) # [123, 321, 666]
l3 = l2[3] # 将索引取值获取到的数据绑定给l3
# 3.变成了最简单的索引取值情况
print(l3[2]) # 666
'''熟练之后 上述可以简写成一步完成'''
print(l1[2][3][2]) # 666
13.数据类型——字典(dict)
1.本质
能够存储多个数据 并且能够方便的获取整体或者局部 并且数据具有对于解释
2.基本使用
info_dict = {'姓名': 'sam', '年龄': 18, '爱好': 'read'}
3.语言描述
大括号括起来 里面可以存放多个数据 数据的组织形式是K(key):V(value)键值对
K是对V的描述性性质的信息 一般是字符串
V是真实的数据值 可以是任意数据类型
4.按K取值
info_dict = {'姓名': 'sam', '年龄': 18, '爱好': 'read'}
'''字典取值:字典无法使用索引取值(因为字典是无序的) 可以使用按K取值'''
print(info_dict['姓名']) # sam
print(info_dict['年龄']) # 18
print(info_dict['家产']) # K不存在直接报错
5.取值练习题,获取值18
data = {'name':'sam','others':[111,222,{'a1':'嘿嘿','a2':'哈哈','a3':[123,{'name':'sam1','age':'18'}]}]}
'''单纯为了练习取值操作而已'''
'''按值分开'''
data = {
'name': 'sam',
'others': [
111,
222,{
'a1': '嘿嘿',
'a2': '哈哈',
'a3': [
123, {
'name': 'sam1',
'age': 18
}]}]}
# 1.先获取大列表
l1 = data['others']
print(l1) # [111, 222, {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'sam1', 'age': 18}]}]
# 2.获取大列表中的字典值
d1 = l1[2]
print(d1) # {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}
# 3.继续获取字典的值
l2 = d1['a3']
print(l2) # [123, {'name': 'jason1', 'age': 18}]
# 4.获取列表的数据
l3 = l2[1]
print(l3) # {'name': 'jason1', 'age': 18}
# 5.按k取值
print(l3['age'])
"""上述可以简写成一步"""
print(data['others'][2]['a3'][1]['age']) # 18
14.数据类型——布尔值(bool)
1.本质
用来表示事物是否可行 是否正确 是否合理
总共就两个值
2.基本使用
is_right = True # 真 可以 正确
is_delete = False # 假 不可以 错误
3.详细介绍
布尔值看似很简单 很少见 其实在程序中是最多的 也是使用频率最高的
存储布尔值的名字一般使用is开头 # 君子协定
4.布尔值类型转换
程序中所有的数据类型都可以转成布尔值
布尔值为False的数据有
0 None 空字符串 空列表 空字典 ...
除上述之外所有的数据对于的布尔值都是True
5.所有的编程语言都有布尔值 只不过关键字和值可能有变化(了解)
javascript:
typeof true
'boolean' # js中就不一样
15.数据类型——元组(tuple)
1.本质
能够存储多个数据 并且能够方便的获取整体或者局部
与列表的区别在于元组内数据值不能"直接修改" 而列表可以
所以元组有一个小外号>>>:不可变的列表
2.作用
一般用于存储一些只能看不能改的数据
3.基本使用
t1 = (111, 222, 333)
4.语言描述
小括号括起来 里面可以存放多个数据值 数据值与数据值之间逗号隔开
数据值可以是任意数据类型
5.与列表对比
l1 = [11, 22, 33]
t1 = (11, 22, 33)
print(l1[0]) # 11
print(t1[0]) # 11
l1[0] = 'jason' # 将列表索引0重新绑定数据值jason
print(l1) # ['jason', 22, 33]
t1[0] = 'tony' # 将元组索引0重新绑定数据值tony 直接报错!!!
print(t1)
16.数据类型——集合(set)
1.本质
集合只用于去重和关系运算
去重:自动去除重复的数据
关系运算:判断两个集合之间数据的关系(共同好友 共同点赞)
2.基本使用
s1 = {1, 2, 3, 4, 5}
3.定义空集合
d1 = {}
s1 = {}
print(type(d1)) # dict
print(type(s1)) # dict
ss = set() # 必须使用关键字才能定义空集合
print(type(ss))