C程序员一周入门python(一)

由于要开发一个爬虫,调查得知用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")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值