简明python教程的读书笔记(一)

简介:

python编程是一件愉快的事情!!!

一、python的特点:

它注重的是如何解决问题而不是编程语言的语法和结构。

当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类

的底层细节。

可移植性

支持面向对象和面向过程的编程

可嵌入性:可以在python代码中嵌入c或者c++

丰富的库

二、python代码执行的过程:

源代码.py-> 字节码.pyc ->字节码在PVM(Python虚拟机)中执行

二、python IDE:

http://www.pydev.org/

三、python的相关基本概念:

  • 解释性语言:源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。

  • 编译型语言:在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。

  • 数: python中有4种类型的数:整数、长整数、浮点数、复数

  • 字符串:一般用单引号、双引号、三引号

  • 反斜杠

  • 自然字符串:自然字符串通过给字符串加上前缀r或R来指定。例如r"Newlines are indicated

by \n"。

  • unicode字符串:—你只需要在字符串前加上前缀u或U,

记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用

非英语的语言写的文本。

  • 如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s'

'your name?'会被自动转为"What's your name?"。

  • 在Python中没有专门的char数据类型。

  • 记住,单引号和双引号字符串是完全相同的。

  • 一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以

写成'\\1'或r'\1'。

什么是后向引用backreference:\n斜杠加数字表示前面括号的内容。例如:\b(\d+)\b\s+\1\b这样这个会匹配如:123 123重复的数字串

元字符

名称

匹配对象

.

点号(dot)

单个任意字符

\n

换行(newline)

换行

\r

回车(return)

回车

\t

制表符(Tab)

制表符

[...]

字符组(Character Class)

列出的任意字符

[^...]

排除型字符组(Negated Character Class)

未列出的任意字符

\d

数字(digit)

数字

\D

非数字

\w

单词(word)

单词字符(字母或者数字)

\W

非单词字符

\s

空白字符(whitespace)

空白字符

\S

非空白字符

^

脱字符(caret)

行的起始位置

$

美元符(dollar)

行的结束位置

\<

单词的起始位置

\>

单词的结束位置

\b

边界(Boundary)

单词边界

\B

非单词边界

(?=...)

肯定顺序环视(Positive Lookahead)

成功如果右边能够匹配

(?!...)

否定顺序环视(Negative Lookahead)

成功如果右边不能够匹配

(?<=...)

肯定逆序环视(Positive Lookbehind)

成功如果左边能够匹配

(?<!...)

否定逆序环视(Negative Lookbehind)

成功如果左边不能够匹配

?

它之前的字符可以不出现,也可以只出现一次

+

它之前的字符可以出现无数次,但至少要出现一次

*

它之前的字符可以出现无数次,也可以不出现

{n}

它之前的字符精确匹配n次

{n,}

它之前的字符可以出现无数次,但至少要出现n次

{n,m}

它之前的字符至少要出现n次,至多出现m次

(...)

圆括号(parenthese)

分组子表达式和记录它包含的字表达匹配的内容

(?:...)

分组子表达式

\1 - \9

后向引用

|

竖线(bar)

匹配分割两边的任意一个表达式

  • 变量:变量只是你的计算机中存储信息的一部分内存。使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。

  • 标示符命令规则:

第一个字符必须是字母表中的字母(大写或小写)或者一个下划线;

其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组

成;

大小写敏感;

  • 数据类型:变量可以处理不同类型的值,称为数据类型。

  • 对象:

  • 分号表示一个逻辑行/语句的结束,如下:

想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这

种用法。

i = 5

print i

可以写成

i = 5;

print i;

也可以写成

i = 5; print i;

  • 缩进:缩进来决定语句的分组。不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。强烈建议 你在每个缩进层次使用 单个制表符 。

  • 对象:

  • 类:

  • 方法:类也有方法,即仅仅为类而定义地函数。仅仅在你有一个该类的对象的时候,你才可以使用这些功能。例如,Python为list类提供了append方法,这个方法让你在列表尾添加一个项目。一个类也有域,它是仅仅为类而定义的变量。

四、python格式注意:

Python是大小写敏感的

每一行的开始字符前没有空格或者制表符

五、合理使用帮助信息:

help(str)——这会显示str类的帮

help你需要经常用

六、python控制流:

If/while/for/break/continue

#!/usr/bin/python

a=12

b=int(raw_input("pls input a int:"))

if b==a:

print "congratudations"

elif b<a:

print "your guess lower than it"

else:

print "done"

#!/usr/bin/python

a=20

flag=True

#这个地方需要注意首字母大写

while flag:

guess=int(raw_input("pls input a int:"))

if guess==a:

print "good"

flag=False

elif guess<a:

print "should bigger"

else:

print "should lower"

print "done"

#!/usr/bin/python

# Filename: for.py

for i in range(1, 5):

print i

else:

print 'The for loop is over'

else部分是可选的。如果包含else,它总是在for循环结束后执行一次。

#!/usr/bin/python

b="abc"

while True:

a=raw_input("pls input:")

if a==b:

break

else:

print "the length is",len(a)

print "done"

七、python模块:

  • 模块定义:模块基本上就是一个包含了所有你定义的函数和变量的文件。

标准库模块:sys模块

#!/usr/bin/python

# Filename: using_sys.py

import sys

print 'The command line arguments are:'

for i in sys.argv:

print i

print '\n\nThe PYTHONPATH is', sys.path, '\n'

  • 字节编译的文件 :这些文件以.pyc作为扩展名

  • From import语句:

  • 模块的__name__:

假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块。每个Python模块都有它的__name__,如果它是'__main__',这说明这个模块被用户单独运行。

  • 创建自己的模块:

记住这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之

一。

#!/usr/bin/env python

def say():

if __name__=='__main__':

print 'this program is being run by itself'

else:

print 'this module is being imported from another module'

version='0.1'

#!/usr/lib/env python

import name #调用name模块

name.say()

print 'version',name.version

  • 用from..import:

#!/usr/bin/python

# Filename: mymodule_demo2.py

from mymodule import say, version

# Alternative:

say()

print 'Version', version

  • Dir()函数:

可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

例如上面定义的模块name.py:

>>> import name

>>> dir(name)

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'say', 'version']

注意,如果dir()参数为空:

>>> import name

>>> dir(name)

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'say', 'version']

>>> dir()

['__builtins__', '__doc__', '__name__', '__package__', 'name']

#这里import模块名称是列表的一部分

八、 python标准库:

一组模块组成了标准库。

九、python异常

十、python数据结构

三种内建的数据结构:数组、字典、元组

  • 列表:每个项目之间用逗号隔开。列表中的项目应该包括在方括号[]。

列表是 可变的 数据类型。

例子:手动的给列表添加item和删除:

#!/usr/bin/env python

def buy():

mylist=['potato','chilli','banana','apple']

print 'i have',len(mylist),'to buy\n'

print 'the items are:'

for i in mylist:

print I,

flag=True

while flag:

judge=raw_input('you can input yes or no:')

if judge=='yes':

goods=raw_input('maybe you need to buy more goods:')

mylist.append(goods)

else:

flag=False

for i in mylist:

print I,

print 'my shop list is now:',mylist

mylist.sort()

print 'the sorted shop list are',mylist

flag2=True

while flag2:

judge2=raw_input('if you want to delte?yes or no:')

if judge2=='yes':

print 'which itme you want to delte ',mylist

print 'you can choose the item from 0 to',len(mylist)-1

a=int(raw_input('the item is:'))

del mylist[a]

else:

flag2=False

print 'the remained shop list are:',mylist

buy()

在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符。

  • 元组:

元组和字符串一样是 不可变的 即你不能修改元组。元组通过圆括号中用逗号分割的项目定义。

一个空的元组由一对空的圆括号组成,如myempty = ()。

你必须在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。

元组最通常的用法是用在打印语句中。

元组的使用举例:

!/usr/lib/env python

def zoo():

zoo=('lion','tiger','rabbit','dragon','snake')

print 'the number of the zoo is',len(zoo)

for i in range(len(zoo)):

print zoo[i],

zoo_new=('dog','monkey',zoo)

print 'the animal number is ',len(zoo_new)

print 'the sencond animal is',zoo_new[1]

print 'the animals brought from old zoo are:',zoo_new[2]

print 'all animals:',zoo_new

a=(123)

print a

a=(123,)

print a

zoo()

输入结果:

the number of the zoo is 5

lion tiger rabbit dragon snake the animal number is 3

the sencond animal is monkey

the animals brought from old zoo are: ('lion', 'tiger', 'rabbit', 'dragon', 'snake')

all animals: ('dog', 'monkey', ('lion', 'tiger', 'rabbit', 'dragon', 'snake'))

123

(123,)

例子2:

元组用于打印中:

#!/usr/bin/python

# Filename: print_tuple.py

age = 22

name = 'Swaroop'

print '%s is %d years old' % (name, age)

print 'Why is %s playing with that python?' % name

  • 字典:

字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字和值(详细情况)联系在一起。注意,键必须是唯一的。


十一、python函数

  • 函数定义:函数是可以重用的程序块。

  • 调用 函数:在你的程序的任何地方使用这个名称任意多次地运行这个语句块。

举例:

#!/usr/bin/python

# Filename: function1.py

def sayHello():

print 'Hello World!' # block belonging to the function

sayHello() # call the function

  • 函数的形参和实参:

参数在函数定义的圆括号对内指定,用逗号分割。

  • 局部变量:函数定义内声明变量。

  • 使用global语句:可以使用同一个global语句指定多个全局变量。例如global x, y, z .

#!/usr/bin/python

# Filename: func_global.py

def func():

global x

print 'x is', x

x = 2

print 'Changed local x to', x

x = 50

func()

print 'Value of x is', x

  • 默认参数:在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。只有在形参表末尾的那些参数可以有默认参数值。

#!/usr/bin/python

# Filename: func_default.py

def say(message, times = 1):

print message * times

say('Hello')

say('World', 5)

  • 关键参数:通过命名来为这些参数赋值。

  • return语句:

#!/usr/bin/python

# Filename: func_return.py

def maximum(x, y):

if x > y:

return x

else:

return y

print maximum(2, 3)

  • docstrings文档字符串:DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂。

#!/usr/bin/python

# Filename: func_doc.py

def printMax(x, y):

'''Prints the maximum of two numbers.

The two values must be integers.'''

x = int(x) # convert to integers, if possible

y = int(y)

if x > y:

print x, 'is maximum'

else:

print y, 'is maximum'

printMax(3, 5)

print printMax.__doc__

函数的第一个逻辑行的字符串是这个函数的 文档字符串

文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,

从第三行开始是详细的描述。

。请记住Python把 每一样东西 都作为对象,包括这个函数。这句话非常重要,通过上面的实例的自后一行代码可以提现。

十二、python变量

十三、python运算符与表达式:

clip_image001

+加号可以做算术运算,也可以连接2个字符串。

**幂

clip_image002

clip_image003

  • 运算符优先级:

我建议你使用圆括号来分组运算符和操作数,以便能够明确地指出运算的先后顺序。

clip_image004

clip_image005


十四、软件开发的过程:

1. 什么(分析)

2. 如何(设计)

3. 编写(实施)

4. 测试(测试与调试)

5. 使用(实施或开发)

6. 维护(优化)















本文转自chenzudao51CTO博客,原文链接:http://blog.51cto.com/victor2016/1875786 ,如需转载请自行联系原作者
相关文章
|
10天前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
80 1
linux centos上安装python3.11.x详细完整教程
|
2月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
9天前
|
Python Windows
python入门保姆级教程 | 13
python入门保姆级教程 | 13
|
11天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
36 3
|
12天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
43 3
|
16天前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
13天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
49 1
|
18天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
47 5
|
2月前
|
Unix Python
python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用
python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用
19 0
下一篇
无影云桌面