python2

使用\行连接符

对象

        python中一切皆对象,每个对象由:标识、类型、value组成

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

        1.标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数id(obj)

可返回对象obj的标识。

        2.类型用于标识对象存储的数据的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用type(obj)获得对象的所属类型。

        3.值表示对象所存储的数据的信息。使用print(obj)可以直接打印出值

引用

        在python中,变量也称为:对象的引用。因为,变量存储的就是对象的地址。

变量通过地址引用了对象。

变量位于:栈内存

对象位于:堆内存

python是动态类型语言

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

Python是强类型语言

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

标识符:

        用于变量、函数、类模块等的名称。

规则:1、区分大小写

2、第一个字符必须是字幕、下划线。其后的字符是:字母、数字、下划线

3、不能使用关键字、

4、以双下划线开头和结尾的名称通常有特殊含义

可以通过del删除变量

垃圾回收机制

一文读懂Python垃圾回收机制【收藏版】-腾讯云开发者社区-腾讯云 (tencent.com)

链式赋值

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

系列解包赋值

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

Python不支持常量,全部大写规则位常量

python中最基本的内置数据类型:

1、整型

2、浮点型

3、布尔型

4、字符串型

**是幂运算

/浮点数除法,//整数除法

使用divmod()可以同时得到商和余数

python2,int有存储限制,python3中可以存储任意大小的整数,可以做超大数的计算,不会造成“整数溢出”

Googol是10的100次方是Google最初的名字古戈尔 - 维基百科,自由的百科全书 (wikipedia.org)

round(value)可以返回四舍五入的值

但不会改变原有值,而是产生新的值

浮点数

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

时间的表示

计算机中时间的表示从1970年1月1日0点开始,以毫秒进行计算,把1970年这个时刻称为unix时间点

布尔值

python2中没有布尔值,直接用数字0表示false,用数字1表示true

python3中把true和false定义成了关键字,但他们的本质还是1和0,甚至可以和数字相加

同一运算符

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

is 是判断两个标识符是不是引用同一个对象

is not 是判断两个标识符是不是引用不同对象

is和 = =区别

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

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

整数缓存问题

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

总结:

1、is比较两个对象的id值是否相等,是否指向同一个内存地址;

2、==比较的是两个对象的内容是否相等,值是否相等;

3、小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;

4、is运算符比==效率高,在变量和None进行比较时,应该使用is

字符串的本质是:字符序列、

python中的字符串是不可变的,我们无法对原字符串做任何修改。但是,可以讲字符串的一部分赋值到新创建的字符串,达到“看起来修改”的效果。

 python不支持单字符类型,单字符也是做为一个字符串使用的

字符串的编码

python3直接支持Unicode,可以表示世界上任何书面语言的字符,python3的字符默认就是16为Unicode编码,ASCII码是Unicode编码的子集。

使用内置函数 ord()可以吧字符转换成对相应的Unicode码

使用内置函数chr()可以把十进制数字转换为对应的字符。

引号创建字符串

我们可以通过单引号或双引号创建字符串

使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转移字符。

使用连续三个单引号或双引号,可以帮助我们创建多行字符串。
 

转义字符

我们可以使用“\+特殊字符”,实现某些难以用字符表示的效果,比如换行超详细总结:python的转义字符及用法_python转义字符的作用和用法-CSDN博客

字符串拼接

1、可以使用+将多个字符串拼接起来、

        如果+两边都是字符串则拼接

        如果+两边都是数字则加法

        如果+两边类型不同,则抛出异常

2、可以将多个字面字符串直接放到一起实现拼接。

不换行打印

我们前面调用print时,会自动打印一个换行符。有时,我们不想换行,不想自动添加换行符。我们可以自己通过参数“end=”任意字符串、实现末尾添加任何内容:

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

str()可以帮我们将其他数据类型转换为字符串

当我们调用print函数时,解释器自动调用了str()将非字符串的对象转成了字符串。

使用[]提取字符

  字符串的本质就是字符序列,我们可以通过在字符串后面加【】,在[]里面制定偏移量,可以提取该位置的单个字符。

正向搜索:

        最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。

        最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推。

replace()实现字符串替换

字符串不可改变。但是我们确实有时候需要替换某些字符,这时只能通过创建新的字符串来实现。

整个过程中,实际上我们是创建了新的字符串对象。并指向了变量a,而不是修改了以前的字符串。

字符串切片slice操作

切片slice操作可以让我们快速地提取字符串。

标准格式为:[起始偏移量start:终止偏移量end:步长step]

【:】提取整个字符

split()分割和join()合并

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

join()作用和split()作用刚好相反,用于将一系列子字符串连接起来。

拼接字符串要点:

  使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join函数,因为join函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。

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

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

去除首尾信息

可以通过strip()去除字符串首尾指定信息

Python strip()方法 | 菜鸟教程 (runoob.com)

大小写转换

编程中关于字符串大小写

a.capitalize()  产生新的字符串,首字母大写

a.title()  每个单词都首字母大写

a.upper()  所以字符转换成大写

a.lower()  所有字符转换成小写

a.swapcase()  所有字母大小写转换

格式排版

center()、ljust()、rjust()

字符串的格式化

format()基本用法

python 2.6开始,新增了一种格式化字符串的函数str.format(),它增强了字符串格式化的功能。

基本语法是通过{}和:来代替以前的%。

format 函数可以接受不限个参数,位置可以不按顺序。

我们可以通过示例进行格式化的学习。

可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便

填充与对齐

序列

 序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。比如一个整数序列【10,20,30,40】

序列中存储的是整数对象的地址,而不是整数对象的值

在内存中,序列就是一块用来存放多个值的连续的内存空间。

Python的列表大小可变,根据需要随时增加或缩小。

字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列。

 列表元素的增加和删除

 当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这个特点涉及列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。

append()方法

+运算符操作

并不是真正的尾部添加元素,而是创建新的列表对象,将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。

extend()方法

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。

乘法拓展

使用乘法拓展列表,生成一个新列表,新列表元素是原列表元素的多次重复。

列表元素的删除

del删除

删除列表指定位置的元素

pop方法

pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。

remove()方法

删除首次出现的指定元素,若不存在该元素抛出异常。

列表元素访问和计数

通过索引直接访问元素

我们可以通过索引直接访问元素。索引的区间在[0,列表长度-1]这个范围。超过这个范围则会抛出异常。

 index()获得指定元素在列表中首次出现的索引

index()可以获取指定元素首次出现的索引位置。语法是:index(value,[start,[end]])).其中,start和end指定了搜索的范围。

count()获得指定元素在列表中出现的次数

a=[10,20,30,40,50,20,30,20,30]

a.count(20)

3

len()返回列表长度

即列表中包含元素的个数

成员资格判断

判断列表中是否存在指定的元素,我们可以使用count()方法,返回0则表示不存在,返回大与0则表示存在。但是,一般我们会使用更加简洁的in关键字来判断,直接返回True或False

列表的遍历

for obj in listObj:

    print(obj)

列表排序

修改原列表,不建新列表的排序

建新列表的排序

我们也可以通过内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改

Python sorted() 函数 | 菜鸟教程 (runoob.com)

Python之排序函数sorted()详解_python中sorted-CSDN博客

reversed()返回迭代器

内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()

不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。

sum max min

多维列表

二维列表

第四章

控制语句

我们在前面学习的过程中,都是很短的示例代码,没有进行复杂的操作。现在,我们将开始学习流程控制语句。

前面学习的变量、数据类型(整数、浮点数、布尔)、序列(字符串、列表、元祖、字典、集合)可以看做是数据的组织方式。数据可以看做是砖块

流程控制语句是代码的组织方式,可以看做是混凝土

一个完整的程序,离不开砖块,也离不开混凝土,他们的组合,才能让我们建立从小到一个方法大到操作系统,这样各种各样的软件

选择结构

三元条件运算符

Python中的三元运算符:简洁高效的条件表达式_python三元运算符-CSDN博客

for x in (10,20,30)

      print(x)

range对象

range对象是 一个迭代器对象,用来产生指定范围的数字序列。格式为

range(start,end,【step】)

生成的数值序列从start开始到end结束(不包含end)若没有填写start,则默认从0开始。

step是可选的步长,默认为1.

  打印九九乘法表

for m in range(1,10):
    for n in range(1,m+1):
        print("{0}*{1}={2}".format(m,n,(m*n)),end="\t")
    print()#换行
#使用列表和字典存储表格的数据
r1= dict(name="zhangsan",age=18,salary=30000,city="北京”)
r2= dict(name="lisi",age=19,salary=20000,city="上海")
r3= dict(name="wangwu",age=20,salary=10000,city="深圳”)
tb=[r1,r2,r3]
for x in tb:
    if x.get("salary")>15000:
        print(x)

循环代码优化

虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上斤斤计较。编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:

1.尽量减少循环内部不必要的计算

2.嵌套循环中,尽量减少内层循环的计算,尽可能向外提。

3.局部变量查询较快,尽量使用局部变量

其他优化手段

1.连接多个字符串,使用join()而不适用+

2.列表进行元素插入和删除,尽量在列表尾部操作

使用zip()并行迭代

我们可以通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。

推导式创建序列

推导式是从一个或者多个迭代器快速创建序列的一种方法,它可以将循环和条件判断结合,从而避免冗长的代码,推导式是典型的Python风格,会使用它代表你已经超过python初学者的水平

列表推导式

集合推导式

字典推导式21. Python的字典推导(Dictionary Comprehension)_python 字典推导-CSDN博客

生成器推导式(生成元组)

一个生成器只能运行一次,第一次迭代可以得到数据,第二次迭代发现数据已经没有了

函数用法和底层分析

函数是可重用的程序代码块,函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。

 在编写函数时,函数体中的代码写法和我们前面讲述的基本一致,只是对代码实现了封装,并增加了函数调用、传递函数、返回计算结果等内容、

  为了让大家更容易理解,掌握的更深刻。我们也要深入内存底层进行分析。绝大多数语言内存底层都是高度相似的,这样大家掌握了这些内容也便于以后学习其他语言。

函数的基本概念

1.一个程序由一个个任务组成;函数就是代表一个任务或者一个功能、

2.函数是代码复用的通用机制

Python函数的分类

1.内置函数

2.标准库函数

3.第三方库函数

4.用户自定义函数

Python中,定义函数的语法如下:

def 函数名 (【参数列表】):

        “文档字符串”

        函数体/若干语句

要点:

1、我们使用def来定义函数,然后就是一个空格和函数名称;

        Python执行def时,会创建一个函数对象,并绑定到函数名变量上。

2.参数列表

        圆括号内是形式参数列表,有多个参数则使用逗号隔开

        形式参数不需要声明类型,也不需要指定函数返回值类型。

        无参数,也必须保留空的圆括号

        实参列表必须与形参列表一一对应

文档字符串_函数注释

程序的可读性最重要,一般建议在函数体开始的部分附上函数定义说明,这就是“文档字符串”,也有人称为函数的注释。我们通过三个单引号或者三个双引号,中间可以加入多行文字进行说明。

返回值

return返回值要点:

1.如果函数体中包含return语句,则结束函数执行并返回值;

2.如果函数体中不包含return语句,则返回None值。

3.要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可

变量的作用域

变量起作用的范围称为变量的作用域,不同作用域内同名变量之间不影响

变量分为:全局变量、局部变量

全局变量:

1.在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。

2。全局变量降低了函数的可读性和通用性。应尽量避免全局变量的使用。

3.全局变量一般做常量使用

4。函数内要改变全局变量的值。使用global声明一下

局部变量:

1.在函数体中(包含形式参数)声明的变量。

2.局部变量的引用比全局变量快

3.如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量。

参数的传递

函数的参数传递本质上就是:从实参到形参的赋值操作。Python中“一切皆对象”,所有的赋值操作都是“引用的赋值”。所以,Python中参数的传递都是“引用传递”,不是“值传递”。具体操作时分为两类:

1、对“可变对象”进行“写操作”,直接作用于原对象本身。

2、对“不可变对象”进行“写操作”,会产生一个新的“对象空间”,并用新的值填充这块空间。(起到其他语言的“值传递”效果,但不是“值传递”)

可变对象有:

         字典、列表、集合、自定义的对象

不可变对象有:

        数字、字符串、元组、function等

  • 28
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值