第二章 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))
相关推荐
qiuchangyong19 分钟前
TypeError: only size-1 arrays can be converted to Python scalars
python·numpy
King without kingdom1 小时前
面试题(三)
运维·服务器·网络
Sam90291 小时前
828华为云征文|Flexus云服务器X实例部署宝塔运维面板
运维·服务器·华为云
亿林安全2 小时前
等保测评中的常见误区及应对策略
网络·安全·web安全
亿林网络安全事业部2 小时前
等保测评:企业如何构建安全的网络架构
网络·安全·架构
Mopes__2 小时前
Python | Leetcode Python题解之第421题数组中两个数的最大异或值
python·leetcode·题解
元素之窗2 小时前
如何在 CentOS 中管理用户、组和服务状态
linux·运维·centos
你不要在理我了3 小时前
weblogic CVE-2018-2894 靶场攻略
运维·服务器·安全
reasonsummer3 小时前
【教学类-52-11】20240919动物数独(4宫格)1图、2图、6图、有答案、无答案 组合版18套
python
Amo Xiang3 小时前
Python练习宝典:Day 1 - 选择题 - 基础知识
开发语言·python