Python学习笔记二:编程基础概念

  • Python 程序的构成
  • Python文件的创建和执行
  • 代码的组织和缩进
  • 使用注释
  • 使用\行连接符
  • 对象
  • 引用
  • Python 是动态类型语言
  • Python 是强类型语言
  • 标识符
  • 基本用法
  • Python 标识符命名规则
  • 变量和简单赋值语句
  • 变量的声明和赋值
  • 删除变量和垃圾回收机制
  • 链式赋值
  • 系列解包赋值
  • 常量
  • 同一运算符
  • is与==区别
  • 整数缓存问题
  • 总结
  • 基础运算符
  • 复合赋值运算符
  • 运算符优先级问题


Python 程序的构成

python语言编程规范 python语言编程基础_python语言编程规范

  1. Python 程序由模块组成。一个模块对应Python源文件,一般后缀名是:py。
  2. 模块由语句组成。运行Python 程序时,按照模块中语句的顺序依次执行。
  3. 语句是 Python 程序的构建单元,用于创建对象、变量赋值、调用函数、控制语句等。

Python文件的创建和执行

前面使用的假护士环境,每次只能执行一条语句;我了编写多条语句实现复杂的逻辑,本章开始我们通过创建Python 文件,并执行该文件。

在IDLE 环境中,我们可以以通过 File -->new 创建 Python 文件,并可编辑该文件内容。我们也可以通过 FIle–>save/save as 保存文件。一般保存成扩展名为py的文件。

需要执行编辑好的文件。可以用快捷键 F5 或者点击 Run --> Run module。

代码的组织和缩进

很多编程语言通过字符(例如:花括号{})、关键字(例如:begin/end)来划分代码块。同时,在配合代码的缩进增加可读性。“龟叔”设计 Python 语言时,直接通过缩进来组织代码块,“缩进”成为了Python语法强制的规定。

缩进时,几个空格都是允许的,但是数目必须统一。我们通常采用“四个空格”表示一个缩进。

同时,也要避免 “tab制表符”或者tab与空格混合的缩进风格。目前,常用的编辑器一般设置成:tab制表符就是4个空格。

Python 官方推荐的 PEP-8 代码风格详细说明,有兴趣的同学可以参考:

https://www.python.org/dev/peps/pep-0008/

使用注释

注释是程序中会被 Python解释器忽略的一段文本。程序员可以通过注释记录的任意想写的内容,通常是关于代码的说明。

Python中的注释只有单行注释,使用 # 开始直到行结束的部分。

>>> # 注释是个好习惯,方便自己方便他人

>>> a = [10,20,30] #生成一个列表对象,变量a引用了这个变量

使用\行连接符

一行程序长度是灭有限制的,但是为了可读性更强,通常将一行比较长的程序分为多行。这是,我们可以使用\行连接符,把它放在结束的地方。Python 解释器仍然将它们解释为同一行。

>>> a = [10,20,30,40,\
50,60,70,\
80,90,100]
>>> a
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
>>> a = ‘abcdefghijklmnopqrstuvwxyz’
>>> b = 'abcdefg\
hijklmn\
opqrst\
uvwxyz’
>>> a
‘abcdefghijklmnopqrstuvwxyz’
>>> b
‘abcdefghijklmnopqrstuvwxyz’

对象

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

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

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

python语言编程规范 python语言编程基础_python语言编程规范_02

引用

在Python 中,变量也称为:对象的引用。因为,变量存储的就是对象的地址。
变量通过地址引用了“对象”。

变量位于: 栈内存(压栈出栈等细节,后续在介绍)。
对象位于: 堆内存。

Python 是动态类型语言

变量不需要显式声明类型。根据变量引用的对象,Python 解释器自动确定数据类型。

Python 是强类型语言

每个对象偶有数据类型,只支持该类型支持的操作。

标识符

基本用法

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

  1. 区分大小写。
  2. 第一个字符不许是子母、下划线。其后的字符是:子母、数字、下划线
  3. 不能使用关键字。比如:if、or、while 等
  4. 以上下划线开头和即为的名称通常有特殊的含义,尽量避免这种写法。比如:__int__是类的构造函数。

【操作】Python 帮助系统查看关键字

python语言编程规范 python语言编程基础_python语言编程规范_03


注:无需刻意去呗关键字,后面都会学习。

Python 标识符命名规则

开发中,我们通常约定俗称遵守如下规则:

python语言编程规范 python语言编程基础_Python_04

变量和简单赋值语句

变量的声明和赋值

变量的声明和赋值用于将一个变量绑定到一个对象上,格式如下:

变量名 = 表达式

最简单的表达式是字面量。比如: a = 123。运行过场中,解释器先运行右边的表达式,生成一个表达式运算结构的对象,然后,将这个对象地址复制给左边的变量。

【操作】变量在使用前必须先被初始化(先被赋值)

>>> my_name
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    my_name
NameError: name 'my_name' is not defined

变量 my_name 在被使用前未做赋值,因此报错:‘my_name’ is not defined。

删除变量和垃圾回收机制

可以通过 del 语句伤处不在使用的变量。

【操作】删除变量示例

>>> a=123
>>> del a
>>> x
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    x
NameError: name 'x' is not defined

如果对象没有变量引用,就会被垃圾回收器回收,清空内存空间。

链式赋值

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

x=y=123;相当于 x=123;y=123

系列解包赋值

系列数据赋值给对应相同个数的变量(个数不许保持一致)>>> a,b,c=4,5,6 相当于:a=4;b=5;c=6

【操作】使用系列解包赋值实现变量交换

>>> a,b=1,2
>>> a,b=b,a
>>> print(a,b)
2 1

常量

Python不支持常量,即没有语法规则改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。

>>> MAX_SPEED = 120

>>> print(MAX_SPEED)

120

>>> MAX_SPEED = 140 #实际是可以改的。只能逻辑上不做修改。

>>> print(MAX_SPEED)

140

同一运算符

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

python语言编程规范 python语言编程基础_python语言编程规范_05

is与==区别

is用于判断两个变量引用对象是否为同一个,即比较对象的地址。

== 用于判断引用变量引用对象的值是否相等。默认调用对象的 :eq()方法。

整数缓存问题

Python 仅仅对比较小的整数对象进行缓存(范围为【-5,256】)缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在Pycharm 或者 保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化范围是【-5,任意正整数】。

总结

  1. is 比较两个对象的id 值是否相等,是否指向同一个内存地址;
  2. == 比较的是两个对象的内用是否相等,值是否相等。
  3. 小整数对象【-5,256】在全局解释器范围内被放入缓存供重复使用;
  4. is 运算符比 == 效率高,在变量和None 进行比较时,应该使用 is。

【操作】同一运算符 测试

>>> a = 1000    
    >>> b = 1000
    >>> a == b
    True
    >>> a is b
    False
    >>> id(a)
    46764560
    >>> id(b)
    46765216
    >>> c = 10
    >>> d = 10
    >>> c is d
    True
    >>> id(c)
    1388831648
    >>> id(d)
    1388831648

基础运算符

我们在前面讲解了 “+”、“-”、“*”、“/”、“//”、“%”等运算符,这里我们继续讲解一些运算符,并进行学习和测试。

python语言编程规范 python语言编程基础_python语言编程规范_06

  1. 比较运算符 可以连用,并且含义和我们日常使用完全一致。
>>> a = 4

>>> 3<a<10 p="" #关系运算符可以连用<="">

True
  1. 位操作
>>> a = 0b11001        
        >>> b = 0b01000
        >>> c = a|b
        >>> bin(c)     #bin()可以将数字转成二进制表示
        '0b11001'
        >>> bin(c&b)
        '0b1000'
        >>> bin(c^b)
        '0b10001'
        >>> a = 3
        >>> a<<2     #左移1位相当于乘以2.左移2位,相当于乘以4
        12
      >>> a = 8
      >>> a>>1 #右移1位相当于除以2.
  1. 加法操作
    (1)数字相加 3+2==>5
    (2)字符串拼接 “3”+“2”==>“32”
    (3)列表、元组等合并 [10,20,30]+[5,10,100] ==> [10,20,30,5,10,100]
  2. 乘法操作
    (1)数字相乘 3*2==>6
    (2)字符串 复制 “sxt”*3 ==> “sxtsxtsxt”
    (3)列表、元组等复制[10,20,30]*3 ⇒ [10,20,30,10,20,30,10,20,30]

复合赋值运算符

复合赋值可以让程序桁架精炼,提高效率。

python语言编程规范 python语言编程基础_赋值_07

注意:与C 和 Java 不一样,Python 不支持自增(++)和自减(–)

运算符优先级问题

如下优先级,从高到低。

python语言编程规范 python语言编程基础_运算符_08


实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织。

  1. 乘除优先加减
  2. 位运算和算术运算符>比较运算符>逻辑运算符

【操作】使用 python 表示数学表达式:

python语言编程规范 python语言编程基础_运算符_09

(5+10x)/5-13(y-1)(a+b)/x+9(5/x+(12+x)/y)