热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2.5Python对象与变量

文章目录1.对象2.变量2.1变量的概念2.2使用原则2.3名称错误2.4三大特征2.5删除变量3.常量4.标识符4.1命名规范4.2保留字关键字4.3命名冲突4.4命名风格5.练

文章目录

      • 1. 对象
      • 2. 变量
        • 2.1 变量的概念
        • 2.2 使用原则
        • 2.3 名称错误
        • 2.4 三大特征
        • 2.5 删除变量
      • 3. 常量
      • 4. 标识符
        • 4.1 命名规范
        • 4.2 保留字关键字
        • 4.3 命名冲突
        • 4.4 命名风格
      • 5. 练习

image-20221118225131027

1. 对象

对象: 是存储在内存中的一个实体.
Python 中的所有数据都是对象, 包括: 数字, 字符串, 列表, 元组, 集合, 字典, 函数, 类等...
* 通常当提到 '值' , '数据', '对象' 的时候, 指的都是同一个概念.

2022-11-09_01380

2. 变量


2.1 变量的概念

变量: 在计算机中是存储值的抽象概念, 即存储会变化的值.程序执行的本质就是一系列状态的变化, 变是程序执行的直接体现, 需要有一种机制能够将其够记录下来.
变量可以让计算机拥有记录事物状态的能力.

2.2 使用原则

变量的基本使用原则是 '先定义, 后引用' , 没有定义直接使用会抛出名称错误.定义: 将值赋予变量的过程, 需要使用赋值语法.引用: 访问值的方式, 通过变量访问对象.

赋值语法: num = 1num 变量名, 对象的标签, 通过标签访问对象.= 赋值符号, 让变量指向对象, Python '=='是等号.1 变量值, 是一个对象.赋值语法执行过程:
* 1. 创建对象: 在内存中创建了一个对象 1 .
* 2. 绑定对象: 在内存中创建了一个名为 num 的变量, 并让它指向对象.

image-20221109205540747

Python 中变量并不是直接存储对象, 而是存储'对象的内存地址', 也就是指针.
'对象'保存在内存的'堆区', '变量'保存在内存的'栈区'.

将变量写在 print() 的括号中, 将对象打印到屏幕.

# 1. 定义变量
num = 1# 2. 引用对象
print(num) # 1

2.3 名称错误

变量没有定义直接使用会抛出名称错误.

print(num)

Pycharm 会检测代码的语法, 当检测代码错在语法错误时会给出提示.
程序在执行的时候是会变化的, 这个提示仅供参考, 并非百分百准确.

2022-11-18_01555

代码运行之后, 解释器会对代码进行语法检测, 能被检测出问题的都是'语法错误',
经过语法检测的代码才会被真正的翻译执行, 执行中报错则是'逻辑错误'.

2022-11-18_01556

NameError: name 'xxx' is not defined.
名称错误:未定义名称“xxx”.

2.4 三大特征

对象具有3个基本特征:
* 1. 本征值(identity), 对象在内存中的唯一编号,也称为'身份标识', CPython 解释器而言是内存地址, id值是由16进制内存地址转10进制的结果.
* 2. 类型 (type), 对象的数据类型.
* 3. (value), 对象本身.
* 变量本身没有数据类型的, 通常会听到'变量类型', 指的使变量所引用的对象的类型.

内置 id() 函数: 返回对象的id值.
内置 type() 函数: 返回对象的数据类型.
内置 print() 函数: 打印对象.

image-20221118181524989

# 定义变量
num = 1# 打印对象
print(num) # 1# 打印对象的id
print(id(num)) # 1660765563184# 打印对象的内存地址 10进制转16进制
print(hex(id(num))) # 0x1fedd396930# 打印对象的数据类型
print(type(num)) #

2.5 删除变量

del 关键字断开变量与指针的绑定关系.
断开引用关系之后, 没有绑定指针的变量, 不能在使用,
否则会报错: NameError: name 'xx' is not defined.

# 定义变量
num = 1# 引用变量
print(num)# 删除变量与指针的绑定关系
del num# 报错: NameError: name 'num' is not defined
print(num)

3. 常量

常量是计算机中存储值的抽象概念, 即存储不能改变的值.
Python 中没有真正意义上的常量, Python 开发者们墨守成规的将全大写的变量名看成是常量.
将程序中全局不会改变的值绑定给'常量'.

# 定义'常量' 变量名全大写.
IP = "127.0.0.1"# 引用'常量'
print(IP) # 127.0.0.1

4. 标识符

Python 中变量, 常量, 函数, 类等对象起的名字就是'标识符'.

4.1 命名规范

命名原则:
* 1. 只能由数字, 字母, 下划线组成.
* 2. 不能以数字开头.
* 3. 不能与 Python 关键字冲突, 可以通过 Ketword 模块查看保留字关键字.注意点:
1. 命名做到"见名知意", 不管名称多长.
2. 新版本解释器支持变量名为汉字, 不建议去使用.
3. 名称严格区分大小写, 例如: Num num 是两个不同的变量.
4. Python 中下滑线开头的变量有特殊的用法.单独使用下划线 '_' 可以表示一个临时值.单下划线开头 _xx 代表禁止外部访问的类成员, 需通过类提供的接口进行访问.双下划线开头 __xx 代表类的私有成员.双下划线开头和结尾 __xx__ Python 特殊方法专用的标识.

4.2 保留字关键字

# 导入 keyword 模块
import keyword# 打印 Python 关键字
print(keyword.kwlist)

运行工具窗口显示:
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

Python 为保留字关键字 定义了功能, 如果自己定义标识符名称重复后, 标识符的内置的功能就会被覆盖.

4.3 命名冲突

print Python 内置的输出函数, 是具备输出能力的,
使用 print 作为变量名后, print 就只是一个变量, 不具备了输出能力.

print = 1
print('Hello')

2022-11-19_01583

对象加括号就是调用的意思, 内置函数或方法是可以叫括号调用, 调用的意思后续会说.
int 对象不可以加括号调用, 否则会抛出报错:
TypeError: 'int' object is not callable
类型错误 : 'int' 对象不可调用

2022-11-19_01584

4.4 命名风格

* 1. 驼峰体 大驼峰: 所有单词首字母大写. 例如: AddUser (Javascript 语言推荐)小驼峰: 第一个字母小写, 其他单词首字母大写. 例如: Adduser* 2. 下划线: 单词之间用下划线隔开. 例如: add_user (Python 推荐)

5. 练习

1. 什么是对象? 什么是变量? 为何要有变量? 对象与变量的关系?
2. 赋值语言三大组成部分是? 每部分的作用是什么?
3. 标识符的命名原则与风格.
4. 对象三个特征是什么?


文章的段落全是代码块包裹的, 留言0是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言1是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言2是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言3是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言4是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言5是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言6是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言7是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言8是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言9是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言10是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言11是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言12是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言13是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言14是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言15是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言16是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言17是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言18是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言19是为了避免文章提示质量低.



推荐阅读
author-avatar
木_妍_595
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有