入门书地址

三引号 (""" 或 ''') 来指定多行字符串
字符串是不可变的
输出小数点后三位 print('{0:.3f}'.format(1 / 3))
输出字符串长度为 11 print('{0:_^11}'.format('hello')) ___hello___
print 默认以 '\n' 结尾,要以空白结尾的话 print('a', end = '')

在一个字符串中,一个放置在末尾的反斜杠表示字符串将在下一行继续,但不会添加新的一行
print('This is the first sentence.\
This is the second sentent')
This is the first sentence.This is the second sentent

如果你需要指定一些未经过特殊处理的字符串,比如转义序列,那么你需要在字符串前增加 r 或 R 来指定一个 原始(Raw) 字符串
print(r"Newlines are indicated by \n")
Newlines are indicated by \n

如果你有一行非常长的代码,你可以通过使用反斜杠将其拆分成多个物理行。这被称作显式行连接

** 乘方
//整除

运算发优先级由最低优先级到最高优先级
lambda:Lambda 表达式
if - else :条件表达式
or:布尔“或”
and:布尔“与”
not x:布尔“非”
in, not in, is, is not, <, <=, >, >=, !=, ==:比较,包括成员资格测试(Membership Tests)和身份测试(Identity Tests)。
|:按位或
^:按位异或
&:按位与
<<, >>:移动
+, -:加与减
*, /, //, %:乘、除、整除、取余
+x, -x, ~x:正、负、按位取反
**:求幂
x[index], x[index:index], x(arguments...), x.attribute:下标、切片、调用、属性引用
(expressions...), [expressions...], {key: value...}, {expressions...}:表示绑定或元组、表示列表、表示字典、表示集合

if guess == num:
print('Congratulations, you guessed it.')
print('(but you do not win any prizes!)')
elif guess < num:
print('No, it is a little higher than that')
else:
print('No, it is a little lower than that')

内置函数range()
for i in range(1, 5):
print(i)

告诉 Python 这一变量并非局部的,而是全局(Global)的。我们需要通过 global 语句来完成这件事
x = 10
def f():
global x
x = 2

可变参数
当我们声明一个诸如 *param 的星号参数时,从此处开始直到结束的所有位置参数(Positional Arguments)都将被收集并汇集成一个称为“param”的元组(Tuple)。
类似地,当我们声明一个诸如 **param 的双星号参数时,从此处开始直至结束的所有关键字参数都将被收集并汇集成一个名为 param 的字典(Dictionary)。
def total(a = 3, *number, **phontbook):
print('a', a)
for i in number:
print('number is ', i)
for first, second in phontbook.items():
print(first, second)

total(10, 4, 65, 2, Jack = 25, John = 2352, Inge = 2461)

a 10
number is 4
number is 65
number is 2
Jack 25
John 2352
Inge 2461

文档字符串 DocString
我们可以通过使用函数的 __doc__(注意其中的双下划綫)属性(属于函数的名称)来获取函数 print_max 的文档字符串属性
def print_max(x, y):
'''print the max number in the x and y

they are int'''
if x > y:
print(x)
print(y)
'''This is another strings'''

print_max(3, 5)
print(print_max.__doc__)

5
print the max number in the x and y

they are int

列表 是一种用于保存一系列有序项目的集合,也就是说,你可以利用列表保存一串项目的序列。
shoplist = ['apple', 'mango', 'carrot', 'banana']

元组(Tuple)用于将多个对象保存到一起。你可以将它们近似地看作列表,但是元组不能提供列表类能够提供给你的广泛的功能。
元组的一大特征类似于字符串,它们是不可变的,也就是说,你不能编辑或更改元组。
元组是通过特别指定项目来定义的,在指定项目时,你可以给它们加上括号,并在括号内部用逗号进行分隔。
元组通常用于保证某一语句或某一用户定义的函数可以安全地采用一组数值,意即元组内的数值不会改变。
zoo = ('puthon', 'elephant', 'penguin')
print('Number of animal in the zoo is', len(zoo))

new_zoo = 'monkey', 'camel', zoo
print('Number of animal in the new zoo is', len(new_zoo))
print(new_zoo)
print(new_zoo[2])
print(new_zoo[2][2])

Number of animal in the zoo is 3
Number of animal in the new zoo is 3
('monkey', 'camel', ('puthon', 'elephant', 'penguin'))
('puthon', 'elephant', 'penguin')
penguin

一个空的元组由一对圆括号构成,就像 myempty = () 这样。然而,一个只拥有一个项目的元组并不像这样简单。
你必须在第一个(也是唯一一个)项目的后面加上一个逗号来指定它,如此一来 Python 才可以识别出在这个表达式想表达的究竟是一个元组还是只是一个被括号所环绕的对象,
也就是说,如果你想指定一个包含项目 2 的元组,你必须指定 singleton = (2, )。

字典就像一本地址簿,如果你知道了他或她的姓名,你就可以在这里找到其地址或是能够联系上对方的更多详细信息,换言之,我们将键值(Keys)(即姓名)与值(Values)(即地址等详细信息)联立到一起。
在这里要注意到键值必须是唯一的,正如在现实中面对两个完全同名的人你没办法找出有关他们的正确信息。
另外要注意的是你只能使用不可变的对象(如字符串)作为字典的键值,但是你可以使用可变或不可变的对象作为字典中的值。基本上这段话也可以翻译为你只能使用简单对象作为键值。
在字典中,你可以通过使用符号构成 d = {key : value1 , key2 : value2} 这样的形式,来成对地指定键值与值。
在这里要注意到成对的键值与值之间使用冒号分隔,而每一对键值与值则使用逗号进行区分,它们全都由一对花括号括起。
另外需要记住,字典中的成对的键值—值配对不会以任何方式进行排序。如果你希望为它们安排一个特别的次序,只能在使用它们之前自行进行排序。
a = {'Swaroop' : 'swaroop@a.com',
'Larry' : 'larry@a.com',
'Matsumoto' : 'mata@a.com',
'Spammer' : 'spammer@a.com'}

print('Swarrop\'s address is', a['Swaroop'])

del a['Spammer']

print(len(a))

for name, b in a.items():
print('Contact {} at {}'.format(name, b))

a['Guido'] = 'guido@a.com'
if 'Guido' in a:
print(a['Guido'])

Swarrop's address is swaroop@a.com
3
Contact Swaroop at swaroop@a.com
Contact Larry at larry@a.com
Contact Matsumoto at mata@a.com
guido@a.com

序列的主要功能是资格测试(Membership Test)(也就是 in 与 not in 表达式)和索引操作(Indexing Operations),它们能够允许我们直接获取序列中的特定项目。
上面所提到的序列的三种形态——列表、元组与字符串,同样拥有一种切片(Slicing)运算符,它能够允许我们序列中的某段切片——也就是序列之中的一部分。
a = ['apple', 'mango', 'carrot', 'banana']
name = 'swaroop'

print(a[0])
print(a[1])
print(a[-1])
print(a[-2])
print(name[0])

print(a[1 : 3])
print(a[2 : ])
print(a[1 : -1])
print(a[ : ])

print(name[1 : 3])
print(name[2 : ])
print(name[1 : -1])
print(name[ : ])

apple
mango
banana
carrot
s
['mango', 'carrot']
['carrot', 'banana']
['mango', 'carrot']
['apple', 'mango', 'carrot', 'banana']
wa
aroop
waroo
swaroop

你同样可以在切片操作中提供第三个参数,这一参数将被视为切片的步长(Step)(在默认情况下,步长大小为 1)
a = ['apple', 'mango', 'carrot', 'banana']
print(a[ :: 2])
print(a[1 : 4 : 2])

['apple', 'carrot']
['mango', 'banana']

集合(Set)是简单且不重复的对象的无序集合(Collection)
>>> bri = set(['brazil', 'russia', 'india'])
>>> 'india' in bri
True
>>> 'usa' in bri
False
>>> bric = bri.copy()
>>> bric.add('china')
>>> bric.issuperset(bri)
True
>>> bri.remove('russia')
>>> bri & bric # OR bri.intersection(bric)
{'brazil', 'india'}

引用
你必须使用切片操作来制作副本。如果你仅仅是将一个变量名赋予给另一个名称,那么它们都将“查阅”同一个对象
a = ['apple', 'mango', 'carrot', 'banana']
b = a

del a[0]
print(a)
print(b)

c = a[:]
del a[0]
print(a)
print(c)

['mango', 'carrot', 'banana']
['mango', 'carrot', 'banana']
['carrot', 'banana']
['mango', 'carrot', 'banana']

name = 'Swaroop'

if name.startswith('Swa'):
print('Yes, the string starts with "Swa"')

if 'a' in name:
print('Yes, it contains the string "a"')

if name.find('war') != -1:
print('Yes, it contains the string "war"')

delimiter = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']
print(delimiter.join(mylist))
Yes, the string starts with "Swa"
Yes, it contains the string "a"
Yes, it contains the string "war"
Brazil_*_Russia_*_India_*_China

类方法与普通函数只有一种特定的区别——前者必须多加一个参数在参数列表开头,这个名字必须添加到参数列表的开头,但是你不用在你调用这个功能时为这个参数赋值,Python 会为它提供。这种特定的变量引用的是对象本身,按照惯例,它被赋予 self 这一名称。

__init__ 方法会在类的对象被实例化(Instantiated)时立即运行。这一方法可以对任何你想进行操作的目标对象进行初始化(Initialization)操作。
class Person:
def __init__(self, name):
self.name = name
def say_hi(self):
print('Hello world', self.name)

Hello world Hello world

p = Person('Hello world')
p.say_hi()


class Robot:
"""This is a robot with a name"""

population = 0
def __init__(self, name):
self.name = name
print('(Initializing{})'.format(self.name))
Robot.population += 1

def die(self):
print("{} is being destroyed".format(self.name))
Robot.population -= 1

def say_hi(self):
print('Hello world, I am ', self.name)

@classmethod
def how_many(cls):
print('We have {:d} robots.'.format(cls.population))

d1 = Robot("R2-D2")
d1.say_hi()
Robot.how_many()

d2 = Robot("C-2P0")
d2.say_hi()
Robot.how_many()

d1.die()
d2.die()
Robot.how_many()

(InitializingR2-D2)
Hello world, I am R2-D2
We have 1 robots.
(InitializingC-2P0)
Hello world, I am C-2P0
We have 2 robots.
R2-D2 is being destroyed
C-2P0 is being destroyed
We have 0 robots.
所有的类成员都是公开的。但有一个例外:如果你使用数据成员并在其名字中使用双下划线作为前缀,形成诸如 __privatevar 这样的形式,
Python 会使用名称调整(Name-mangling)来使其有效地成为一个私有变量。
因此,你需要遵循这样的约定:任何在类或对象之中使用的变量其命名应以下划线开头,其它所有非此格式的名称都将是公开的,并可以为其它任何类或对象所使用。

继承
class SchoolMember:
'''代表任何学校里的成员。'''
def __init__(self, name, age):
self.name = name
self.age = age
print('(Initialized SchoolMember: {})'.format(self.name))

def tell(self):
'''告诉我有关我的细节。'''
print('Name:"{}" Age:"{}"'.format(self.name, self.age), end=" ")

class Teacher(SchoolMember):
'''代表一位老师。'''
def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
print('(Initialized Teacher: {})'.format(self.name))

def tell(self):
SchoolMember.tell(self)
print('Salary: "{:d}"'.format(self.salary))

class Student(SchoolMember):
'''代表一位学生。'''
def __init__(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks
print('(Initialized Student: {})'.format(self.name))

def tell(self):
SchoolMember.tell(self)
print('Marks: "{:d}"'.format(self.marks))

t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 25, 75)

# 打印一行空白行
print()

members = [t, s]
for member in members:

我们可以通过使用 try..except 来处理异常状况。一般来说我们会把通常的语句放在 try 代码块中,将我们的错误处理器代码放置在 except 代码块中。
try:
text = input('Enter something --> ')
except EOFError:
print('Why did you do an EOF on me?')
except KeyboardInterrupt:
print('You cancelled the operation.')
else:
print('You entered {}'.format(text))

抛出异常
你能够引发的错误或异常必须是直接或间接从属于 Exception(异常) 类的派生类。
class ShortInputException(Exception):
'''一个由用户定义的异常类'''
def __init__(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast

try:
text = input('Enter something --> ')
if len(text) < 3:
raise ShortInputException(len(text), 3)

Enter something --> a
ShortInputException: The input was 1 long, expected at least 3

import sys
import time

f = None
try:
f = open("poem.txt")
# 我们常用的文件阅读风格
while True:
line = f.readline()
if len(line) == 0:
break
print(line, end='')
sys.stdout.flush()
print("Press ctrl+c now")
# 为了确保它能运行一段时间
time.sleep(2)
except IOError:
print("Could not find file poem.txt")
except KeyboardInterrupt:
print("!! You cancelled the reading from the file.")
finally:
if f:
f.close()
print("(Cleaning up: Closed the file)")

# 对全体师生工作
member.tell()

# 打开文件以编辑('w'riting)
f = open('poem.txt', 'w')
# 向文件中编写文本
f.write(poem)
# 关闭文件
f.close()
我们使用内置的 open 函数并指定文件名以及我们所希望使用的打开模式来打开一个文件。
打开模式可以是阅读模式('r'),写入模式('w')和追加模式('a')。我们还可以选择是通过文本模式('t')还是二进制模式('b')来读取、写入或追加文本。

__init__(self, ...)
这一方法在新创建的对象被返回准备使用时被调用。
__del__(self)
这一方法在对象被删除之前调用(它的使用时机不可预测,所以避免使用它)
__str__(self)
当我们使用 print 函数时,或 str() 被使用时就会被调用。单语句块
__lt__(self, other)
当小于运算符(<)被使用时被调用。类似地,使用其它所有运算符(+、> 等等)时都会有特殊方法被调用。
__getitem__(self, key)
使用 x[key] 索引操作时会被调用。
__len__(self)
当针对序列对象使用内置 len() 函数时会被调用

单语句块
如果你的语句块只包括单独的一句语句,那么你可以在同一行指定它,例如条件语句与循环语句。
if flag: print('Yes')

Python入门书的读书笔记的更多相关文章

  1. 读书笔记:编程小白的第一本python入门书

    书名:编程小白的第一本python入门书 作者:侯爵 出版社/出处:图灵社区 年份:2016年 封面: 感想: 本书短小精悍,精华部分在于给编程小白打了鸡血的同时输出了一种“高效学习法的思想”. 个人 ...

  2. 转载-《Python学习手册》读书笔记

    转载-<Python学习手册>读书笔记 http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html

  3. 编程小白的第一本python入门书电子版|百度网盘分享无偿获取|评分超高的python教材

    点此进入网盘下载提取码:cr74 为了能让更多的编程小白轻松地入门编程,把高效学习法结合 Python 中的核心知识,写成了这本书.随意翻上几页,你就会发现这本书和其他编程书的不同,其中有大量的视觉化 ...

  4. 笔记|《简明Python教程》:编程小白的第一本python入门书

    <简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...

  5. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  6. Unity Shader入门精要读书笔记(二)UnityShader概述

    第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理 ...

  7. 读书笔记之《编程小白的第1本Python入门书》

    本书电子版下载地址:百度网盘 写在前面:你需要这本书的原因 有没有那一个瞬间,让你想要放弃学习编程? 在我决心开始学编程的时候,我为自己制定了一个每天编程1小时的计划,那时候工作很忙,我只能等到晚上9 ...

  8. 《利用python进行数据分析》读书笔记--第五章 pandas入门

    http://www.cnblogs.com/batteryhp/p/5006274.html pandas是本书后续内容的首选库.pandas可以满足以下需求: 具备按轴自动或显式数据对齐功能的数据 ...

  9. Python 编程:从入门到实战 读书笔记

    1..title()  每个单词首字母大写     .upper()  所有字母大写     .lower()  所有字母小写 2. \t 空白   转义字符只能用在""内     ...

随机推荐

  1. what is diff. b/w app state & session state

    Application state is a data repository available to all classes in an ASP.NET application. Applicati ...

  2. LightOJ 1258 Making Huge Palindromes (Manacher)

    题意:给定上一个串,让你在后面添加一些字符,使得这个串成为一个回文串. 析:先用manacher算法进行处理如果发现有字符匹配超过最长的了,结束匹配,答案就是该字符前面那个长度加上该串原来的长度. 代 ...

  3. delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法

    delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program F ...

  4. 代理(Proxy)模式

    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的反问. * 抽象主题角色(Subject):声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题. * ...

  5. Sharepoint2013搜索学习笔记之自定义结果显示模板(九)

    搜索结果通过套用定义好的显示模板来展示结果,显示模板由js和html组成,我们可以通过修改显示模板,然后将修改好的显示模板跟搜索结果绑定起来,来修改搜索结果的显示效果,例子如下图: 修改前 修改后 第 ...

  6. 合并datagridview 条件合并行数据

    public void HeBing() { int rowsCount; int CellCount; rowsCount = FG1.Rows.Count; CellCount = FG1.Col ...

  7. c++迭代递归实现汉诺塔(5种迭代方法满足你)

    #include <iostream> //从A到C using namespace std; int n; void ready() { cout << "请输入汉 ...

  8. 内联函数背景、例子、与普通函数的区别及要注意的地方 ------新标准c++程序设计

    背景: 使用函数能够避免将相同代码重些多次的烦恼,还能减少可执行程序的体积,但也会带来程序运行时间上的开销.函数调用在执行时,首先在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下 ...

  9. kali linux之手动漏洞挖掘三(sql注入)

    服务器端程序将用户输入作为参数作为查询条件,直接拼写sql语句,并将结果返回给客户端浏览器 如判断登录 select * from users where user='uname' and passw ...

  10. 整理LVS架构压力测试工作

    首先,测试环境在模拟环境下进行.     测试环境:1director(apache2.2) + 1realserver(jboss4.2.3GA)+1databaseserver(oracle9i) ...