python基础之变量与常量

发布时间 2023-11-28 20:00:44作者: Xiao0101

注释语法

# 学语言先学注释,注释是代码之母!

1. 什么是注释?
	  注释就是对一段代码的解释,它不参与代码的实际运行,起到提示作用.
2. 如何使用注释?
	  方式一:
    		警号# 单行注释
       """
       	还可以借助于快捷键
       		code
       			reformat code
       		ctrl + alt + l
       """
    
      方式二:
        	三引号(单双)
       快捷键:ctrl + D # 把光标所在的行复制然后粘贴到下一行
    
所有的代码规范都是有PEP 8规范设置的:
## 一、PEP 8规范

- PEP是Python Enhancement Proposal的缩写,代表Python增强提案。其中第8号增强提案(PEP 8)是关于Python代码风格的指南。
- 每个PEP都是一份技术文档,为Python社区提供指导,促使Python在不断进步。PEP 8着重于统一Python代码的风格,使其更易读、易维护,适用于多人协作开发的场景。

## 二、PEP 8规范的内容

### 1.空格的使用

- 使用空格表示缩进,不使用制表符(Tab)。
- 每一层缩进使用4个空格。
- 每行字符数不超过79个,多行表达式首行除外,其余行缩进4个空格。
- 函数和类定义之间使用两个空行分隔,类中方法之间使用一个空行分隔。

### 2.标识符的命名

- 变量、函数和属性使用小写字母,多个单词用下划线连接。
- 类中受保护的实例属性以一个下划线开头。
- 类中私有的实例属性以两个下划线开头。
- 类和异常的命名每个单词首字母大写。
- 模块级别的常量使用全大写字母,多个单词用下划线连接。
- 类的实例方法参数命名为self,类方法参数命名为cls。

### 3.表达式和语句

- 采用内联形式的否定词,如`if a is not b`。
- 避免使用检查长度的方式来判断字符串、列表是否为None或没有元素,应该使用`if not x`形式。
- 即使在if分支、for循环、except异常捕获中只有一行代码,也不要将代码和关键字写在一起,分开写更清晰。
- import语句总是放在文件开头。
- 引入模块时,`from math import sqrt`优于`import math`。
- 多个import语句分为三部分:Python标准模块、第三方模块和自定义模块,每部分按照字母表顺序排列。

变量的使用

1. 什么是变量?
	 即变化的量,用于记录事物的变化状态,其实就是保存数据的一种方式
2. 如何使用变量?
	 生活中:
    		姓名:kevin
        	 年龄:18
             性别:male
 	 程序中:
    		username = 'kevin'
        	 age      = 18
             gender    = male
                
"""
	语法格式:
		username 			= 				'kevin'
		变量名				赋值符号			变量值
	底层原理:
		1. 先在内存空间中申请一块空间来存储变量值kevin
		2. 把变量名username绑定给变量值kevin的空间地址
		3. 以后只需要通过变量名username访问变量值kevin即可.
"""

变量名的命名规范

1. 变量的命名有数字、字母、下划线任意组合
	user@name(不可以的)   _(可以的)    pass_123_word(可以) 

2. 不能够以数字开头,  _一般不要开头,因为后面他会有特殊的含义
	123_username(不可以)
    
3. 变量名不能够与python的保留字冲突
	print = 123
    ['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'] 
    
4. 变量名一定要见名知意
	"""以后不管变量名有多长,核心是见名知意"""
    
# 命名风格
	1. 驼峰体
    		大驼峰:每个单词的首字母都大写
        		UserNameFromDb
             小驼峰:除了第一个单词的首字母小写之外,其余的单词首字母全部大写
                userNameFromDb
    2. 下划线
    		# 所有的单词都小写,单词与单词之间使用_分割
        	username_from_db # 推荐    

变量名的定义和调用

- 变量的定义由三部分组成,如下

username 			= 				'xiao'
 变量名			赋值符号			变量值

- 定义规范示例

  # 用一个变量 name 保存名字 叫 xiao
  name = 'xiao'
  # 用一个变量 sex 保存性别 是 男
  sex = '男'
  # 用一个变量 age 保存年龄 是 18
  age = 18
  # 用一个变量 age 保存薪资 是 16800.21
  salary = 16800.21

- 解释器执行到变量定义的代码时会申请内存空间存放变量值

  - 然后将变量值的内存地址绑定给变量名
 通过变量名即可引用到对应的值:
  - 通过变量名即可引用到值,我们可以结合print()功能将其打印出来 print(age)
  - 通过变量名age找到值18,然后执行print(18),输出:18

# 用一个变量 name 保存名字 叫 xiao
name = 'xiao'
# 用一个变量 sex 保存性别 是 男
sex = '男'
# 用一个变量 age 保存年龄 是 18
age = 18
# 用一个变量 age 保存薪资 是 16800.21
salary = 16800.21

print(age) # 18

变量名的命名规范

1. 变量的命名有数字、字母、下划线任意组合
	user@name(不可以的)   _(可以的)    pass_123_word(可以) 

2. 不能够以数字开头,  _一般不要开头,因为后面他会有特殊的含义
	123_username(不可以)
    
3. 变量名不能够与python的保留字冲突
	print = 123
    ['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'] 
    
4. 变量名一定要见名知意
	"""以后不管变量名有多长,核心是见名知意"""
    
# 命名风格
	1. 驼峰体
    		大驼峰:每个单词的首字母都大写
        		UserNameFromDb
             小驼峰:除了第一个单词的首字母小写之外,其余的单词首字母全部大写
                userNameFromDb
    2. 下划线
    		# 所有的单词都小写,单词与单词之间使用_分割
        	username_from_db # 推荐    

变量的三要素

1. 变量值
2. 内存编号(id)
3. 数据类型

name = 'kevin'
name = 'jerry'
# name = 123.1
print(id(name))  # 1355452123248
print(type(name))  # <class 'str'>

如何查看变量的三大特性

# 定义变量
x = 'Info xiao:18'

# id (内存地址 - 内存编号)  : 反应的是变量在内存中的唯一编号,内存地址不同id肯定不同
print(id(x))  # 2304891956272

# type (数据类型) : 变量值的类型
print(type(x))  # <class 'str'>

# value (变量值) : 变量值
print(x)  # Info xiao:18

初识小整数池

- 对于小整数,Python有一个小整数池的概念。小整数池是一个预先创建好的、包含一定范围的整数的池子,这些整数在程序运行过程中会被重复使用,以提高内存利用效率。

- 在Python中,整数对象是不可变的,因此如果一个整数值在小整数池中已经存在,那么多个变量使用相同的整数值时,它们实际上是指向同一个整数对象的引用。这就是小整数池的机制。

- 小整数池一般包括一定范围内的整数,例如,通常会包含从-5到256的整数。这是因为在Python中,经常会用到一些小的整数,比如循环的索引、计数器等,因此预先创建这些小整数,可以减少内存的消耗,提高程序的执行效率。

- 为了进一步提高内存利用率,Python解释器在内存中维护了一个叫做“小整数池”的数据结构,用于存储[-5, 256]范围内的整数对象。这个数据结构被实现为一个数组,数组中的每个元素都是一个整数对象,而且每个整数对象都具有独特的标识,以便在需要使用整数对象时能够准确地引用它们。

  因此,当我们使用[-5, 256]范围内的整数对象时,Python解释器会从小整数池中获取对象,而不是创建新的对象。如果我们使用一个整数对象x,然后再次使用相同的对象x,Python解释器会直接返回池中保存x的内存地址,以避免重复创建对象的浪费。

常量

# 常量就是不经常改变的量
PI = 3.1415926

在Python中,没有真正意义上的常量,我们墨守成规的把全大写的变量称之为是常量
HOST='127.0.0.1'

# 在其他语言中,是有真正意义上的常量的,比如JavaScript
const pi = 3.14
pi = 4

底层优化

# 小整数池的问题
当变量值很小的时候,多个变量执行同一个变量值的空间地址

# 解释器3.8的,3.9
"""
	一个内存地址可以有多个变量名指向
	一个变量名只能指向一个内存地址
"""