C程序员一周入门python(一)
来源:互联网 发布:淘宝模特基本动作 编辑:程序博客网 时间:2024/05/21 17:11
由于要开发一个爬虫,调查得知用python比较方便,所以学习一下如雷贯耳的Python
参考文献:
《官方文档tutorial.pdf python3.5.4》
《Web Scraping with Python,Ryan Mitchell》
背景:
有较好Linux C基础
前三天阅读tutorial,并记录以下要点。
Python相对C语言有以下特点:
- 1、 提供了高效的上层数据结构应对复杂的世界
Python中一切都是对象
对象分成两类一类是immutable(string/tuple)一类是mutable(list/dictionary/set)
其中string由“”和’’表示,两者基本一样。
其中tuple由()表示
其中list由[]表示,支持嵌套。
其中dictionary由{key:value,…},有些语言也叫关联数组,要求key唯一
其中set由{}表示,可以用来做membership check和消除重复记录
然后,string、tuple和list又派生自sequence可以做indexing和slicing
这些对象还支持类似SQL语句的comprehension操作
- 2、 代码分块方式
Python的代码分块方式是缩进
- 3、 面向对象
面向对象应该是和C语言,语言层面最大的差异。相对C++,python也有很大的自身特点。感觉python就是简单有效的那种。
正如上文提到,python中一切都是对象,python中赋值并不拷贝数据,它们只是将名字和对象联系起来。对象只有一个,但是在多个作用域下,多个名字可以和同一个对象绑定。为了更好的理解OOP还要理解namespace这个概念。一个namespace是名字到对象的映射(目前用dictionary实现),比如built-in名字属于一个namespace;global names属于一个namespace;一个函数中的local name属于一个namespace; 一个对象的属性属于一个namespace。不同namespace下面的name没有任何关系。Namespace在不同时刻创建,有不同的生存期。作用域是和namespace相对应的。参考9.2.1中可以更好的理解。
def scope_test(): def do_local(): spam = "local spam" def do_nonlocal(): nonlocal spam spam = "nonlocal spam" def do_global(): global spam spam = "global spam" spam = "test spam" do_local() print("After local assignment:", spam) do_nonlocal() print("After nonlocal assignment:", spam) do_global() print("After global assignment:", spam)scope_test()print("In global scope:", spam)
结果:
After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam
另外,值得注意的是,类对象支持两种操作,一种是属性引用,一种是实例化。而实例对象只支持属性引用,包括数据属性和方法属性。这里面要注意区分实例对象和类对象。
- 4、 解释语言
Python是解释语言,不用编译执行,因此可以更快的在命令行模式下验证。
- 5、 变量声明方式
Python的变量声明方式是,不用正式定义,直接使用就隐含定义。因此在不同namespace中切换的时候要用global nonlocal等关键词重新声明。
- 6、 各种库
Python提供各种开源库,功能强大。
- 7、 异常处理
这是Python相对C的另一大特性,在语言层面本身提供关于异常处理的关键字,这给程序的调试提供了很大的方便,不用像C一样繁琐的写异常处理。样例如下:
def divide(x, y): try: result = x / y except ZeroDivisionError: print("division by zero!") else: print("result is", result) finally: print("executing finally clause")
- C程序员一周入门python(一)
- C程序员一周入门python(二)
- 【D2】Python一周入门
- 一周入门Kotlin(一)
- 一周入门Kotlin(一)
- 一周学会C#(函数一)
- 一周学会C#(语句一)
- 一周学会C#(枚举一)
- 一周学会C#(结构一)
- 一周学会C#(属性一)
- 一周学会C#(索引一)
- 一周学会C#(类一)
- 一周学会C#(属性一)
- 一周学会C#(索引一)
- 一周学会C#(结构一)
- 一周学会C#(枚举一)
- python 入门(一)
- python 入门(一)
- SpringMVC 基础教程 框架分析
- jquery
- 2017.7.18. Dijkstra+小根堆优化
- 虚拟机
- 关于绝对定位元素居中的流体特性和top:50%的兼容性问题
- C程序员一周入门python(一)
- Eclipse搭建stm32+jlink开发环境全攻略
- POJ
- 冲正交易
- 计算机视觉与模式识别(二)色彩迁移
- PAT 1004成绩排名
- 前端开发工程师养成记
- 自动化测试学习入门
- 斐波那契数列