‘壹’ 如何系统地自学 python
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。
Python 的设计哲学之一就是简单易学,体现在两个方面:
语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。
切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
废话不多说,学会一门语言的捷径只有一个: Getting Started
¶ 起步阶段
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。
硬知识
“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 Java 程序员去学习 Python,他可以很快的将 Java 中的学到的面向对象的知识 map 到 Python 中来,因此能够快速掌握 Python 中面向对象的特性。
如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。
下面列出了一些适合初学者入门的教学材料:
廖雪峰的 Python 教程 Python 中文教程的翘楚,专为刚刚步入程序世界的小白打造。
笨方法学 Python 这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,非常适合快速起步。
The Hitchhiker’s Guide to Python! 这本指南着重于 Python 的最佳实践,不管你是 Python 专家还是新手,都能获得极大的帮助。
Python 的哲学:
学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。
软知识
“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。
对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一会儿看 2.7 一会儿又转到 3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django 什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。
很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。
还不如告诉初学者,学习本来就是个需要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。
选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。
自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用 Promise...
更重要的是,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。
技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?
因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。
起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。
¶ 发展阶段
完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。
没错,你的怀疑是非常正确的。要让 Python 发挥出它的价值,当然不能停留在语法层面。
发展阶段的核心任务,就是“跳出 Python,拥抱世界”。
在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。
拿爬虫举例,如果你对计算机网络,HTTP 协议,HTML,文本编码,JSON 一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。
在这个阶段,不可避免要接触大量类库,阅读大量书籍的。
类库方面
“Awesome Python 项目”:vinta/awesome-python · GitHub
这里列出了你在尝试解决各种实际问题时,Python 社区已有的工具型类库,如下图所示:
vinta/awesome-python
你可以按照实际需求,寻找你需要的类库。
至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。
书籍方面
这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:
科学和数据分析:
❖“集体智慧编程”:集体智慧编程 (豆瓣)
❖“数学之美”:数学之美 (豆瓣)
❖“统计学习方法”:统计学习方法 (豆瓣)
❖“Pattern Recognition And Machine Learning”:Pattern Recognition And Machine Learning (豆瓣)
❖“数据科学实战”:数据科学实战 (豆瓣)
❖“数据检索导论”:信息检索导论 (豆瓣)
爬虫:
❖“HTTP 权威指南”:HTTP权威指南 (豆瓣)
Web 网站:
❖“HTML & CSS 设计与构建网站”:HTML & CSS设计与构建网站 (豆瓣)
...
列到这里已经不需要继续了。
聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。
事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。
¶ 深入阶段
这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。
可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。
这里推荐一本书:
“Python 源码剖析”:Python源码剖析 (豆瓣)
这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。
另外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。
这里推荐一门公开课
“编程范式”:斯坦福大学公开课:编程范式
讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。
值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。
Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。
¶ 最后的话
每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人!
希望想学 Python 想学编程的同学,不要犹豫了,看完这篇文章,
Just Getting Started !!!
‘贰’ python培训都学哪些知识
不同的Python培训机构学习的内容不同。如需学习Python推荐选择【达内教育】,该机构双模式项目教学小程序开发到名企项目全案。可先就业后付款,保险公司承保,不就业理赔学费。
Python培训知识具体如下:
1、Python核心编程:主要是学习Python语言基础、Linux、MySQL。前期学习【Python编程语言】基础内容,中期主要涉及OOP基础知识,学习后能处理OOP问题,具有初步软件工程知识并树立模块化编程思想,以及了解什么是数据库以及相关知识。
2、学习全栈开发:学习Web编程基础、Flask框架和Django框架等。主要是前端网站开发流程。
3、人工智能:主要是学习数据分析、机器学习、深度学习。能够学到人工智能领域中的图像识别技术,对行业中流行的数据模型和算法有所了解,使用主流人工智能框架进行项目开发,深入理解算法原理与实现步骤。感兴趣的话点击此处,免费学习一下
想了解更多有关python的相关信息,推荐咨询【达内教育】。该机构已从事19年IT技术培训,并且独创TTS8.0教学系统,1v1督学,跟踪式学习,有疑问随时沟通。该机构26大课程体系紧跟企业需求,企业级项目,课程穿插大厂真实项目讲解,对标企业人才标准,制定专业学习计划,囊括主流热点技术,助力学员更好的学习。达内IT培训机构,试听名额限时抢购。
‘叁’ python3.10.2环境配置
有教程。
Python3.10中的新功能:带括号的上下文管理器,现在支持在上下文管理器中使用括号来跨多行继续。这允许以与以前使用import语句类似的方式在多行中格式化长的上下文管理器集合,也可以在封闭组的末尾使用尾随逗号。
右击桌面的【此电脑】(【我的电脑】),然后右击,点击【属性】点击【高级系统设置】找到【高级】--【环境变量】找到【FREIOR_PATH】,点击【编辑】然后在我框起来的这个地方,输入python安装路径即可安装路径就是刚才安装的位置。安装完成。
‘肆’ python怎么实现按照文本顺序执行函数
Python读文本可以用with上下文管理器。根据文本来执行对应名字的函数可以用getatter方法。代码如下:
首先,新建文本文件test.txt,内容如下:
func1,life is short
func2,use python
func1, hello word
下面是Python代码,声明两个function,功能是打印出传入的参数。main里面的把内容就是按照文本的顺序,传入参数执行对应的function:
class Example(object):
def __init__(self):
pass
def func1(self, arg):
print 'this is func1, arg is {}.'.format(arg)
def func2(self, arg):
print 'this is func2, arg is {}.'.format(arg)if __name__ == '__main__':
example_instance = Example()
with open('test.txt', 'r') as f:
for line in f.readlines():
function_name, args = line.strip().split(',')
getattr(example_instance, function_name)(args)
得到这样的输出:
this is func1, arg is life is short.
this is func2, arg is use python.
this is func1, arg is hello word.
‘伍’ python context manager怎么定义其它函数
Python替你自动创建了一个上下文管理器。
with open("test/test.txt","w") as f_obj:
f_obj.write("hello")
如果你使用的是Python 2.4,你不得不以一种老的方式来完成这个任务。
f_obj = open("test/test.txt","w")
f_obj.write("hello")
f_obj.close()
‘陆’ python文件有哪些操作
使用文件:
文件迭代器是最好的读取行工具,文件也有个迭代器会自动在for循环,列表解析或者其他迭代语句中对文件进行逐行读取。
读取内容是字符串,而不是对象,文件读取的数据回到脚本时是一个字符串
close是通常选项,文件上下文管理器是一种替代方法。但close()是一个好习惯。
其他文件工具
open函数及其返回的文件对象是python脚本中通向外部文件的主要接口,但还有其他的类似工具:
标准流,在sys模块中预先打开的文件对象
os模块中的描述文件
sockets、pipes和FIFO文件,文件类对象同步进程、网络通信
通过键来存取的文件,通过键直接存储的不变的python对象
Shell命令流,os.popen、subprocess.Popen这样的工具
第三方开源的文件类工具等
‘柒’ python open与json.mo()
with是Python的上下文管理器,使用with打开文件可自动管理文件流,无需人工关闭。as定义别名,即open()函数返回值的别名。with...as怎么用请看Python教材。
json.mp()作用就是将numbers这个列表给mp成json数组写到文件f_obj中去。
‘捌’ 用Python读入规定目录下的txt文件中的部分内容
# filename: test.py
import os
users = [] # 用来保存从文件中读取的数据
for item in os.listdir('.'): # 遍历指定目录
if os.path.isfile(item) and item.endswith('.txt'): # 判断是否为.txt文件
f = open(item) # 打开文件
for line in f: # 读入文件的每一行
if line.startswith('用户名'): # 变量初始化
uid = age = sex = None
elif line.startswith("用户id"): # 根据每行开始内容获取数据
uid = line.split()[1]
elif line.startswith("年龄"):
age = line.split()[1]
elif line.startswith("性别"):
sex = line.split()[1]
users.append([uid, age, sex]) # 将所获得的数据以列表的形式追加到数组中
f.close() # 关闭文件
print(users) # 打印数组内容
# [['12345', '23', '男'], ['12346', '23', '男'], ['12347', '23', '男'], ['12348', '23', '男']]
使用的数据文件:
1.txt
------------
用户名 abc
------------
用户id 12345
年龄 23
性别 男
------------
用户名 小张
------------
用户id 12346
年龄 23
性别 男
2.txt
------------
用户名 张三
------------
用户id 12347
年龄 23
性别 男
------------
用户名 李四
------------
用户id 12348
年龄 23
性别 男
‘玖’ 零基础应当如何开始学习 Python
零基础学编程,python入门是个不错的选择,国内基本上是以c语言作为入门开发语言,但在国外,已经有很多使用python作为入门编程语言。此外,python在机器学习,人工智能领域也非常流行,算得上是算法工程师的标配编程语言。
下面的内容由浅入深,建议按照先后顺序阅读学习。
一. Python基础
Python基础01 Hello World!
Python基础02 基本数据类型
Python基础03 序列
Python基础04 运算
Python基础05 缩进和选择
Python基础06 循环
Python基础07 函数
Python基础08 面向对象的基本概念
Python基础09 面向对象的进一步拓展
Python基础10 反过头来看看
二. Python进阶
Python进阶01 词典
Python进阶02 文本文件的输入输出
Python进阶03 模块
Python进阶04 函数的参数传递
Python进阶05 循环设计
Python进阶06 循环对象
Python进阶07 函数对象
Python进阶08 错误处理
三. Python深入
到此,Python学习已经可以告一段落。Python的高级语法和底层实现。这一部分的内容并不是使用Python所必须的。想从事一些大型的Python开发(比如制作Python工具、写一个框架等),必须对(特殊方法与多范式、上下文管理器、 对象的属性、 闭包、 装饰器、内存管理)这一部分内容有所的了解。
四. Python标准库
Python标准库的重要性在于:
标准库是Python的一个组成部分。
Python的哲学是一个问题只有一个最好的解决方法。这些标准库为许多问题提供了一个标准的解决方案。
Python标准库01 正则表达式 (re包)
Python标准库02 时间与日期 (time, datetime包)
Python标准库03 路径与文件 (os.path包, glob包)
Python标准库04 文件管理 (部分os包,shutil包)
Python标准库05 存储对象 (pickle包,cPickle包)
Python标准库06 子进程 (subprocess包)
Python标准库07 信号 (signal包)
Python标准库08 多线程与同步 (threading包)
Python标准库09 进程信息 (部分os包)
Python标准库10 多进程初步 (multiprocessing包)
Python标准库11 多进程探索 (multiprocessing包)
Python标准库12 数学与随机数 (math包,random包)
Python标准库13 循环器 (itertools)
Python标准库14 数据库 (sqlite3)