一、什么是Python
1.1 python介绍
Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为很多平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
优点:
•简单、易学、易读、易维护•用途广泛•库丰富、代码规范(PEP 8规范[1])•高层语言、可移植性强、解释性、可扩展性•面向对象
缺点:
•语法独特,给初学者带来疑惑•运行速度慢•GIL锁限制线程并行开发•源代码加密困难
文末自取PDF完整版,Python学习笔记
1.2 python语法
python为解释性语言,一行一句,书写时无需添加封号( ; )
# 例1.1print("hello world!")
二、Python的变量、类型及运算
2.1 变量的定义
python使用非常粗犷的变量定义形式,与c/c++、Java等需要声明变量类型不同,python只需要给出变量值即可
// 例2.1: Javapublic class JavaTest {public static void main(String[] args){String str = "hello world";System.out.println(str);}}
# 例2.2: pythonstr_ = "hello world"print(str_)
2.2 变量的类型
python共有5种变量类型:•Number 数字
•int•long(python3.x后移除)•float•complex
•String 字符串•List 列表•Tuple 元组•Dictionary 字典•特殊:Bool 布尔类型
| 类型 | 实例 |
| int | 10 |
| long | 51924361L |
| float | 3.8 |
| complex | 1-2j |
| string | “hello” |
| list | [1, 2, 3] |
| tuple | (1, 2, 3) |
| dictionary | {“value”: 1} |
| bool | True/False |
2.3 运算符
2.3.1 算数运算符
| 运算符 | 描述 |
| + | 加法 |
| – | 减法 |
| * | 乘法 |
| / | 除法,结果为浮点数 |
| // | 除法,并向下取整 |
| % | 取模,返回余数 |
| ** | 幂运算 |
# 例2.3a = 45 % 2# a = 1b = 5 / 2# b = 2.5c = 5 // 2# c = 2
2.3.2 比较运算符
比较运算符返回bool类型
| 运算符 | 描述 |
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
# 例2.4print(2 == 3)# Falseprint(5 >= 3)# True
2.3.3 赋值运算符
| 运算符 | 描述 |
| = | 将右边的结果赋值给左边的变量 |
| += | a+=b — a=a+b |
| -= | a-=b — a=a-b |
| *= | a*=b — a=a*b |
| /= | a/=b — a=a/b |
| //= | a//=b — a=a//b |
| %= | a%=b — a=a%b |
| **= | a**=b — a=a**b |
# 例2.5a = 1b = 2a += b# a = 3
2.3.4 逻辑运算符
| 运算符 | 描述 |
| and | 布尔“与”运算符,返回两个变量“与”运算的结果 |
| or | 布尔“或”运算符,返回两个变量“或”运算的结果 |
| not | 布尔“非”运算符,返回对变量“非”运算的结果 |
# 例2.6a = Trueb = Falseprint(a and b)# Falseprint(not(a and b))# True
2.3.5 位运算符
| 运算符 | 描述 |
| & | 按位“与”运算符 |
| | | 按位“或”运算符 |
| ^ | 按位“异或”运算符 |
| ~ | 按位“取反”运算符 |
| << | “左移动”运算符 |
| >> | “右移动”运算符 |
2.3.6 成员运算符
| 运算符 | 描述 |
| in | 当在指定的序列中找到值时返回True,否则返回False |
| not in | 当在指定的序列中没有找到值时返回True,否则返回False |
# 例2.7a = [1, 2, 4, 6]print(3 in a)# Falseprint(5 not in a)# True
常用场景:
# 例2.8a = [1, 2, 4, 6]for i in a:print(i)
2.3.7 身份运算符
| 运算符 | 描述 |
| is | 当在指定的序列中找到值时返回True,否则返回False |
| is not |
当在指定的序列中没有找到值时返回True,否则返回False |
# 例2.9print(1 is 2)# False
常用场景:
# 例2.10a = Trueif a is True:pass
2.3.8 运算符优先级(略)
熟能生巧,实在不行全用括号括起来
2.4 字符串
2.4.1 字符串访问
python索引:
| 从前向后 | 0 | 1 | 2 | 3 | 4 | 5 |
| 字符串: | a | b | c | d | e | f |
| 从后向前 | -6 | -5 | -4 | -3 | -2 | -1 |
# 例2.11# 访问:text = "abcdef"print(text[1])# 结果:b# 截取:print(text[1:3])# 结果:bc
2.4.2 字符串拼接
使用+拼接字符串
# 例2.12example = "hello"print(example + " world")# hello world
2.4.3 字符串运算
| 运算符 | 描述 |
| + | 字符串拼接 |
| * | 重复输出字符串 |
| [] | 字符串索引 |
| [:] | 字符串切割 |
| in/not in | 成员运算符 |
| r/R | 原始字符串 |
| % | 格式化输出 |
2.4.4 常用内置函数
| 函数名 | 描述 |
| string.decode() | 解码 |
| string.encode() | 编码 |
| string.find() | 字符串搜索 |
| string.index() | 字符串搜索 |
| string.format() | 格式化 |
| string.lower() | 转小写 |
| string.upper() | 转大写 |
| string.replace() | 替代 |
| string.strip() | 去除前后空格 |
| string.zfill() | 填充 |
2.5 列表
2.5.1 列表访问、拼接、运算
大约与字符串一致
2.5.2 常用内置函数
| 函数名 | 描述 |
| list.append() | 末尾添加 |
| list.count() | 统计个数 |
| list.index() | 列表搜索 |
| list.insert() | 插入 |
| list.pop() | 移除 |
| list.remove() | 删除第一个匹配值 |
| list.reverse() | 反向排列 |
| list.sort() | 排序 |
# 例2.13a = ["hello", "world"]a.append("!")# a = ["hello", "world", "!"]a.append(1)# a = ["hello", "world", "!", 1]a.append("1")# a = ["hello", "world", "!", 1, "1"]
2.6 元组
2.6.1 元组的特殊性质
•不可修改•无符号的对象,以逗号隔开,默认为元组
# 例2.14a = 1, 2b = (1, 2)print(a is b)# True
2.6.2 元组的访问、拼接、运算
大约与列表一致
2.7 字典
2.7.1 字典定义
d = {key1 : value1, key2 : value2 , ······}
2.7.2 字典值访问
通过键进行索引: d['key1'] d['key2']
2.7.3 字典修改
值的修改:d['key1'] = value3 键值对的添加:d['key4'] = value4
2.7.4 字典删除
使用del()函数
# 例2.15dict_ = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}del dict_['Name'] # 删除键是'Name'的条目# dict_.clear() # 清空字典所有条目# del dict_ # 删除字典print("dict_['Age']: ", dict_['Age'])print("dict_['School']: ", dict_['School'])
2.7.5 字典特性
•字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行•不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住•键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
三、标识符及关键字
python一些具有特殊功能的标识符,即所谓的关键字,是python已经使用过的,所以不允许开发者自己定义和关键字相同的名字的标识符。
| and | as | assert |
| break | class | continue |
| def | del | elif |
| else | except | exec |
| finally | for | from |
| global | if | in |
| import | is | lambda |
| not | or | pass |
| raise | return | |
| try | while | with |
| yield | 没了 | 真没了 |
四、Python输入输出
4.1 输入
使用input()函数
a = input()print(a)
4.2 输出
4.2.1 普通输出
使用print()
4.2.2 格式化输出
| 符号 | 描述 |
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字 |
| %e | 用科学计数法格式化浮点数 |
# 例4.1print("My name is %s and weight is %d kg!" % ('Zara', 21))# My name is Zara and weight is 21 kg!
五、条件语句和循环语句
5.1 if
结构:if 条件:
# 例5.1a = 2if a == 1:passelif a is not True:passelse:pass
5.2 while
结构:while 条件:
# 例5.2count = 0while count < 9:print('The count is:', count)count = count + 1else:print("no!")print("Good bye!")
无限循环:
while True:print("Yes!")
5.3 for
结构:for i in sequence:
# 例5.3for num in range(10, 20): # 迭代 10 到 20 之间的数字for i in range(2, num): # 根据因子迭代if num%i == 0: # 确定第一个因子j=num/i # 计算第二个因子print('%d 等于 %d * %d' % (num, i, j))break # 跳出当前循环else: # 循环的 else 部分print(num, '是一个质数')
5.4 break、continue和pass
5.4.1 break
python break语句,就像在C语言中,打破了最小封闭for或while循环。
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
5.4.2 continue
python continue 语句跳出本次循环,而break跳出整个循环。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue语句用在while和for循环中。
5.4.3 pass
python pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
六、函数
6.1 函数定义
格式:def 函数名(参数1, 参数2, ······):
使用:return返回想要的参数
# 例6.1def printf(num):print(num)
6.2 函数调用
格式:函数名(参数1, 参数2, ······)
# 例6.2def printf(num):print(num)printf(1)# 1
6.3 参数传递
参数有两种:
•不可更改参数•可更改参数
对于不可更改参数,传值时新建了一个对象,并将值赋给了新对象,原参数值没有发生变化。
对于可更改参数,传值时则是全部传过去,修改时直接修改原数据。
# 例6.3:不可更改def change_int(a):a = 10b = 2change_int(b)print(b)# 结果是 2
# 例6.4:可更改def changeme(my_list):my_list.append([1,2,3,4])print("函数内取值: ", mylist)returnmylist = [10,20,30]changeme(mylist)print("函数外取值: ", mylist)# 函数内取值: [10, 20, 30, [1, 2, 3, 4]]# 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
6.4 参数类型(略)
共有4种参数:
•必备参数•关键字参数•默认参数•不定长参数
6.5 作用域
•全局变量(可以使用global声明全局变量)•局部变量
# 例6.5total = 0 # 这是一个全局变量# 可写函数说明def sum_(arg1, arg2):total = arg1 + arg2 # total在这里是局部变量.print("函数内是局部变量 : ", total)return total#调用sum函数sum_(10, 20)print("函数外是全局变量 : ", total)# 函数内是局部变量 : 30# 函数内是全局变量 : 0
七、模块导入
第一种是直接import,导入整个模块
第二种是仅导入某个函数或变量from * import *
如下面的代码片段:
import requestsfrom bs4 import BeautifulSoup
八、文件I/O
8.1 open()方法
file object = open(file_name [, access_mode][, buffering])
其中:
•file_name为文件名•access_mode为打开文件的模式
8.2 文件操作模式
| 符号 | 模式描述 |
| t | 文本模式 |
| x | 写模式,若存在文件则报错 |
| b | 二进制模式 |
| r | 只读模式 |
| rb | 二进制只读模式,指针位于开头 |
| r+ | 用于读写,指针位于开头 |
| rb+ | 二进制读写模式,指针位于开头 |
| w | 写入模式,覆盖原有内容,能新建文件 |
| wb | 二进制写入,覆盖,能新建 |
| w+ | 读写模式,覆盖,能新建文件 |
| wb+ | 二进制读写,覆盖,能新建 |
| a | 追加模式,能新建 |
| ab | 二进制追加,能新建 |
| a+ | 读写追加,能新建 |
| ab+ | 二进制读写追加,能新建 |
8.3 使用方法
在文件操作过程中,涉及到open() close()等IO操作,为了防止新手出现操作失误,python提供了便捷的方法
# 例8.1with open("test.txt", "a+") as f:f.write("hello world")# 单独使用open函数对文件进行操作时,还需要close函数关闭IO接口# 但是使用with open时,会自动进行close操作,无需再次close
九、异常抛出
9.1 结构
try: # 尝试运行语句passexcept (IndexError, ValueError): # 捕获该异常,分析后继续运行passelse: # 没有异常的话,运行语句(可选)pass
9.2 常见异常
| KeyboardInterrupt | Exception | AttributeError |
| EOFError | IOError | ImportError |
| IndexError | NameError | SyntaxError |
| IndentationError | TabError | ValueError |
| UnicodeError | OSError | StandardError |
十、Python基础挑战题!
定义一系列函数,使得调用函数时,可以在根目录下生成一个”triangle.txt”文件,并在txt文件中画出杨辉三角,要求杨辉三角显示行数在函数的参数中。
例:行数为4,输出:
1
1 1
1 2 1
1 3 3 1
······
十一、学习网站
•菜鸟教程 python2.x[2]•菜鸟教程 python3.x[3]•C语言中文网[4]
十二、总结
•这份教程不完全是基础用法的讲解,还有很多如字符串操作、内置函数等,都是需要不断实践、记住的,因此教程中仅仅列举或提及。 •祝各位同学学习顺利!
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具

三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、Python练习题
检查学习结果。

七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

1