第二章 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. 十进制转换为二进制
n1 = 100
v1 = bin(n1)  # 将十进制换算成二进制
v2 = oct(n1)  # 将十进制换算成八进制
v3 = hex(n1)  # 将十进制换算成16进制
print(v1)
print(v2)
print(v3)

0b1100100
0o144
0x64

2. 将其他进制转换为十进制
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函数的功能
print("Hello World")
print(10)
print("*******")

Hello World
10

“* * * * * * *”

2. 常用参数
  • end

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

print("停车坐爱枫林晚")
print("霜月红于二月花")

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

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

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

  • sep

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

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

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

2.3.2 input

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

请输入用户名:100
100
<class ‘str’>

2.4 变量

2.4.1 变量的本质

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

2.4.2 变量定义和调用

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

2484035704736
电视

2.4.3 变量定义规则

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

张三
lisi

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

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

2.4.4 变量命令规范

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

2.4.5 变量的修改与删除

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

2472764823456
2472765974256

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

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

1623016462240
1623016462240

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

  • 场景4
num = 18
print(id(num))
age = str(num)
print(id(age))

140722610392024
2088969649680

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

  • 场景5
name = "张三"
del name  # 删除变量name,后续无法打印name
print(name)
  • 场景6
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. 可以直接在行尾手工添加#号输入注释内容
name = "张三"  # 这是一个单行注释
print(id(name))  # 打印name变量的内存地址
new_name = name
print(id(new_name))  # 打印new_name变量的内存地址
2. 可以单用一行,对下一行进行注释
# 打印π
pirnt =(3.141592653589793)
3.还可以再定义函数的时候注释:

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

def login()
    """
    这是一个函数的注释
    :return: 
    """
    pass

2.5.2 多行注释

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

# 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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值