今天学习的是第一章第二节:Python语言基本概念
第一章:Python语言基础
1.2 Python语言基本概念
? ????本节主要介绍Python语言的对象、标识符、变量、函数、类等基本概念,对这些概念的理解和掌握,是使用Python语言编写程序的基础。
----1.2.1 对象 1、概念
概念 :程序中所使用的一切实体称为对象。 ????????????Python语言中的一切皆是对象,如整数、浮点数、字符串、变量、函数等都是对象,对象是对数据的抽象。
2、创建对象: ???????创建对象就是给对象分配内存空间。程序中的每个对象在第一次使用或得到时,系统都将创建它,有些对象在使用或得到之前就已经创建,比如[-5,256]范围内的小整数,是在Python解释器启动时就已经创建,而有些对象是在程序执行时才创建。 【示例1.2.1】创建对象
>>>8+627
635
示例中,整数对象8在执行命令8+627之前已经创建,整数对象627是在执行命令8+627时创建,整数对象635是在执行命令8+627时得到,然后创建。
3、对象的三要素 Python语言中的每个对象都有以下三个要素:
1)标识(identity):为其分配的内存空间的地址,用来唯一标识每一个对象。 2)类型(type):对象的数据类型,规定了对象的取值范围和所允许的操作。 3)值(value):对象的具体数据,存放在对象的内存空间中。
4、对象的可变性 ? ????对象被创建后,值(value)可以改变的对象称为可变对象,值不可以改变的对象称为不可变对象。
? ????对象的可变性由其类型(type)决定,在Python语言中,数字类型(整型、浮点型、复数型)、字符串类型、布尔类型、空类型和元组类型都是不可变类型,而字典类型、集合类型和列表类型都是可变类型。不可变类型的对象都是不可变对象,可变类型的对象都是可变对象。
----1.2.2 标识符 1、概念
标识符是用来标识某个对象的名字。如常量、变量、函数、类等的名字都是标识符。
? ????标识符必须遵循标识符的命名规则 2、标识符的命名规则:
? ????以字母或下划线开头,由字母、数字、下划线组成。 ? ????其中,字母可以是大小写的英文字母,也可以是非ASCII字母(如重音字符、汉字、希腊字母、日文、韩文、俄文字母等)。
【示例1.2.2】 Sum、a、长度、p_2 都是合法的标识符,而 3b、c# 和 p-1 都是不合法的标识符。
3、使用标识符的注意事项:
1)标识符不能与系统关键字同名,如def、Ture等都不能作为标识符。 2)标识符区分大小写字母,如Sum和sum是两个不同的标识符。 3)标识符命名应做到“见名知意”,如长度使用Length、圆周率使用PI等。
? ????说明:在IDLE交互模式(>>>提示符)下,调用help()函数,出现help>提示符,在该提示符下,输人keywords命令,可显示出当前Python版本的全部关键字。
4、标识符的命名规范
1)常量的每个字母均大写。 2)变量名、函数名和类名等均采用驼峰格式,即每个单词的首字母大写。 3)模块名、包名、文件名的每个字母均小写。 4)异常名采用驼峰格式,并加后缀Error。 5)应尽量避免出现单个字母(除非计数器、循环变量等)的命名情况。
----1.2.3 变量 ? ????在程序中所使用的对象,通常应起个名字,以便在程序中使用。 1、概念
? ????在程序中给对象所起的名字称为变量或变量名。 ? ????在给对象命名时,必须遵循标识符的命名规则。变量名可以看作是对象的别名或者是标签,这样,在程序中使用变量名。就是使用对应的对象。
2、定义变量 ? ????在Python程序中使用的每一个变量,必须先定义,然后才能使用。变量定义格式如下:
? ????变量名=对象 ? ????其中, “=” 称为赋值号(切记不要把 “=” 读成等于或等于号),是赋值运算符。“变量名 = 对象” 称为赋值语句,可读为 “将对象赋给变量”,对象可以是由其他对象组成的表达式。 ? ????执行赋值语句时,通常系统将创建对象,即给对象分配存储空间,并使赋值号左边的变量绑定到该时象,即恢或值号左边的变量成为赋值号右边对象的引用,也就是使赋值号左边的变量指向赋值号右边对象。
【示例1.2.3】
>>>a = 365
? ????该例示语句a = 365 执行后,变量a绑定到对象365,变量a是对象365的引用,使用a可以操作对象365 。
说明: (1)变量的值是指变量指向对象的值。 【例示(1)】
>>>a = 365
此时,可以说变量a的值为365。
(2)一个对象可以有多个引用。 【示例(2)】
>>>a = 365
>>>b = a
通过语句a=365使变量a成为对象365的引用,再通过语句 b=a 使b也成为对象365的引用,对象365就有了两个引用,通过a或b都可以操作365。
(3)一个变量可以引用不同类型的对象。 【示例(3)】
>>>Integer = 365
>>>Integer = "python"
通过语句Integer=365使变量Integer引用整型对象365,再通过语句Integer=“python"使变量Integer又引用了字符串类型对象"python”,这样变量Integer就不再是整型对象365的引用了。
3、删除变量 ? ????变量定义后,如果以后不再使用,可以使用del删除。格式如下:
>>>del 变量名
del是Python的一个关键字,用于删除对象的引用。 使用del删除变量后,并未删除变量引用的对象,而只是删除了对象的这个引用,如果再使用这个被删除的变量,系统会报错。
【例示1.2.4】
>>> Integer=365
>>> Integer
365
>>> del Integer
>>> Integer
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
Integer
NameError: name 'Integer' is not defined
使用被删除的变量后,系统报出“NameError: name ‘Integer’ is not defined(名字‘Integer’没有定义)”错误。 使用del Integer,删除了变量Integer,但变量Integer所引用的对象365还在,如果对象365再没有其他的变量引用,系统会启动垃圾回收机制,将对象365在内存中彻底删除。
4、垃圾回收机制 ? ????Python中的垃圾回收是以引用计数为主。 ? ????在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存。 ? ????引用计数的原理是,当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被删除时,对象的引用计数减1,当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以释放其内存空间。
1.2.4 函数 ? ????在使用计算机解决实际问题时,往往需要把一个大的实际问题分解成若干个子问题,然后解决每一个子问题。函数实际就是解决子问题的具体实现。
1、概念
? ????用于解决具体问题的代码块称为函数。 ? ????函数是组织好的、功能单一的代码块。通过函数可以使程序模块化,代码得到重复利用,因此,函数具有重用性。
2、函数分类
Python中的函数主要包括内置函数、标准库函数和自定义函数3类。
(1)内置函数:是系统已经定义好的,寄生在解释器中。专打用于解决某一具体问题的代码块,用户直接调用就可以实现其功能。 (2)标准库函数:是系统已经定义好的,需要通过import命令导入解释器中。用户才能调用实现其功能。 【示例1.2.5】 求2的平方。
>>> import math
>>> math.sqrt(2)
1.4142135623730951
【示例1.2.6】 计算程序执行时间。
>>> import time
>>> start = time.perf_counter()
>>> end = time.perf_counter()
>>> end - start
(3)自定义函数:需要由用户自己来定义的代码块(第五章学习)。 ? ????一般格式为:def 函数名
3、类型转换函数int() 和 float() (1)将字符串转换为整数类型数据函数int()
???调用格式:int(字符串) ???功能:将字符串转换为十进制整型数据 (int型数据),返回整型数据。 ???说明:字符串只能由整数组成。
(2)将字符串转换为浮点型数据 float()
???调用格式:float(字符串) ???功能:将字符串转换为浮点型数据(float型数据),返回浮点型数据。
4、获取对象标识函数 id() 和类型函数 type() ??????对象创建后,若想获取对象标识和类型,可以使用内置函数 id() 和 type() 。 (1)获取对象标识函数 id()
???调用格式:id(object) ????????????????????#其中,object为对象或对象名 ???功能:返回对象object的标识(地址)。
【例示1.2.7】
>>> Integer1 = 365
>>> id(Integer1)
2290594885360
>>> id(365)
2290594885424
这里的2290594885360是变量Integer1的地址,2290594885424是对象365的地址,变量Integer1与对象365的地址不同,说明在IDLE交互模式下,变量Integer1的存储空间被创建。
(2)获取对象类型函数 type()
???调用格式:type(object) ??? ?????????????????#其中,object为对象或对象名 ???功能:返回对象object的类型
【例示1.2.8】
>>> Integer = 365
>>> type(Integer)
<class 'int'>
>>> type(365)
<class 'int'>
输出结果<class ‘int’>表明,变量Integer与对象365都是int类型,即整数类型。
1.2.5 类及其属性和方法 ? ?????使用计算机处理的数据不仅仅是整数、浮点数、字符串等简单的数据,也可以是比较复杂的数据。例如,学生的信息包括学号、姓名、性别、出生日期、联系电话、家庭住址等,这些信息是学生对象的共同属性。另外,对这些属性可以做初始化、插入、删除、修改、查找等操作。因此,不仅希望能够把这些属性作为一个整体来考虑,还希望能够把这些属性连同对这些属性的操作一起作为一个整体来考虑,这就产生了“类”的概念。
1、概念
类:把同类对象的属性及对属性的操作封装在一起,所得到的数据类型称为“类”。 属性:类内部的各个数据称为属性,也称数据成员。 方法:对属性的操作称为方法。(方法是通过函数实现的,所以也称为成员函数) 示例对象:类是同类对象的属性和方法的抽象,对象是类的具体示例,也称为实例对象。
? ?????例如,如果把上述学生信息和对这些信息的操作看作是一个类,假设称为学生信息类,那么,学号、姓名、性别等属性都是学生信息类的数据成员,初始化、插入、删除等操作都是学生信息类的方法。即成员函数,每一个学生信息都是一个实例对象。
在Python语言中,每一个数据类型都是类,某种数据类型的变量就是这个数据类型类的一个实例对象。
? ?????例如,整型数据类型就是一个整型类,如果有语句Integer=2,那么就创建了整型类的实例对象Integer 。
2、实例对象访问类属性和方法 ? ?????实例对象创建后,可以通过 “.” 运算符来访问类的属性和方法,具体格式如下:
1) 访问类属性的格式:实例对象.属性名 2) 访问类方法的格式:实例对象.方法名
? ?????在IDLE交互模式 (>>>提示符) 下,调用dir(类型变量名)函数,可显示出当前Python版本该类型类的全部属性和方法列表。
【例示1.2.9】获取整型类的属性和方法
>>> Integer = 2
>>> dir(Integer)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
结束,睡觉辽~
本文参考教材 : 《Python语言程序设计》 / 李学刚主编。 ——北京高等教育出版社,2019.10
? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????2021.8.3
|