第 1 部分 基础篇

第1章 Python语言基础

1.2 语法基础(快速过一遍)

1.代码注释方式

注释代码有以下两种方法:

(1)在一行中,“#”后的语句不被执行,表示被注释。

(2)如果要进行大段的注释,可以使用一组3个单引号(''')或3个双引号(""")将注释内容包围。

2.用缩进来表示分层

 Python语句块使用代码缩进4个空格或者一个Tab键表示分层,但在程序中不要同时使用Tab键和空格来缩进,这会使程序在跨平台时不能正常运行。

一般来说行尾遇到“:”就表示下一行开始缩进。

3.语句断行

一般来说,Python一条语句占一行,在每条语句的结尾处不需要使用“;”

但在Python中也可以使用“;”,表示将两条简单语句写在一行。

如果一条语句较长要分几行来写,可使用“\”来换行。

分号还有一个作用,用在一行语句的末尾,表示对本行语句的结果不打印输出。

4.print()的作用

 print()会在输出窗口中显示一些文本或者结果,便于监控、验证和显示数据。

5.在一个字符串中嵌入一个单引号

有以下两种方法:

(1)字符串在单引号中,可以在单引号前加反斜杠(\)嵌入。如I\'m a boy.

(2)字符串在双引号中,可以直接加单引号嵌入。即 ' 和 " 在使用上没有本质差别,但同时使用时要注意区别。

1.3 程序结构

1.3.2 运算符介绍

1. 比较运算符

2. 数值运算符

1.3.3 顺序结构

直接一行一行地执行代码直到程序结束。

1.3.4 判断程序

判断结构增加了程序中的判断机制。

1.3.5 循环结构
1. while循环

2. for循环 

1.3.6 异常 

try:
    Normal execution block
except A:
    Exception A handle
except B:
    Exception B handle
except:
    Other exception handle
else:  #可无,若有,则必有except x或except 块存在,仅在try后无异常时执行
    if no exception,get here
finally:#此语句务必放在最后,并且也是必须执行的语句
    print("finally")

正常执行的程序在try下的Normal execution block中执行;在执行过程中,如果发生了异常,则中断当前Normal execution block中执行,跳转到对应的异常处理块except x(A或B)中开始执行。

1. try-except结构

2. try-except-finallly结构

finally块必须执行。 

3. try-except-else结构

程序进入try语句部分,当try语句部分发生异常则进入except语句部分,若不发生异常则进入else语句部分。

4.try-except-else-finallly结构

1.4 函数

1.4.1 基本函数结构

1.4.2 参数结构

1. 传统参数传递

(1)无参数传递

def func():
    print("这是无参数传递")

调用func(),将打印输出"这是无参数传递"字符串。

(2)固定参数传递

def func(x):
    print("传递的参数为: %s"%x)

2. 默认参数传递

给参数赋值时要注意参数的位置,除非标明是赋给哪个参数的。

3. 未知参数个数传递

只需要在参数面前加个*就可以了。

4. 带键参数传递

参数通过键值对的方式进行传递。例:x = 1

带键参数的传递只需要在参数前面加**就可以了。

1.4.3 回调函数

将函数作为参数传递到另外的函数中执行。

1.4.4 函数的递归与嵌套

1.函数的递归

函数在函数体中直接或者间接地调用自身的现象。递归要有停止条件。

2. 函数的嵌套

在函数中调用另外的函数。

1.4.5 闭包 

回调函数:将函数作为系数传递。

闭包:将函数作为返回值返回。闭包可以延长变量的作用时间与作用域。

1.4.6 匿名函数lambda

匿名函数:“一次性”函数,调用一次或几次就不再需要的函数。

1.4.7 关键字yield

yield关键字可以将函数执行的中间结果返回但不结束程序。能达到可迭代的效果。

yield关键字的作用把一个函数变成一个generator(生成器)。

每次循环迭代时,yield会生成一个值并暂停函数的执行,下次迭代时会从上次暂停的地方继续执行。这样就可以逐个打印函数中的数字。

def func(n):
    i = 0
    while i < n:
        yield i
        i += 1

for i in func(10):
    print(i)
def func(n):
    i = 0
    while i < n:
        print(i)
        i += 1

for i in func(10):
    print(i)
#报错
"""
TypeError                                 Traceback (most recent call last)
Cell In[5], line 7
      4         print(i)
      5         i += 1
----> 7 for i in func(10):
      8     print(i)

TypeError: 'NoneType' object is not iterable

"""
"""
错误原因:错误是因为函数func没有返回任何值。在Python中,如果一个函数没有明确指定返回值,默认返回None。所以当尝试使用for循环迭代函数func(10)时,会出现TypeError,因为NoneType对象(即None)不可迭代。
"""

1.5 数据结构 

1.5.1 列表(list)[]

1. 列表的定义

在中括号[]中添加列表的相(元素),以半角逗号隔开每个元素,即可定义列表

s = [1,2,3,4,5,6]

要获取列表中的元素,可采用list[index]的方式。

s = [1,2,3,4,5,6]
s[0] #1
s[1:3] #[2,3]
s[-2] #5

2.list的常用函数

1.5.2元组(tuple)()

用小括号()的形式,注意:tuple中的元素一旦确定就不可更改

#定义一个tuple的两种不同方法
t = (1,2,3)
t   #(1,2,3)

y = 1,2,3
y   #(1,2,3)

在Python中,如果多个变量用半角逗号隔开,则默认将多个变量按tuple的形式组织起来。

#在Python中两个变量的互换
x,y=1,2
print(x)#1
print(y)#2
x,y=y,x
print(x)#2
print(y)#1

 运行结果:大数据分析(Python)学习笔记1(python基础快速过)-LMLPHP

元组与列表的取值方式相同

元组常用函数:

tuple.count(x)    #计算x在tuple中出现的次数
tuple.index(x)    #计算第一个x元素的位置

 1.5.3 集合(set){}

大多数程序语言都会提供的数据结构。注意:它不能保存重复的数据,即具有过滤重复数据的功能

对一个数组或者元组来说,可以使用set函数取出重复的数据。

L = [1,1,2,2,3,3]
SL = set(L)
print(SL)#这里由列表变为集合

大数据分析(Python)学习笔记1(python基础快速过)-LMLPHP 

注意:set中的元素位置是无序的,因此不能用set[i]这样的方式获取其元素。

s1 = set("abcdefg")
s2 = set("defghijkl")
print(s1)
print(s2)
print(s1-s2)#取出s1中不包含s2的部分
print(s2-s1)
print(s1|s2)#取出s1与s2的并集
print(s1&s2)#取出s1与s2的交集
print(s1^s2)#取出s1与s2的交集但不包括交集部分
print('a'in s1)#判断'a'是否在s1中

大数据分析(Python)学习笔记1(python基础快速过)-LMLPHP

1.5.4 字典(dict){}

 又称键值对。可以将二元列表作为元素的列表转换为字典。

d = dict([['a',12],[5,'a4'],['hel','rt']])
print(d)

大数据分析(Python)学习笔记1(python基础快速过)-LMLPHP 

字典中每一项以半角的逗号隔开,每一项包含key与value,key与value之间用半角的冒号隔开。字典中的每一个元素(键值对)也是无序的。使用index取值。

1.5.5 集合(set)的操作

set或者dict不能直接同类型使用“+”相连,也不能使用“*”连接。

对于list、tuple、set三种数据结构来说,len():求长度;min():求最小值;max():求最大值;sum():求和以上的操作函数都可以使用。

tuple、set、dict都可以使用迭代器迭代iter()、next()

1.6 3个函数(map、filter、reduce)

map和filter函数属于内置函数,reduce函数从pyhton3开始转移到了functools模块猴子那个,使用是需要从functools模块导入。

1.6.1 遍历函数(map)

用于遍历序列。对系列中每个元素进行操作,最终获取新的序列。

大数据分析(Python)学习笔记1(python基础快速过)-LMLPHP

1.6.2 筛选函数(filter)

用于对序列中的元素进行筛选,最终获取符合条件的序列。

大数据分析(Python)学习笔记1(python基础快速过)-LMLPHP

1.6.3 累计函数(reduce)

用于对序列中所有元素进行累计操作。

大数据分析(Python)学习笔记1(python基础快速过)-LMLPHP

1.7 面向对象编程基础

 1.7.1 类

一个Class既包含数据,又包含操作数据的方法。

class Student(object):
    def __init__(self,name,tell):
        self.name = name
        self.tell = tell

1.7.2 类与实例

类是抽象的模板。实例是根据类创建出来的一个个具体的“对象”,每个对象都有相同的方法,但各自数据可能不同。

在Python中,通过class关键字定义类。

创建实例通过类名和()实现的。

类可以自由地给一个实例变量绑定竖向。

class Student(object):
    pass

#创建实例
big = Student()

#给实例变量绑定属性
big.name = 'Nice'

注意:特殊方法“__init__”前后分别是双下划线。

__init__方法的第一个参数永远是self,表示创建的实例本身。

__init__方法内部,可以把各种属性绑定到self,self可以指向创建的实例本身。

有了__init__方法,在创建实例是,就不能传入空的参数了,必须,传入与__init__方法匹配的参数,但self不需要传递。

和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例初始self,而且调用时不用传递该参数。

1.7.3 数据封装

要访问的数据,直接在类内部,没必要通过外面的函数去访问,直接在类的内部定义访问数据的函数。这些封装数据的函数是和类本身关联起来的,称为类的方法。

1.7.4 私有变量和私有方法

类可以有公有变量和公有方法,也可有私有变量和私有方法。公有部分的对象可以从外部访问,而私有部分的对象只有在类的内部才可以访问。在普通变量名或者方法名(即公有变量名或者方法名)前加两个“_”,即可称为私有变量或者方法。

09-20 08:13