Python编程基础概念

Python程序的构成

  • Python程序由模块组成。一个模块对应Python源文件,一般后缀名为.py。
  • 模块由语句组成。运行Python程序时,按照模块中语句的顺序依次执行。
  • 语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
    在这里插入图片描述

使用\行连接符

将一行比较长的程序分为多行,使用\行连接符,把它放在行结束的地方。

>>> a = [10, 20, 30, 40,\
>>> 50, 60, 70,\
>>> 80, 90, 100]

对象

Python中,一切皆对象。每个对象由标识(identity)、类型(type)、值(value)组成。

  • 标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数id(obj)可返回对象obj的标识。
  • 类型用于表示对象存储的数据的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用type(obj)获取对象的所属类型。
  • 值表示对象所存储的数据的信息。使用print(obj)可以直接打印出值。

对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作。

>>> a = 3
>>> b = "我爱你"

在这里插入图片描述

引用

在Python 中变量也称为对象的引用,因为变量存储的就是对象的地址。
变量通过地址引用了对象。变量位于栈内存,对象位于堆内存。

  • Python是动态类型的语言,变量不需要显示声明类型,根据变量引用的对象,Python解释器自动确定数据类型。
  • Python是强类型语言,每个对象都有数据类型,只支持该类型支持的操作。
    在这里插入图片描述

标识符

标识符:用于变量、函数、类、模块等的名称。标识符有如下的规则:

  • 区分大小写。
  • 第一个字符必须是字母、下划线,其后的字符是:字母、数字、下划线。
  • 不能使用关键字。
  • 以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如:__init__是类的构造函数。

Python标识符命名规则

类型规则例子
模块名和包名全小写字母,多个单词之间用下划线math、os、sys
函数名全小写字母,多个单词之间用下划线phone、my_name
类名首字母大写,采用驼峰原则MyPhone、MyClass
常量名全大写字母,多个单词之间用下划线隔开SPEED、MAX_SPEED

变量的声明和赋值

变量的声明和赋值用于将一个变量绑定到一个对象上,格式如下
变量名 = 表达式
最简单的表达式就是字面量。比如: a = 123。运行过程中,解释器先运行右边的表达式,生成一个代表表达式运算结果的对象;然后,将这个对象地址赋值给左边的变量。

删除变量和垃圾回收机制

使用del语句删除不再使用的变量

>>> a = 123
>>> del a

从栈中删除变量a后,堆中对象a的内存空间将会被垃圾回收机制进行回收。

链式赋值

链式赋值用于同一个对象赋值给多个变量

>>> x = y = 123
// 相当于
>>> x = 123
>>> y = 123

系列解包赋值

系列数据赋值给对应相同个数的变量

>>> a, b ,c = 4, 5, 6
// 相当于
>>> a = 4
>>> b = 5
>>> c = 6
// 变量互换
>>> a, b = b, a

常量

Python不支持常量,没有语法规则限制改变一个常量的值。只能通过约定常量的命名规则,在程序的逻辑上不对常量的值做出修改。

最基本内置数据类型和运算符

Python最基本的内置数据类型:

  • 整型
  • 浮点型
  • 布尔型
  • 字符串型

数字

// 整数除法,例如:7 // 2 = 3
% 模,例如:7 % 4 = 3
** 幂,例如:2 ** 3 = 8
使用divmod()函数同时得到商和余数

>>> divmod(13, 3)
(4, 1)

整数

Python中,除10进制,还有其他三种进制

  • 0b或0B,二进制
  • 0o或0O,八进制
  • 0x或0X,十六进制
>>> 0b101
5

int()函数实现类型转化

>>> int("456")
456

自动转型:整数和浮点数混合运算时,表达式结果自动转型成浮点数。

浮点数

3.14表示成314E-2
float()函数将其他类型转化为浮点数
round(value)函数可以返回四舍五入的值.
注:不会改变原有值,而是产生新的值。

时间的表示

Python中可以通过time.time()获取当前时刻,返回值是以秒为单位,带微秒精度的浮点值。例如:1530167364.8566

同一运算符

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
is:判断两个标识符是不是引用同一个对象
is和==区别

  • is用于判断两个变量引用对象是否为同一个,比较对象的地址。
  • ==用于判断引用变量引用对象的值是否相同,默认调用对象的__eq__()方法。

整数缓存问题

Python仅仅对比较小的整数对象进行缓存([-5, 256])缓存起来,而并非是所有整数对象。仅仅是在命令行中执行,而在PyCharm或者保存为文件执行,结果是不一样的([-5, 任意正整数])

字符串

Python使用Unicode编码。
字符串的本质:字符序列。
Python的字符串是不可变的,无法对原字符串做任何修改。可以将字符串的一部分复制到新创建的字符串,达到看起来修改的效果。
不支持单字符类型,单字符也是作为一个字符串使用的。
使用内置函数ord()可以把字符转换成对应的Unicode编码。
使用内置函数chr()可以把十进制数字转换成对应的字符。
连续三个单引号或三个双引号,可以帮助我们创建多个字符串。

>>> resume = '''name = "贾文兵"
>>> company = "nuc" age = 18
>>> '''

字符串复制

>>> a = 'nuc' * 3
'nucnucnuc'

不换行打印

>>> print("nuc1", end = "#")
>>> print("nuc2", end = "#")
nuc1#nuc2#

从控制台读取字符串

>>> myname = input("请输入名字:")

str()实现数字转型字符串

str(5.20)==>‘5.20’

使用[]提取字符

  • 正向搜索
    最左侧第一个字符,偏移量为0,第二个偏移量是1,以此类推,直到len(str) - 1为止。
  • 反向搜索
    最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止。

replace()实现字符串替换

>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a = a.replace('c', '异')
ab异defghijklmnopqrstuvwxyz

整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串。
在这里插入图片描述

字符串切片slice操作

切片slice操作可以让我们快速的提取子字符串,标准格式为:
[起始偏移量start:终止偏移量end:步长step]

split()分割和join()合并

split()基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符、空格、制表符)。

>>> a = "to be or not to be"
>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']

join()将一系列子字符串连接起来。

>>> a = ['a', 'b', 'c']
>>> '*'.join(a)
'a*b*c'

注:使用字符串拼接符+,会生成新的字符串对象。join()函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。

字符串驻留机制和字符串比较

字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中,Python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含字母、数字、下划线)会启用字符串驻留机制。

>>> a = "abd_33"
>>> b = "abd_33"
>>> a is b
True
>>> c = "dd#"
>>> d = "dd#"
>>> c is d
False
>>> str1 = "aa"
>>> str2 = "bb"
>>> str1+str2 is "aabb"
False
>>> str1+str2 == "aabb"
True

字符串比较和同一性

使用==、!=对字符串进行比较,比较的是value值是否相同。
使用is、not is,判断两个对象是否是同一个对象,比较的是对象的地址,即id(obj1)是否和id(obj2)相等。

成员操作符

in、not in关键字,判断某个字符(子字符串)是否存在于字符串中。

局部变量和全局变量

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为局部变量和全局变量
局部变量:定义在函数体内部的变量,只在函数体内部生效。
局部变量的作用:在函数体内部临时保存数据,函数调用完成后,销毁局部变量。
全局变量:在函数体内外都能生效的变量。
使用global关键字可以在函数内部声明变量为全局变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值