第二章 Python基础语法

第二章 基础语法

2.1 编码

2.1.1 编码的本质

编码的本质是文字与二进制的队友关系。

乱码:在加码和解码的时候,采用不同的编码方式

2.1.2 编码的类型

1. ASCII

www.lookuptables.com

最早期的一种编码类型,采用固定的一个字节来表示与二进制的对应关系

因此只存在英文字母和少量字符与二进制的队友关系

A 65 10000001 bin(65)

2. GBK

在BGK2312这种编码类型的基础上发展出来的(已经拥有了亚太地区国家文字与二进制的对应关系)

  1. 采用固定的一个字节来表示与二进制的对应关系。
  2. 采用固定的两个字节来表示与二进制的队友关系。
3. Unicode

unicode-table.com

  • 万国码,它为全球的每一个文字都提供一个二进制的码位

    • ucs2

      • 采用固定的两个字节来表示对应关系
    • ucs4

      • 采用固定的四个字节来表示对应关系
      • 例如:一 563B
  • 缺陷:存储常见的字母,相比于ASCII更浪费空间。

    • 因此内存中进行计算的时候采用定长的Unicode编码:内存提供临时性的存储,因此并不会像硬盘那样存储大量的数据。
    • 而在硬盘中采用GBK或者utf-8的编码方式存储,更节约空间
4.UTF-8
  • Unicode 编码的一种压缩,用尽可能少的二进制来表示对应关系

    1. 采用固定的一个字节来表示对应关系
    2. 采用固定的两个字节来表示对应关系
    3. 采用固定的三个字节来表示对应关系
    4. 采用固定的四个字节来表示对应关系

    硬盘数据存储和网络传输时候,需要转换为UTF-8的编码

2.2 进制换算

2.2.1 进制在Python中的表示

十进制 int

二进制 bin

八进制 oct

十六进制 hex

2.2.2 进制转换方法

1. 十进制转换为二进制
python 复制代码
n1 = 100
v1 = bin(n1)  # 将十进制换算成二进制
v2 = oct(n1)  # 将十进制换算成八进制
v3 = hex(n1)  # 将十进制换算成16进制
print(v1)
print(v2)
print(v3)

0b1100100

0o144

0x64

2. 将其他进制转换为十进制
python 复制代码
n1 = 100
v1 = bin(n1)  # 将十进制换算成二进制,没有base参数,默认base参数为10
v2 = oct(n1)  # 将十进制换算成八进制
v3 = hex(n1)  # 将十进制换算成16进制
v4 = int(v1, base=2)  # 将二进制转换成十进制
v5 = int(v2, base=8)  # 将八进制转换为十进制
v6 = int(v3, base=16)  # 将十六进制转换为十进制
print(v4)
print(v5)
print(v6)

100

100

100

2.3 常用函数

2.3.1 print函数

函数的基本理解:可以看做是将具有某种功能的代码进行打包的一个集合,这样方便以后进行调用。

1. print函数的功能
python 复制代码
print("Hello World")
print(10)
print("*******")

Hello World

10

"* * * * * * *"

2. 常用参数
  • end

    print函数默认都会在末尾加上换行符,即默认情况下end="\n"

python 复制代码
print("停车坐爱枫林晚")
print("霜月红于二月花")

停车坐爱枫林晚

霜月红于二月花

python 复制代码
print("停车坐爱枫林晚", end="")
print("霜月红于二月花")

停车坐爱枫林晚霜月红于二月花

  • sep

    输出多个元素的时候,sep可以定义多个字符输出时候的连接符,默认为空格

python 复制代码
print("停车坐爱枫林晚", "霜月红于二月花", sep="-")

停车坐爱枫林晚-霜月红于二月花

2.3.2 input

  • 作用:接收键盘输入的内容,转化为字符串类型进行输出
python 复制代码
user = input("请输入用户名:")
print(user)
print(type(user))

请输入用户名:100

100

<class 'str'>

2.4 变量

2.4.1 变量的本质

变量就是一个容器,完整的变量由三部分组成:变量名、变量名、内存地址。

2.4.2 变量定义和调用

python 复制代码
name = "电视"  # 变量名为name,变量值为"电视"
address = id(name)  # 将变量name对应的内存地址提出取来
print(address)  # 打印变量的内存地址
print(name)  # 打印变量值

2484035704736

电视

2.4.3 变量定义规则

1. 变量只能是数字、下划线和字符组合
python 复制代码
name = "张三"
李四 = "lisi"
print(name)
print(李四)

张三

lisi

2.变量的首个字符不能是数字
python 复制代码
1name = "张三"
3. Python中特殊含义的字符不能作为变量名

这些字符如果做了变量名,则失去原字符的含义作用。例如:print,or,and,with,break,continue...

2.4.4 变量命令规范

1. 驼峰体
python 复制代码
StudentId = "123054"  # 一般定义类的时候会采用驼峰体,两个单词连接,首字符都大写,中间的I大写类似骆驼峰
2. 下划线连接体
python 复制代码
Student_id = "123456"  # 一般定义普通变量的时候会采用
3. 选择变量名的时候尽量使用英文
python 复制代码
xuehao = "123456"  # 采用中文拼音的命名,可以,但是不推荐这样声明变量
mingzi = "zhangsan" # 采用中文拼音的命名,可以,但是不推荐这样声明变量

2.4.5 变量的修改与删除

  • 场景1
python 复制代码
name = "张三"
print(id(name))  # 打印name变量的内存地址
  • 场景2
python 复制代码
name = "张三"
print(id(name))  # 打印name变量的内存地址
name = "李四"
print(id(name))  # 打印重新赋值后的内存地址,验证是修改了内存中的数据还是修改了变量连接的内存地址

2472764823456

2472765974256

从输出结果可以看出,修改的时内存地址,即"张三"和"李四"先后被赋值给同一个变量,但是两者保存在不同的地址,变量完成赋值了修改了内存地址位置,实现赋值。

  • 场景3
python 复制代码
name = "张三"
print(id(name))  # 打印name变量的内存地址
new_name = name
print(id(new_name))  # 打印new_name变量的内存地址

1623016462240

1623016462240

从输出结果来看,新的变量名是直接连接到旧的变量值的内存地址,没有另外开辟内存空间存储相同的值。

  • 场景4
python 复制代码
num = 18
print(id(num))
age = str(num)
print(id(age))

140722610392024

2088969649680

从输出结果来看,两个变量num和age由于变量类型不相同,虽然有相互赋值的情况,但是在内存中的地址仍然不同

  • 场景5
python 复制代码
name = "张三"
del name  # 删除变量name,后续无法打印name
print(name)
  • 场景6
python 复制代码
name = "张三"
new_name = "李四"
print(id(name))
print(id(new_name))
n = new_name
new_name = name
name = n
print(id(name))
print(id(new_name))

3128344631200

3128346502816

3128346502816

3128344631200

从输出上看,通过中间变量赋值,调换了两个变量名原本的内存指针,,内存地址中的值没有变化。

2.5 注释

在编写代码的时候,我们需要对某些内容进行注释,解释器会忽略注释后的代码,不会执行

2.5.1 单行注释

1. 可以直接在行尾手工添加#号输入注释内容
python 复制代码
name = "张三"  # 这是一个单行注释
print(id(name))  # 打印name变量的内存地址
new_name = name
print(id(new_name))  # 打印new_name变量的内存地址
2. 可以单用一行,对下一行进行注释
python 复制代码
# 打印π
pirnt =(3.141592653589793)
3.还可以再定义函数的时候注释:

在函数中输入三引号(连续按三次双引号)输入一个注释

python 复制代码
def login()
    """
    这是一个函数的注释
    :return: 
    """
    pass

2.5.2 多行注释

写好代码后,选中行,按Ctrl+?键,可以将多行一起注释,也可以只注释一行

python 复制代码
# name = "张三"
# new_name = "李四"
# print(id(name))
# print(id(new_name))
# n = new_name
# new_name = name
# name = n
# print(id(name))
# print(id(new_name))
相关推荐
上海文顺负载箱6 分钟前
如何评估焊机测试负载均衡性能
运维·负载均衡
CSXB9915 分钟前
三十四、Python基础语法(文件操作-上)
开发语言·python·功能测试·测试工具
不爱学习的YY酱1 小时前
【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(4)
网络·计算机网络
装睡的小5郎1 小时前
家庭宽带如何开启公网ipv4和ipv6
网络
yfs10241 小时前
压缩Minio桶中的文件为ZIP,并通过 HTTP 响应输出
网络·网络协议·http
有谁看见我的剑了?1 小时前
Ubuntu 22.04.5 配置vlan子接口和网桥
服务器·网络·ubuntu
hgdlip1 小时前
有什么办法换网络ip动态
网络·tcp/ip·智能路由器
铁锤妹妹头发多1 小时前
新手用docker真**难受
运维·docker·容器
超栈1 小时前
HCIP(11)-期中综合实验(BGP、Peer、OSPF、VLAN、IP、Route-Policy)
运维·网络·网络协议·计算机网络·web安全·网络安全·信息与通信
亚图跨际1 小时前
MATLAB和Python及R潜变量模型和降维
python·matlab·r语言·生物学·潜变量模型