TallGiraffe_的博客

来自一个中年人的学习日常

从头啃《python核心编程(第二版)》 第2章

第2章 python起步

语句和表达式

语句使用关键字组成命令,告诉程序要做什么

表达式没有关键字,如open(‘filename’, ‘r’)

str()和repr()

交互式环境,只输入变量名,变量内容是用引号引起来的,他显示的是对象的字符串表示,不仅仅是字符串本身

print 调用str()函数显示对象,交互式解释器使用repr()函数显示对象

“_”下划线在解释器中表示上一个表达式的值

print语句重定向

用>>表示重定向

重定向到标准错误输出

import sys

print >> sys.stderr, "this is print comment"

重定向到文件

import sys

f = open('filename', 'a'):
print >> f, "this is print comment"

raw_input()和EOF

EOF字符,windows是Ctrl+Z+回车,Linux是Ctrl+D

获取用户输入时若用户输入了EOF字符,会报EOFError

linux下可以尝试用GNUreadline库

文档字符串

模块第一行,类的第一行,函数的第一行,的字符串都是文档字符串

起到在线文档的作用,help()方法看的就是这些文档字符串

3<5<6

3<5<6等价于 3<5 and 5<6,在其他语言里是不被允许的

动态语言类型

变量的类型不需要事先声明,变量的类型和值在被赋值的那一刻初始化

不支持自增自减

python解释器会认为+-都是正负号,所以不支持自增自减

5种数字类型+1种浮点数类型

  • int
  • long 长度仅受限于机器虚拟内存的总数
  • bool
  • float
  • complex

  • decimal decimal模块的Decimal类,专门处理浮点数

运算符重载

一些运算符不止作用于数字类型,例如+也用于字符串连接, *也用于字符串重复

for迭代循环

python里的for循环接受一个序列或迭代器,迭代器后续学习

大多数语言for循环是计数器循环如C中的 for(i = 1; i<=10; i++)

区分括号还是元组

元组只有一个元素时要在元素后加逗号”,”代表这是单元素元组而不是括号

不加逗号如(‘good’)认为是括号而不是元组

迭代索引和值

python的for循环时想用索引进行迭代可以用range()配合len()

myList = [1,2,3,4,'5','6']
for i in range(len(myList)):
    print 'myList[%s], %s' % (i, myList[i])

使用enumerate()同时迭代索引和值

for k, v in enumerate(myList):
    print 'myList[k]', v

对字典使用enumerate()返回的是索引和索引对应的key

列表解析

列表解析用来方便的生成一个列表,通过for循环,同时也可以加入条件

myList = [x**2 for x in range(10)]

myList = [x**2 for x in range(10) if not x % 2]


# 最左边的x**2 看作列表的元素,for x in range(10) if not x % 2是生成的规则,后边部分像一个向右运行的机器,吐出来的是x**2这种元素

属性的概念

属性是和数据相关的项目

属性可以是简单的数值,也可以是可执行对象,如函数方法

哪些对象有属性,模块,类,文件,复数

函数参数,引用调用

python是通过引用调用的,也就是说参数传递的都是引用,也就是址传递,不像C语言里的值传递。在函数里改变了变量对象,这个变量实际也改变了

当函数参数是不可变对象时,如数字,元组,用起来还是值传递的效果,函数内的改变不会影响到函数外,因为改变不可变对象意味着创建新的对象,新创建一个对象能改变原变量什么呢

def change(num):
    num = num + 1
    print num

类属性,静态变量,实例属性,__init__()

__init__()方法,实例化类时执行的第一个函数,一般作为对象的一些初始化工作,类似java里的构造函数,与构造函数不同的是init方法不负责创建对象

clss FooClass(object):
    version = 3.0.1 # 这是一个类属性,所有的类实例,类中的所有方法共享
    def __init__(self,nm = 'lpdu'):
        self.name = nm  # 这是一个实例属性,一个实例一个,实例间不能共享

    def showinfo(self):
        print self.version
        print self.name

PEP python增强提案

Python的新特性及各种说明

http://python.org/dev/peps

阅读更多
版权声明:文章粗陋,仅供参考 https://blog.csdn.net/TallGiraffe_/article/details/79962932
文章标签: python 学习笔记
个人分类: python 学习笔记
上一篇从头啃《python核心编程(第二版)》 第1章
下一篇从头啃《python核心编程(第二版)》 第3章
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭