python学习笔记

python学习笔记
python学习笔记

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-20T10:56:43+08:00

====== 第一章 ======

Created Thursday 20 June 2013

Python中 [[/为普通出发]] //为整除法

Python 现用printf("");

Python可以处理非常大的数据

在绝大部分情况下不用担心长整数和整数的区别

十六进制和八进制表示方法和C的相同: 16 0x, 8 0

表达式是某事而语句是做某事

解释器总是把所有表达式的值打印出来而已

nan是一个特殊值的简写, 意思是not a number

python可以求负数的平方根

推荐使用raw_input()函数

让脚本像普通程序一样运行:#!/usr/bin/env python, 在实际运行脚本前必须让脚本文件具有可执行的权限。

python 3.2.3没有raw_input了

pyhon拼接字符串eg;'k' 'ong' 拼接之后字符串为:'kong',这仅仅是书写字符串的一种特殊的方法,并不是拼接字符串的一般方法。那么该怎样拼接字符窜呢就像进行加法运算一样:"Hello" + "World"

x="Hello";y="World" xy这样是错误的

通过前面的例子读者们可能注意到了,所有通过Python打印的字符串还是被引号扩起来的,这是因为Python打印值的时候会保持该值在Python代码中的状态,而不是你希望看到的样子。 如果使用print语句,结果就不一样那个了

str()便于用户理解, repr()合法的python表达式, repr也可以用``来表示,如果希望打印一个包含数字的句子,那么反引号就很有用了,但在python3.0中已经不用``号了

不可以将字符串和数字想加

长字符串“”“ ”“”

普通字符串\有转意作用,但原始字符串就没有,r'abc'

函数:

abs(number)

float(object) //将字符串和字符转换为浮点数

cmath.sqrt(number)

help()

input(prompt) 获取用户输入

int(object) //字符串和数字

long()

math.floor()返回数的下舍整数

math.sqrt()

pow(x,y)返回x的y次幂

repr(object)

round(number[,ndigits]) 根据给定的精度对数字进行四射侮辱

str(object)

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-20T12:36:07+08:00

====== 第二章 ======

Created Thursday 20 June 2013

列表[]和元组()

在python中最基本的数据结构就是序列,序列中的每个元素被分配一个序号-元素的位置,也成为索引,第一个是0.。。。。

python有6种内建的序列:列表字符串和元组

列表和元组主要区别在于:列表可以修改而元组不能

访问序列greetng[0]

numbers=[1,2,3,4,5,6]

numbers[3:6] [)

[4,5,6]

序列相加:[1,2,3] + [4,5,6] = [1,2,3,4,5,6]

两种相同类型的序列才能进行连接操作

初始化一个长度为10的列表[None] * 10

布尔运算符in: eg: permissions="rw"

'w' in permissions

>>>True

>>numbers = [100,34,678]

>>>len(numbers)

3

>>min(9,3,2,5)

2

列表: Python的苦力

list('Hello')

.join(somelist)

删除列表;del names[2]

name = list('perl');

name[2:] = list("ar"); 分片赋值

>>>name

['p','e','a','r']

numbers=[1,5]

numbers[1:1] = [2,3,4]

>>>numbers

[1,2,3,4,5]

numbers[1:4] = []

extend方法修改了被扩展的序列,而原始的连接操作则不然,它会返回一个全新的列表.

>>>knights.index('who')

4

pop方法是唯一一个既能修改列表又返回元素值的列表方法

remove方法用于移除列表中某个值的第一个匹配项:

x.remove('be')

reverse 方法用于将列表中的元素反响存放, 注意该方法改变了列表但不返回值

sort在原位置进行排序,返回的是None

sorted('Python') 可以用于任何序列,却总是返回一个列表

创建元组语法很简单: 如果你用逗号分割了一些值,那么你就自动创建了元组

>>>43,

(43,)

tuple函数的功能与list函数基本上是一样的,以一个序列作为参数并把它转换为元组一般来说列表可能更满足 对序列的所有需求

tuple和list并不是真正的函数--而是一种类型

本章的新函数:

cmp(x,y) 比较两个值 y>x 返回1

len(seq)

list()

max()

min()

reversed(seq)

sorted(seq)

tuple(seq)

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-20T13:51:25+08:00

====== 第三章 ======

Created Thursday 20 June 2013

格式化列表一般寻则元组

>>> format = "hello, %s,%s enough for ya?"

>>> values = ('world','hot')

>>>print format % values

Hello, Wrold Hot enough for ya?

如果使用列表或者其他序列替代元组, 那么序列就会被解释为一个值,只有元组和字典可以格式化一个以上的值

格式转换,基本的转换说明符包括一下部分:

1. %字符: 标记转换说明的开始

2. 转换标致(可选) -表示左对齐;+表示在转换值之前要加上正负号

""空白字符,表示证书之前保留空格0表示转换值若位数不够则用0填充

3. 最小字段宽度: 转换后的字符串至少应该具有该值制定的宽度,如果是×则宽度会从值元组中读出

4. (.) 后跟精度值

5. 转换类型

...

字符串方法:

字符串的方法还要丰富的多,这是因为字符串从string模块中继承了很多方法

find() 返回字串所在位置的最左端的索引.如果没有找到则返回-1

join方法是非常重要的字符窜方法,它是split方法的逆方法,用来在队列中添加元素

lower()

replace()

eg:

>>> 'This is a test'.replace('is', 'eez')

split这是一个非常重要的字符串方法,用来将字符串分割成序列

eg:

'1+2+3'.spilt('+') 如果不提供任何分隔符,程序会把所有的空格作为分隔符(空格,制表,换行等)

strip方法去除两侧空格的字符串

它和lower方法一起使用的话就可以很方便的对比输入的和存储的值 very good

translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是该方法只处理单个字符,他的优势在于可以同时进行多个替换,有时候比replace效率更高的多

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-20T15:06:51+08:00

====== 第四章 ======

Created Thursday 20 June 2013

字典!!!

>>>items=[('name', 'Gumby'), ('age', 43)]

>>>d = dict(items)

>>>d

{'age': 42, 'name': 'Gumby'}

copy方法返回一个具有相同兼职对的新字典

fromkeys 方法使用给定的键建新的字典,每个剑默默认的自己为None

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-20T16:25:06+08:00

====== 第五章 ======

Created Thursday 20 June 2013

print 'Age:',42

from math import sqrt as foobar

多个赋值同时进行

>>> x,y,z = 1, 2, 3

>>>print x,y,z

1 2 3

x,y = y,x 交换2个变量, 事实上这里所作的事情叫做序列解包-将多个值序列解开,然后放到变量的序列中,当函数或者方法返回元组时,这个特性尤其有用,假设需要获取(和删除)字典中任意的键值对,可以使用popitem方法,这个方法将键值作为元组返回

>>>key,value = scound.popitem()

>>key

1

>> value

2

Python中所有的值都能被解释成真值

bool函数可以用来将其他值转换成bool值

if语句

if name.endswith('Gumby'):

print ...

elif num < 0:

print ...

else:

print ...

elif 和shell表现一样 但和awk表现不一样 awk和c一样 else if

1. 比较运算符

2. x == y, x != y, x is y x和y是同一个对象, x is not y x和y 是不同的对象,x in y, x not in y

3. 0

if 's' in name:

print ...

bool运算符

c: && ||

awk: && ||

shell: -o, -a

python: and or not

循环

while 循环

x =1

while x<= 100:

print x;

x += 1;

while not name:

....

words = ['this', 'is', 'an', 'ex']

for word in words:

print word

因为迭代(循环的另外一种说法)某范围的数字是很常见的,所以有个内建的范围函数供使用:>>> range(0, 10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

eg:

for number in range(0,10):

print ...

循环遍历字典元素

for key in d:

print key,d[key]

for key, value in d.item():

print key,value

一些迭代工具:

1. 并行迭代

names=['a','b']

ages=[1,2]

for i in range(len(names)):

print names[i],ages[i]

zip(names,ages)

返回:[('a',1),('b',2)] 参考{‘a':1, 'b':2}

for name,age in zip(names,ages):

print name, is age

2. 编号迭代

for index, string in enumerate(strings):

if 'xxx' in string:

strings[index] = '[censored]'

from math import sqrt

for n in range(99,81,-1):

root = sqrt(n)

if root == int(root):

print n

break

else:

print ...

上面的else仅在没有调用break时执行

列表推导—轻量级循环

列表推导是利用其他列表创建新列表的一种方法,它的工作方式类似于for循环,也很简单eg:

>>> [x*x for x in range(10)]

[0,1,4,9, (81)

这个语句可以通过增加一个if部分添加到列表推导中eg:

[ x*x for x in range(10) if x%3 == 0 ]

[(x,y) for x in range(3) for y in range(3)]

[(0,0), (0,1),(0,2) ... ]

pass什么都不做

del 他不仅会移除一个对象的引用,也会移除那个名字本身

使用exec和eval执行和求值字符串

exec "print 'hello world'"

本章的函数

chr(n) 当传入序号时,返回n所代表的包含一个字符的字符串

eval()

enumerate(seq)

ord(c)返回单字符字符串的int值

range()

reversed(seq)

sorted

xrage

zip

== 哈哈 到这里基本知识已经学完了 ==

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-20T18:05:15+08:00

====== 第六章 ======

Created Thursday 20 June 2013

参数parameter 作用域:scope

__创建函数__

eg:

''def hello(name):''

''return 'Hello, ' + name +'!'''

文档字符串

''def square(x):''

'calculates the square of the number x.'

return x*x

文档字符串可以按如下方式访问:

>>> square.__doc__

>>> help(square)

__参数魔法:__

当两个变量同时引用一个__列表__时,他们的确是同时引用一个__列表,当在序列中做切片的时候 返回的切片总是一个副本__

位置参数在调用时是不传入参数名字的

关键字参数ge: hello_2(greeting='hello',name='world')

收集参数:

def print_params(*params)

参数前面的*号将所有值放置在同一个元组中。可以说是将这些值收集起来,然后使用。*号意思是收集其余参数

*收集元组 **收集字典

eg:

def print_params_4(x, y, z = 3, *pospar, **keypar):

print x, y, z

print pospar

print kdypar

>>> print_params_4(1,2,3,4,5,6,7,foo = 1,bar = 2)

1 2 3

(5,6,7)

{'foo':1, 'bar':2}

作用域

若变量同名 ,想访问全局变量需要:

print parameter + globals()['parameter']

def change_global():

global x

x = x + 1

本章新的函数:

map(func, seq, [, seq, ...]) 对序列中的每个元素应用函数

filter(func, seq) 返回其函数为真的序列列表

reduce(func, seq [, initial])

sun(seq)

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-20T19:16:34+08:00

====== 第七章 ======

Created Thursday 20 June 2013

Python是面向对象的程序设计语言

对象最重要的优点包含以下几方面:

1. 多态

2. 封装

3. 继承

很多对函数和运算符都是多态的,唯一能毁掉堕胎的就是使用函数显示地检查类型, 比如:type, isinstance, issubclass函数等,如果可能的话应该尽力避免使用这些毁掉多态的方式.

类可以将它或多或少的视为种类或者类型的同义词,所有的对象都属于某一个类, 称为类的实例(instance)创建类列子:

__metaclass__ = type #确定使用 新式类

class Person:

def setName(self, name):

https://www.360docs.net/doc/6c16158555.html, = name

def getName(self):

return https://www.360docs.net/doc/6c16158555.html,

def greet(self):

print "hello world! I'm %s." % https://www.360docs.net/doc/6c16158555.html,

>>> foo = Person()

>>> bar = Person()

>>> foo.setName('kong')

>>> bar.setName("fei")

>>> foo.greet()

在调用foo的setName和greet函数时, foo自动将自己作为第一个参数传入函数中-因此形象地命名为self, 没有他的话成员方法就没法访问他们要对其特性进行操作的对象本身了

多多理解: yes i know!

和之前一样,特性是可以在外部访问的:

>>> https://www.360docs.net/doc/6c16158555.html,

>>>bar.greet()

方法(更专业一点可以成为绑定方法) 将他们的第一个参数绑定到所属的实例上,因此这个参数可以不必提供

Python并不直接支持私有方式,而是要靠程序员自己把握在外部进行特性修改的时机。但是可以用一些小技巧达到私有特性的效果,为了让方法或者特性变成私有(从外部无法访问),只要在他的名字前面加上双下划线即可eg:

class Secretive:

def __inacessible(slef):

print "Bet you can't see me ...

尽管双下划线有些奇怪, 但是看起来像是其他语言中的标准私有方法,真正发生的事情才是不标准的,类的内部定义中, 所有以双下划线开始的名字都被翻译成前面加上单下划线和类名的形式

eg:

>>> s._Secretive_inaccessible()

前面有下划线的名字都不会被带星号的imports语句导入(from module import *

issubclass(subclass,class) 返回True

SPAMFilter.__bases__

isinstance(object, class) 返回True

可以检查所需的方法是否已经存在,如果不存在就要做其他一些事情

>>> hasattr(tc, 'talk')

如果需要的话甚至还能检查talk特性是否可调用:

>>> callable(getattr(tc, 'talk', None))

setattr()

如果要查看对象内所有存储的值, 那么可以使用__dict__特性,

一些关于面向对象设计的思考:

1. 将属于一类的对象放在一起

2. 不要让对象过于亲密, 方法应该只关心自己实力的特性, 让其他实例管理自己的状态

3. 要小心继承, 尤其是多重继承

4. 简单就好, 让你的方法小巧,尽量将代码行数控制在一页或者一行内.

本章的新函数:

callable(object) 确定对象是否可调用, 比如函数或者方法

random.choice(sequence) 从非空序列中随即选择元素

type(object) 返回对象的类型

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-21T09:50:23+08:00

====== 第八章 ======

Created Friday 21 June 2013

异常:

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-21T09:52:47+08:00

====== 第九章 ======

Created Friday 21 June 2013

魔法方法, 属性和迭代器

构造方法和其他普通方法不同的地方在于:当一个对象被创建后,会立即调用构造方法

在Python中创建一个构造方法很容易。只要把init方法的名字从简单的init修改为魔法版本__init__即可:class FooBar:

def __init__(self):

self.somevar = -42

>>> f = FooBar()

>>> f.somevar

42

在python中的所有魔法方法中__init__是使用最多的一个

__del__析构方法, 建议读者尽量避免使用析构函数

__iter__方法返回一个迭代器(iterator), 所谓迭代器就是具有next方法的对象。在调用next方法时, 迭代器会返回它的下一个值。如果next方法被调用,但迭代器没有值可以返回, 就会引发一个StopIteration异常

在很多情况下, __iter__会放到其他的会在for循环中使用的对象中。这样以来程序就能返回所需的迭代器。正式的说法是:一个实现了__iter__方法的对象是可迭代的, 一个实现了next方法的对象则是迭代器

class Fibs:

def __init__(self):

self.a = 0

self.b = 0

def next(self):

self.a, self.b = self.b, self.a+self.b

return self.a

def __iter__(self):

retunr self

fibs = Fibs()

for f in fibs:

if f > 1000:

print f

break

....

1597

内建对象iter可以从可迭代的对象中获得迭代器

从迭代器得到序列:

class TestIterator:

value = 0

def next(self):

self.value +=1

if self.value > 10: raise StopIteration

return self.value

def __iter__(self):

return self

...

>>> ti = TestIterator()

>>>list(ti)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

生成器是一种用普通的函数语法定义的迭代器.

创建生成器:

包含任何yield语句的函数成为生成器.yield除了名字不同外,他的行为和普通函数也有很大的差别,这就在于它不像return那样返回值, 而是每次产生多个值, 每次产生一个值(使用yield语句), 函数就会被冻结: 即函数停在那点等待被激活, 函数被激活后就后就哦从嗯停止的那点开始执行

eg:

def flatten(nested):

for sublist in nested:

for element in sublist:

yield element

接下来可以通过在生成器上迭代来使用所有的值

>>> nested = [[1, 2], [3, 4], [5]]

>>> for num in flatten(nested):

print num

...

1

2

3

4

5

or

>>> list(flatten(nested))

[1, 2, 3, 4, 5]

递归生成器:

通用生成器:

....

__需要继续了解__

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-21T11:05:45+08:00

====== 第十章 ======

Created Friday 21 June 2013

Python的标准安装包括一组模块, 成为标准库

任何python程序都可以作为模块导入, 假设你写了一个如下代码清单,并将他存为hello.py文件(名字很重要)

#hell.py

print "hello, world"

该文件保存在C:/python

接着就可以执行下面的代码:

>>> import sys

>>> sys.path.append(‘C:/python’)

导入模块:

>>> import hello

hello world!

代码重用: code reuse

在导入模块的时候, 你可能会看到有新文件出现:*.pyc,这个以.pyc为扩展名的文件是经过处理(编译)的, 已经转换为python能狗更加有效处理的文件

在导入模块的时候, 其中的代码已经被执行过了, 不过, 再再次导入的时候, 就什么都不发生了 , 为

什么这次没用了?因为导入模块并不意味着在导入时执行某些操作, 它们主要用于定义, 比如变量, 函数和类等.此外, 因为只需要定义这些东西一次, 导入模块多次和导入一次的效果是一样的

测试代码:

#hello4.py

def hello():

print "hello, world!"

def test():

hello()

if __name__ == "__main__":test()

更可取的方法:

def test():

hello()

让你的模块可用;

1. 将模块放置在正确的位置

pprint和print, pprint更适合打印路径 列 成一列, pprint能够提供更加智能的输出

>>> import sys, pprint

>>>pprint.pprint(sys.path)

site-packages最佳路径,因为它就是用来做这些事情的

2. 告诉编译器去哪里找

设置PYTHONPATH环境变量

为了组织好模块, 你可以将他们分成包(package),包基本上就是另外一类模块, 有趣的是他们能包含其他模块,当模块存储在文件中时, 包就是模块所在的目录, 为了让python将其作为包对待, 它必须包含名为__init__.py的文件, 如果将它当作普通模块导入的话, 文件的内容就是包的内容,

简单的包布局:

-/python/

-/python/drawing/

-/python/drawing/__init__.py

-/python/drawing/colors.py

-/python/drawing/shapes.py

模块中有什么:

>>> import copy

>>>dir(copy)

>>>[n for n in dir(copy) if not n.startswith('_')]

__all__ = ['Error', 'copy'] 它定义了模块的共有接口

from copt import * 只能导入__all__变量中的函数

阅读python源代码:

>>> print copy.__file___

vi 打开该文件, 只查看相应的.py即可

比较好用的标准模块:

__sys模块__

函数/变量 --- 描述

argv 命令行参数,包括脚本名称

exit([arg])

modules --- 变量, 将模块名映射到实际存在的模块中,它只应用于目前的导入

path --- you know

platform --- 平台的名称

stdin ---类文件流对象

stdout

stderr

eg: sys.argv[0],

__os模块__

os模块为你提供了访问多个操作系统服务的功能。os模块的内容很多。os.path os模块很有用的子模块函数/变量 --- 描述

environ --- 对环境变量进行映射

system(cmd) --- 在子shell中执行操作系统命令

sep --- 路径中的分隔符

pathsep --- 分隔路径的分隔符

linesep --- 行分隔符(\n, \r or \r\n)

urandom(n) --- 返回n字节的加密强随机数据

fileinput模块让你能够很轻松的便利文本文件的所有行,

如果通过以下方式调用脚本:

python some_script.py file1.txt file2.txt file3.txt

这样就可以依次对file1.txt file2.txt file3.txt文件中的所有行进行遍历了

fileinput模块中最重要的函数为input, 它会返回能够用于for循环遍历的对象

函数 --- 描述

input

filename() 返回当前文件的名称

lineno() 返回当前累计的行数

isfirstline() 返回当前文件的行数

isstdin() 检查座后一行是否来自sys.stdin

nextfile() 关闭当前文件,移动到 下一个文件

close() 关闭序列

为python脚本添加编号

#numberlines.py

import fileinput

for line in fileinput.input(inplace = True):

line = line.rstrip()

num = fileinput.lineno()

print '%s-40s #%2i' % (line, num)

python numberlines.py numberlines.py

__集合 堆和双端队列__

__time模块__

time模块所包含的函数能够实现以下功能: 获得当前的时间, 操作时间和日期, 从字符串读取时间, 以及格式化时间为字符串.

time.asctime() 将当前时间格式化为字符串

localtime([secs]) 将秒数转换为日期元组, 一本地时间为准

mktime(tuple) 将时间元组转换为本地时间

sleep(secs)

strptime() 将字符串解析为时间元组

time() 获取当前时间/usr/lib64/python2.7/copy.pyc

__random模块__

如果需要真的随机性,应该使用os模块的urandom函数

random() 返回[0,1)之间的随机数

getrandbits(n)

uniform(a, b) 返回[a, b)之间的随机数

randrange(start, stop, step) 随机整数

choice(seq) 从序列seq 中返回随意元素

sample(seq, n) 从序列seq中选择n个随机且独立的元素

__re模块__

re模块包含对正则表达式的支持

其他模块

functools, difflib, hashlib, csv, timeit, profile ,trace.

timeit是衡量代码片段运行时间的工具, 它有很多神秘的功能, 你应该用它来代替time模块进行性能测试logging 这个模块提供了一组标准的工具, 以便让开发人员管理一个或多个核心的日志文件, 同时还对日志信息提供了一组标准的工具, 以便让开发人员管理一个或多个核心的日志文件,同时还对日志信息提供了多层次的优先级

cmd 这个模块可以编写命令行解释器,就像Python的交互式解释器一样, 你可以自定义命令, 以便让用户能够通过提示符来执行, 也许你还能将它作为程序的用户界面

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-21T14:56:27+08:00

====== 第十一章 ======

Created Friday 21 June 2013

=== 文件和素材 ===

open函数返回一个文件对象

>>> f = open(r'c:\text\fomefile.txt')

如果要向文件内写内容, 则必须提供一个模式参数来显示声明

mode: r w, b, a, +(读写模式)

from __future__ import with_statement

f = open(filename)

while True:

line = f.readline()

if not line:break

process(line)

f.close()

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-21T15:38:20+08:00

====== 第十二章 ======

Created Friday 21 June 2013

图形用户界面 -----good

我选择wxPython

编写wxPython程序的方法很多, 但不可避免的事情是创建应用程序对象, 基本的应用程序对象叫做:

ex.App, 它负责幕后所有的初始化.

wx框架中的部件都是由它们的父部作为构造函数的第一个参数创建的, 如果正在创建一个单独的

窗口, 就不需要考虑父部件, 使用None即可.

使用pos和size可以设置按钮的位置和尺寸

文本控件 ----

每个组件的位置和大小都是显示设定的, 但是没有明确在窗口大小变化的时候他们的行为是什么, 指定行为的方法很多, 在wx内进行布局的最简单方法是使用尺寸器, 最容易适应的工具是:wx.BoxSizer

在GUI术语中, 用户执行的动作 叫做事件, 你需要让程序注意这些事件 并且作出反应。可以将函数绑定到所涉及的时间可能发生的组件上达到这个效果

wxPython是Python的GUI工具包

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-21T16:41:05+08:00

====== 第十三章 ======

Created Friday 21 June 2013

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-21T16:44:36+08:00

====== 第十四章 ======

Created Friday 21 June 2013

网络编程

常用模块: socket模块(套节字:socket),

套节字包括两个: 服务器套节字和客户机套节字, 创建一个服务器套节字后, 让它等待连接。 这样它就在某个网络地址处监听

创建客户端套节子通常比处理服务器端套节子容易, 因为服务器必须准备随时处理客户端的连接, 同时还要处理多个连接, 而客户机只是简单地连接完成事务,断开连接

一个套节子就是一个socket模块中的socket类的实例。三个参数:地址簇默认:socket.AF_INET,流默认:socket.SOCK_STREAM,协议默认 0

accept 开始监听客户端的连接, 这个方法会阻塞(等待)直到客户端连接, 然后该方法就返回一个格式为(client, address)的元组, client是客户端套节子, address 是一个前面解释过的地址

在能使用的各种网络工作库中, 功能最去强大的是urllib和urllib2他们能让通过网络访问文件, 就像那些文件存在于你的电脑上一样, 通过一个简单的函数调用, 几乎可以把任何URL所指向的东西用做程序的输入, 这两个模块的功能都差不多, 但urllib2更好一些。

1. 打开远程文件

>>> from urllib import urlopen

>>> webpage = urlopen('https://www.360docs.net/doc/6c16158555.html,')

如果在线, 变量webpage现在应该包含一个链接到https://www.360docs.net/doc/6c16158555.html,网页的类文件对象

urlopen 返回的类文件对象支持close, read, readline, readlines, 当然也支持迭代

假设想要提取在前面打开的python页中"About“链接的(相对)URL, 那么就可以用正则表达式来实现:

>>> import re

>>> text = webpage.read()

>>> m = re.search('about'., text, re.IGNORECASE)

>>> m.grout(1)

'/about/'

一个小型服务器:

import socket

s = socket.socket() #info object

#host = socket.gethostname()

host = "127.0.0.1"

port = 1234

s.bind((host,port))

s.listen(5) #the max connect number

while True:

c, addr = s.accept()

print 'Got connection from', addr

c.send('Thank you for connecting!!!!')

c.close()

一个小型客户机:

import socket

s = socket.socket()

#host = socket.gethostname()

host = "127.0.0.1"

port = 1234

s.connect((host, port))

print s.recv(1024)

SocketServer和它们的朋友们

SocketServer包含了4个基本的类:针对TCP套节子流的TCPServer;针对UDP数据报套节子的UDPServer以及针对性不强的UnixStreamServer和UnixDatagramServer.

为了写一个使用SocketServer框架的服务器, 大部分代码会在一个请求处理程序中, 每当服务器收到一个请求时, 就会实例化一个请求处理程序,并且它的各种处理方法会在处理请求时被调用.

一个基于SocketServer的小型服务器:

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-22T08:47:44+08:00

====== 第十五章 ======

Created Saturday 22 June 2013

屏幕抓取

XHTML是HTML最新的方言, 是XML的一种形式

对于包含正确切有效的XHTML的网页而言, 解析的工作很简单。问题在于旧版的HTML的方言较为随意.

Content-Type: text/x-zim-wiki

Wiki-Format: zim 0.4

Creation-Date: 2013-06-24T11:16:11+08:00

====== 第十六章 ======

Created Monday 24 June 2013

python学习笔记

1、python中的函数以def来定义,利用缩进来表示函数的完整性,Python 函数没有明显的begin和end, 没有花括号, 用于标函数的开始和结束。唯一的分隔符是一个冒号(:), 接着代码本身是缩进的。如: def hello(): print “Hello,world\n” hello() #调用hello函数 2、所有的Python 模块都是对象并且有几个有用的属性。您可以使用这些属性方便地测试您所书写的模块。下面是一个使用if__name__的技巧。 if __name__ == "__main__": 3、d = {"server":"mpilgrim", "database":"master"} Python中的hash表,利用key来进行查询值 当使用dictionary 时, 您需要知道: dictionary 的key 是大小写敏感的。 Del d[key]:删除某个值 d.clear:清空整个hash队列 4、li = ["a", "b", "mpilgrim", "z", "example"] Python中的数组 li[0:3]:表示从0-2,结果为:['a', 'b', 'mpilgrim'] append 向 list 的末尾追加单个元素。 insert 将单个元素插入到 list 中。数值参数是插入点的索引。请注意, list 中的元素不必唯一, 现在有两个独立的元素具有 'new' 这个值, li[2] 和li[6]。 extend 用来连接 list。请注意不要使用多个参数来调用 extend, 要使用一个 list 参数进行调用。在本例中, 这个 list 有两个元素。 extend (扩展) 与append (追加)的差别 >>> li = ['a', 'b', 'c'] >>> li.extend(['d', 'e', 'f']) >>> li ['a', 'b', 'c', 'd', 'e', 'f'] >>> len(li) 6 >>> li[-1] 'f' >>> li = ['a', 'b', 'c'] >>> li.append(['d', 'e', 'f']) >>> li ['a', 'b', 'c', ['d', 'e', 'f']] >>> len(li) 4 >>> li[-1] ['d', 'e', 'f'] Lists 的两个方法 extend 和 append 看起来类似, 但实际上完全不同。 extend 接受一个参数, 这个参数总是一个 list, 并且添加这个 list 中的

python笔记

Python语言脚本与开发 1.Python环境 python-decorator-3.4.0-3.el7.noarch python-dmidecode-3.10.13-11.el7.x86_64 python-sss-murmur-1.13.0-40.el7.x86_64 python-netaddr-0.7.5-7.el7.noarch python-dns-1.12.0-1.20150617git465785f.el7.noarch python-ply-3.4-10.el7.noarch python-enum34-1.0.4-1.el7.noarch abrt-addon-python-2.1.11-36.el7.centos.x86_64 python-libs-2.7.5-34.el7.x86_64 cryptsetup-python-1.6.7-1.el7.x86_64 libsemanage-python-2.1.10-18.el7.x86_64 python-pyblock-0.53-6.el7.x86_64 python-pyasn1-0.1.6-2.el7.noarch rpm-python-4.11.3-17.el7.x86_64 python-ethtool-0.8-5.el7.x86_64 python-di-0.3-2.el7.noarch python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch python-inotify-0.9.4-4.el7.noarch python-dateutil-1.5-7.el7.noarch speech-dispatcher-python-0.7.1-15.el7.x86_64

Python常用内置函数总结

Python常用内置函数总结 一、数学相关 1、绝对值:abs(-1) 2、最大最小值:max([1,2,3])、min([1,2,3]) 3、序列长度:len('abc')、len([1,2,3])、len((1,2,3)) 4、取模:divmod(5,2)//(2,1) 5、乘方:pow(2,3,4)//2**3/4 6、浮点数:round(1)//1.0 二、功能相关 1、函数是否可调用:callable(funcname),注意,funcname变量要定义过 2、类型判断:isinstance(x,list/int) 3、比较:cmp('hello','hello') 4、快速生成序列:(x)range([start,] stop[, step]) 三、类型转换 1、int(x) 2、long(x) 3、float(x) 4、complex(x) //复数 5、str(x) 6、list(x) 7、tuple(x) //元组 8、hex(x) 9、oct(x) 10、chr(x)//返回x对应的字符,如chr(65)返回‘A' 11、ord(x)//返回字符对应的ASC码数字编号,如ord('A')返回65 四、字符串处理 1、首字母大写:str.capitalize 复制代码代码如下:

>>> 'hello'.capitalize() 'Hello' 2、字符串替换:str.replace 复制代码代码如下: >>> 'hello'.replace('l','2') 'he22o' 可以传三个参数,第三个参数为替换次数 3、字符串切割:str.split 复制代码代码如下: >>> 'hello'.split('l') ['he', '', 'o'] 可以传二个参数,第二个参数为切割次数 以上三个方法都可以引入String模块,然后用string.xxx的方式进行调用。 五、序列处理函数 1、len:序列长度 2、max:序列中最大值 3、min:最小值 4、filter:过滤序列 复制代码代码如下: >>> filter(lambda x:x%2==0, [1,2,3,4,5,6]) [2, 4, 6] 5、zip:并行遍历 复制代码代码如下:

黑马程序员python基础班教程笔记使

爬?基本原理 爬?是模拟?户在浏览器或者App应?上的操作,把操作的过程、实现?动化的程序 当我们在浏览器中输??个url后回?,后台会发?什么? 简单来说这段过程发?了以下四个步骤: 查找域名对应的IP地址。 浏览器?先访问的是DNS(Domain Name System,域名系统),dns的主要 ?作就是把域名转换成相应的IP地址 向IP对应的服务器发送请求。 服务器响应请求,发回??内容。 浏览器显示??内容。 浏览器是如何发送和接收这个数据呢? HTTP协议(HyperText Transfer Protocol,超?本传输协议)?的是为了提供?种发布和接收HTML(HyperText Markup Language)??的?法。 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为?标的HTTP通道,简单讲是HTTP的安全版。 使?urllib爬取数据 1.urlopen( ) 打开?个url的?法,返回?个?件对象,然后可以进?类似?件对象的操作 2.urlretrieve( ) urlretrieve?法将url定位到的html?件下载到你本地的硬盘中。 如果不指定filename,则会存为临时?件。 urlretrieve()返回?个?元组(filename,mine_hdrs) 2.1 不指定路径 说明:清除由于urllib.urlretrieve()所产?的缓存 2.2 指定路径

2.3 urlencode( ) 上?的程序演示了最基本的??抓取,不过,现在?多数?站都是动态? ?,需要你动态地传递参数给它,它做出对应的响应。所以,在访问时,我们需要传递数据给它。最常?的情况是什么?对了,就是登录注册的时候呀。把数据?户名和密码传送到?个URL,然后你得到服务器处理之后的响应,这个该怎么办?下?让我来为?伙伴们揭晓吧!数据传送分为POST和 GET两种?式两种?式有什么区别呢?最重要的区别是GET?式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是?种不安全的选择,不过你可以直观地看到 ??提交了什么内容。 POST则不会在?址上显示所有的参数,不过如果你想直接查看提交了什么就不太?便了,?家可以酌情选择。 这?可以与urlopen结合以实现post?法和get?法: GET?法

Python3基础教程二(个人整理)

Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所 指的内存中对象的类型。 等号(=)用来给变量赋值。 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。 多个变量赋值 Python允许你同时为多个变量赋值。例如: 以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。 您也可以为多个对象指定多个变量。例如: 以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "zzzzz" 分配给变量 c。标准数据类型 Python3 中有六个标准的数据类型: ?Number(数字) ?String(字符串) ?List(列表) ?Tuple(元组) ?Set(集合) ?Dictionary(字典)

Python3 的六个标准数据类型中: ?不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);?可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。 Number(数字) Python3 支持int、float、bool、complex(复数)。 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。像大多数语言一样,数值类型的赋值和计算都是很直观的。 内置的 type() 函数可以用来查询变量所指的对象类型。 此外还可以用 isinstance 来判断: isinstance 和 type 的区别在于: ?type()不会认为子类是一种父类类型。 ?isinstance()会认为子类是一种父类类型。

python函数中文手册

内置函数 一,文档说明 原始文档来自于python v2.7.2 中文译文和用法尚不完全,您可以自由修改和完善, 您可以在文档结尾鸣谢添上您的名字,我们将会感谢您做的贡献! 二,函数列表 1,取绝对值 abs(x)

Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex number, its magnitude is returned. 如果你不知道绝对值什么意思,那就要补一下小学数学了! 基本用法 2, all(iterable) Return True if all elements of the iterable are true (or if the iterable is empty). Equivalent to: 3. any(iterable)

Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to: 4. basestring() This abstract type is the superclass for str and unicode. It cannot be called or instantiated, but it can be used to test whether an object is an instance of str or unicode. isinstance(obj, basestring) is equivalent to isinstance(obj, (str, unicode)). 是字符串和字符编码的超类,是抽象类型。不能被调用或者实例化。可以用来判断实例是否为字符串或者字符编码。 方法: 5.二进制转换 bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer.

python笔记题带答案

答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。 引用计数增加的情况: 1,一个对象分配一个新名称 2,将其放入一个容器中(如列表、元组或字典) 引用计数减少的情况: 1,使用del语句对对象别名显示的销毁 2,引用超出作用域或被重新赋值 ( )函数可以获得对象的当前引用计数 多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。 二、垃圾回收 1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。 2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。 三、内存池机制 Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。 1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。 2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。

3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。 2.什么是lambda函数?它有什么好处? 答:lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 lambda函数:首要用途是指点短小的回调函数 lambda [arguments]:expression a=lambdax,y:x+y a(3,11) 里面如何实现tuple和list的转换? 答:直接使用tuple和list函数就行了,type()可以判断对象的类型 4.请写出一段Python代码实现删除一个list里面的重复元素 答: 1,使用set函数,set(list) 2,使用字典函数, a=[1,2,4,2,4,5,6,5,7,8,9,0] b={} b=(a) c=list()) c 5.编程用sort进行排序,然后从最后一个元素开始判断 a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3] () last=a[-1] for i inrange(len(a)-2,-1,-1): if last==a[i]:

python3内置函数大全

一、数学相关 1、绝对值:abs(-1) 2、最大最小值:max([1,2,3])、min([1,2,3]) 3、序列长度:len('abc')、len([1,2,3])、len((1,2,3)) 4、取模:divmod(5,2)//(2,1) 5、乘方:pow(2,3,4)//2**3/4 6、浮点数:round(1)//1.0 二、功能相关 1、函数是否可调用:callable(funcname),注意,funcname变量要定义过 2、类型判断:isinstance(x,list/int) 3、比较:cmp('hello','hello') 4、快速生成序列:(x)range([start,] stop[, step]) 三、类型转换 1、int(x) 2、long(x) 3、float(x) 4、complex(x) //复数 5、str(x) 6、list(x) 7、tuple(x) //元组 8、hex(x) 9、oct(x)

10、chr(x)//返回x对应的字符,如chr(65)返回‘A' 11、ord(x)//返回字符对应的ASC码数字编号,如ord('A')返回65 四、字符串处理 1、首字母大写:str.capitalize 复制代码代码如下: >>> 'hello'.capitalize() 'Hello' 2、字符串替换:str.replace 代码如下: >>> 'hello'.replace('l','2') 'he22o' 可以传三个参数,第三个参数为替换次数 3、字符串切割:str.split 代码如下: >>> 'hello'.split('l') ['he', '', 'o']

python基础重点梳理笔记

Python变量和数据类型 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型。 如果字符串本身包含'怎么办?比如我们要表示字符串I'm OK ,这时,可以用" "括起来表示:"I'm OK" 类似的,如果字符串包含",我们就可以用' '括起来表示:'Learn "Python" in imooc'如果字符串既包含'又包含"怎么办? 这个时候,就需要对字符串的某些特殊字符进行转义,Python字符串用\进行转义:'Bob said \"I\'m OK\".' 字符串前面加个前缀r,表示这是一个raw 字符串,里面的字符就不需要转义了。例如:r'\(~_~)/ \(~_~)/' 表示多行字符串,可以用'''...'''表示: ''' Line 1 Line 2 Line 3''' 还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串: Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示, 比如:print u'中文' Python中布尔类型 and 和 or 运算的一条重要法则:短路计算。 1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。 2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于b,因此返回 b。

Python自学笔记

Python学习笔记 在下面的例子中,我们把一个字符串赋值给变量myString,先用print 来显示变量的内容,之后用变量名称来显示。 >>> myString = 'Hello World!' >>> print myString Hello World! >>> myString 'Hello World!' 程序输入: 下划线(_)在解释器中有特别的含义,表示最后一个表达式的值。所以上面的代码执行之后,下划线变量会包含字符串: >>> _ Hello World! Python 的print 语句,与字符串格式运算符( % )结合使用,可实现字符串替换功能,这一点和C 语言中的printf()函数非常相似: >>> print "%s is number %d!" % ("Python", 1) Python is number 1! %s 表示由一个字符串来替换,而%d 表示由一个整数来替换,另外一个很常用的就是%f,它表示由一个浮点数来替换。 在学习Python 的过程中,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()。通过用函数名作为help()的参数就能得到相应的帮助信息: >>> help(raw_input) Help on built-in function raw_input in module __builtin__: 注释: 和大部分脚本及Unix-shell 语言一样,Python 也使用# 符号标示注释,从# 开始,直到一行结束的内容都是注释。 >>> # one comment 运算符: 和其他绝大多数的语言一样,Python 中的标准算术运算符以你熟悉的方式工作 + - * / // % **,加、减、乘、除和取余都是标准运算符。双星号(**)是乘方运算符。 Python 有两种除法运算符: 单斜杠用作传统除法,双斜杠用作浮点除法(对结果进行四舍五入)。 传统除法是指如果两个操作数都是整数的话,它将执行是地板除(取比商小的最大整数),而浮点除法是真正的除法,不管操作数是什么类型,浮点除法总是执行真正的除

python学习笔记(一)

python学习笔记(一) 安装 下载python安装包:https://https://www.360docs.net/doc/6c16158555.html,/downloads/ 找到你的下载位置,双击安装

安装成功后,在开始菜单中就会多出几个图标。好了安装完毕可以开始使用了。 IDLE 是Python 的图形用户界面(GUI );Python 是Python 的命令提示符界面(command line )。它两都是和Python 解释器交互的手段。Module Docs 是模块手册,意思是Python 各种模块的说明书。 现在我们使用Python 3.9(64-bit)即命令提示符界面试一下! 输入:print(“Hello,World!”)回车,输入出结果“Hello ,World !” 当然我们最好使用GUI 界面。 这两外界面都是我们Python 交互解释器,也是我们用来执行语句的界面。

基本常识 1、数字和表达式 Python解释器可以当成一个很强大的计算器。下面我们来试一下! >>> 412+845 1257 >>> 12310-54131 -41821 >>> 1454*1321 1920734 >>> 87/84 1.0357142857142858 >>> >>> 4//3 1 >>> 1%2 1 >>> 4^2 6 >>>

值得注意的是: 长整型:对于大于2 147 483 647(231)就必须在数字后面加上“L”表示长整型数。2进制数:前面加0b(如0b1111就是二进制中的1111) 8进制数:前面加0o(如010就是八进制中的10)。 16进制数:前面加0x(如0xAF就是十六进制中的AF)。 >>> 0o10 8 >>> 0b1111 15 >>> 0o10 8 >>> 0xffff 65535 >>> 2、程序的结构

python入门教程3

B u i l t -i n f u n c t i o n d a t a t y p e 常用内置函数数据类型 4

1Python内置数据类型概述 D a t a t y p e s O v e r v i e w 2常用数据类型 C o m m o n d a t a t y p e s 4算数运算符和位运算符 Arithmetic operators and b i t w i s e o p e r a t o r s CONTENT 3比较关系运算和条 件表达式 P y t h o n O v e r v i e w 6内置标准数学函数 B u i l t i n s t a n d a r d mathematical function 5混合运算和数值类 型转换 Mixed operations and numeric type conversions

3 Python内置数据类型概述 ?Python语言中,一切皆为对象,而每个对象都属于某个数据类型。 ?Python的数据类型包括内置的数据类型、模块中定义的数据类型和用户自定义的类型。 ?数值数据类型(int,bool,float,complex) ?序列数据类型(str,tuple,bytes,list,bytearray) ?集合数据类型(set,frozenset) ?字典数据类型(dict) ?特殊数据类型(NoneType,NotImplementedType,EllipsisType) ?其他数据类型(模块,类,对象,函数)

?整数数据类型(int)是表示整数的数据类型。 ?Python的整数数位可以为任意长度数位(只受限制于计算机内存)。?整型对象是不可变对象。

python基础笔记

列表常用方法 元组常用方法 集合常用方法

字典常用方法

格式转换 循环基本语法 for变量名in列表: ____变量相关操作 range的基本语法 格式1:range(m) 生成0 到m-1 的整数 格式2:range(m,n) 生成m 到n-1 的整数 格式3:range(m,n,s) 生成m 到n-1 的整数,整数间隔为s range的应用场景 1.配合for循环构造指定次数的循环 for _ in range(..): ____循环执行的代码 2.快速创建由连续的整数作为数据的列表、元组、集合对象 list(range(..)) tuple(range(..)) set(range(..)) 公共方法

通用运算符 for…else基本语法for 变量名in 列表: 变量相关操作 else: 循环正常运行结束后执行的操作

推导式 推导式基本语法 基础语法格式:循环变量for循环 范例:list1 = [data for data in range(5)] 数据处理语法格式:表达式for循环 范例:list1 = [data*5 for data in range(5)] 数据过滤语法格式:表达式for循环if判断 范例:list1 = [data for data in range(5) if data > 200] 推导式的作用 推导式可以快速生成数据存储结构中的数据 范例1:创建包含1到100所有整数的列表 list1 = [data for data in range(1,101)] 范例2:创建包含1到10的平方和的列表 list2 = [data**2 for data in range(1,11)]

python常用函数年初大总结

1.常用内置函数:(不用import就可以直接使用) help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝 eval_r(str) 表示合法的python表达式,返回这个表达式 dir(obj) 查看obj的name space中可见的name hasattr(obj,name) 查看一个obj的name space中是否有name getattr(obj,name) 得到一个obj的name space中的一个name setattr(obj,name,value) 为一个obj的name space中的一个name指向vale这个object delattr(obj,name) 从obj的name space中删除一个name vars(obj) 返回一个object的name space。用dictionary表示 locals() 返回一个局部name space,用dictionary表示 globals() 返回一个全局name space,用dictionary表示 type(obj) 查看一个obj的类型 isinstance(obj,cls) 查看obj是不是cls的instance issubclass(subcls,supcls) 查看subcls是不是supcls的子类 类型转换函数 chr(i) 把一个ASCII数值,变成字符 ord(i) 把一个字符或者unicode字符,变成ASCII数值 oct(x) 把整数x变成八进制表示的字符串 hex(x) 把整数x变成十六进制表示的字符串

python2.72内置函数手册

Python2.72内置函数 1、文档说明 中文译文和用法尚待完善。 2、函数列表 1,取绝对值 abs(x) Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex number, its magnitude is returned. 如果你不知道绝对值什么意思,那就要补一下小学数学了! 基本用法 2, all(iterable)

Return True if all elements of the iterable are true (or if the iterable is empty). Equivalent to: 3. any(iterable) Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to: 4. basestring() This abstract type is the superclass for str and unicode. It cannot be called or instantiated, but it can be used to test whether an object is an instance of str or unicode. isinstance(obj,basestring) is equivalent to isinstance(obj,(str,unicode)). 是字符串和字符编码的超类,是抽象类型。不能被调用或者实例化。可以用来判断实例是否为字符串或者字符编码。 方法: 5.二进制转换 bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer. 转换成二进制表达 方法: 6.布尔类型 bool([x]) Convert a value to a Boolean, using the standard truth testing procedure. If x is false or omitted, this returns False; otherwise it returns True. bool is also a class, which is a subclass of int. Class bool cannot be subclassed further. Its only instances are False and True 布尔类型的转化

Python学习笔记

第二章变量和简单数据类型 在文档——设置文件编码——Unicode中选择utf-8即可。只是每个文档都需要重新设置。 另外如果你用的字体不支持中文也不行,geany不能给中文和英文分别设置字体。Python 2 首行或第二行用# coding:utf-8 在开头加上#coding=gbk或者#coding=utf-8试试 一.概念 1.变量的命名和使用:5条 2.在程序中可随时改变变量的值,而Python将始终记录变量的最新值。 3.在python中,每一句代码都应该顶格写 4.字符串就是一系列字符。在Python中,用引号扩起的都是字符串。 二.方法——修改字符串的大小写 1.title()以首字母大写的方式显示每个单词;字符串/变量.title() 2.upper()将字符串改为全部大写 3.lower()将字符串改为全部小写 三.合并字符串 1.Python使用加号(+)来合并字符串 2.使用制表符或换行符来添加空白 3.要在字符串中添加制表符,可使用字符组合\t,即在字符串前加\t。 4.要在字符串中添加换行符,可使用字符组合\n,即在字符串前加\t。 四.方法——删除空白 1.要确保字符串末尾没有空白,可使用方法rstrip();字符串/变量.rstrip() 注:然而这种删除是暂时的,要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中。例如:favorite=’python ’; favorite_language=favorite_language.rstrip() ; print(favorite_language) 2.要确保字符串开头没有空白,可使用方法lstrip();字符串/变量.lstrip() 3.同时删除开头和末尾的空白,可使用方法strip() 五.数字 1.整数(int):在Python中可以对整数执行加减乘除运算。 Python使用两个乘号表示乘方;Python还支持运算次序,即用括号来修改运算次序。 2.浮点数:使用浮点数时无需考虑其行为,你只需输入要使用的数字即可。 3.使用函数str()避免类型错误:在字符串中使用整数(int)时,需要显示地指出你希望Python将这个整数用作字符串。为此,可调用函数str():即str(整数)。 第三章列表简介 一.访问列表元素

python_内置函数_练习3

本练习的重点:通过实现与内置函数相同功能的函数来达到锻炼提升编码能力的目的。 1.abs(x)函数 返回一个数的绝对值。 参数可以是一个整数或浮点数。 如果参数是一个复数,则返 回它的模。 如果 x 定义了 abs(),则 abs(x) 将返回 x.abs()。 2.class complex([real[, imag]]) 函数 返回值为 real + imag*1j 的复数,或将字符串或数字转换为复数。如果第一个形参 是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。 当从字符串转换时,字符串在 + 或 - 的周围必须不能有空格。例如 complex('1+2j') 是合法的,但 complex('1 + 2j') 会触发 ValueError 异常。 3.isinstance(object, classinfo) 函数 如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或 虚拟) 子类则返回 True。 否则返回 False。 如果 classinfo 是类型对象元组(或由其他此类元组递归 组成的元组),那么如果 object 是其中任何一个类型的实例就返回 True。 如果

classinfo 既不是类型,也不是类型元组或类型元组的元组,则将引发 TypeError 异 常。 In [25]:print(abs(-1)) print(abs(-1.212)) print(abs(complex('1+2j'))) # 返回 sqrt(1+4) a = complex('1+2j') 1 1.212 2.23606797749979 请实现下面的函数,模仿abs函数的功能,返回数字的绝对值。 In [23]:import math # 方法1 def my_abs_1(number): if type(number) == int or type(number) == float: if number < 0: return number*(-1) else: return number elif type(number) == complex: return math.sqrt(number.real**2 + number.imag**2) #方法2 # 判断变量类型,可以使用isinstance函数, # 该函数的第一个参数是需要检查类型的对象, # 第二个参数可以是数据类型,也可以是一个元组, # 元组里是多个数据类型,只要满足其中一个就返回True def my_abs_2(number): if isinstance(number, (float,int)): if number < 0: return number*(-1) else: return number elif isinstance(number, complex): return math.sqrt(number.real**2 + number.imag**2) if __name__ == "__main__": print(abs(-1), end = " ") print(abs(-1.212), end = " ") print(abs(complex('1+2j')), end = " \n") print(my_abs_1(-1), end = " ") print(my_abs_1(-1.212), end = " ") print(my_abs_1(complex('1+2j')), end = " \n") print(my_abs_2(-1), end = " ") print(my_abs_2(-1.212), end = " ") print(my_abs_2(complex('1+2j')), end = " ") 1 1.21 2 2.23606797749979 1 1.21 2 2.23606797749979

(完整版)Python基础学习笔记

Python 基础学习笔记 基于《Python语言程序设计基础(第2版)》 第一部分初识Python语言 第1章程序设计基本方法 1.1 计算机的概念 ?计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性。 ?计算机技术发展阶段: 1. 第一阶段:1946-1981年,“计算机系统结构阶段”。 2. 第二阶段:1982-2007年,“计算机网络和视窗阶段”。 3. 第三阶段:2008年至今,“复杂信息系统阶段”。 4. 第四阶段:月20年后某个时期开始,“人工智能阶段”。 1.2程序设计语言 1.2.1程序设计语言概述 ?机器语言:直接使用二进制代码表达指令,可被计算机硬件直接识别和执行。不同计算机结构的机器指令不同。 ?汇编语言:使用助记符对应机器语言中的指令,可直接操作计算机硬件。不同计算机结构的汇编指令不同。 机器语言和汇编语言都直接操作计算机硬件并基于此设计,统称“低级语言”。

?高级语言:用更接近自然语言的方式描述计算问题。代码只与编程语言有关,与计算机结构无关。 1.2.2编译和解释 高级语言按执行方式可分为采用编译执行的静态语言和采用解释执行的脚本语言。 ?编译是将源代码转换成目标代码的过程。 ?解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。 1.2.3计算机编程 ?我学习Python的原因: 1. 通过编程实现自动化,提高效率。 2. 通过编程了解一个新的广阔世界。 ?学习一门编程语言(重点在于练习) 1. 掌握该语言的语法 2. 结合问题设计程序结构 3. 掌握解决问题的能力 1.3Python语言概述 1.3.1 Python语言的发展 Python语言是一个语法简洁、跨平台、可扩展的开源通用脚本语言。 ?Python语言诞生于1990年,创世人为Guido。 ?2000年10月,Python 2.0正式发布,2010年,Python 2.x系列发布最后一版(2.7)。

python内嵌函数列表

本节介绍的函数在解释器中总是可用的,他们被包含在 __builtin__ 模块里.另外每个模块的 __builtins__ 属性经常指的是这个模块(除了当在restricted execution环境下运行时). _(下划线) 默认情况下,变量 _ 用于在交互模式下表示最近一个表达式的运行结果. 参阅 sys.displayhook (118) __import__(name [, globals [, locals [, fromlist]]]) import语句通过调用这个函数来导入模块. name是包含模块名字的字符串, globals是一个可选的定义全局名称空间的字典, locals是定义局部名称空间的字典, fromlist是from语句目标的列表.例如, import spam语句会调用 __import__('spam', globals(), locals(), []) ,而from spam import foo 语句会调用 __import__('spam', globals(), locals(), ['foo']). 如果模块名在包名字之后(如foo.bar)而且fromlist为空时,就返回对应的模块对象.如果fromlist不为空,则只会返回最顶级的包. 这个函数是一个低等级的模块载入接口.它并不执行import语句的所有步骤(通常情况下局部名称空间并不会随模块中包含对象的名称引用的改变而改变.这个函数可以由用户来重新定义,这样为import语句加入新的行为.默认的执行并不会检查locals参数,而globals只用于决定包的内容(这些参数可以使 __import__()能够完整地访问全局和局部名称空间) abs(x) 返回x的绝对值 apply(func [, args [, keywords]]) 对可调用对象func执行函数调用. args是一个包含固定位置参数的元组, keywords是包含关键参数的字典. apply()函数也可以写做 func(*args ,**keywords ). buffer(sequence [, offset [, size]]) 创建一个新的缓冲器对象.缓冲器通常是一个序列(如字符串)的字节导向序列.缓冲器和字符串在许多地方是相同的,但是它不支持字符串方法,而且也不能使用string模块的函数. callable(object) 当object为可调用对象时返回True,否则返回False

相关文档
最新文档