Python标准库速查手册

Python标准库速查手册
Python标准库速查手册

Python标准库速查手册

1. 操作系统接口

os模块提供了很多与操作系统交互的函数:

>>> import os

>>> os.getcwd() # Return the current working directory

'C:\\Python35'

>>> os.chdir('/server/accesslogs') # Change current working directory

>>> os.system('mkdir today') # Run the command mkdir in the system shell

应该用import os 风格而非from os import *。这样可以保证随操作系统不同而有所变化的os.open() 不会覆盖内置函数open()。

在使用一些像os 这样的大型模块时内置的dir() 和help() 函数非常有用:

>>> import os

>>> dir(os)

>>> help(os)

针对日常的文件和目录管理任务,shutil 模块提供了一个易于使用的高级接口:

>>> import shutil

>>> shutil.copyfile('data.db', 'archive.db')

'archive.db'

>>> shutil.move('/build/executables', 'installdir')

'installdir'

2. 文件通配符

glob 模块提供了一个函数用于从目录通配符搜索中生成文件列表:

>>> import glob

>>> glob.glob('*.py')

['primes.py', 'random.py', 'quote.py']

3. 命令行参数

通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于sys 模块的argv 变量。例如在命令行中执行python demo.py one two three 后可以得到以下输出结果: >>> import sys

>>> print(sys.argv)

['demo.py', 'one', 'two', 'three']

getopt 模块使用Unix getopt() 函处理sys.argv。更多的复杂命令行处理由argparse 模块提供。

4. 错误输出重定向和程序终止

sys 还有stdin,stdout 和stderr 属性,即使在stdout 被重定向时,后者也可以用于显示警告和错误信息:

>>> sys.stderr.write('Warning, log file not found starting a new one\n')

Warning, log file not found starting a new one

大多脚本的定向终止都使用sys.exit()。

5. 字符串正则匹配

re 模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:

>>> import re

>>> re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')

['foot', 'fell', 'fastest']

>>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')

'cat in the hat'

只需简单的操作时,字符串方法最好用,因为它们易读,又容易调试: >>> 'tea for too'.replace('too', 'two')

'tea for two'

6. 数学

math 模块为浮点运算提供了对底层C函数库的访问:

>>> import math

>>> math.cos(math.pi / 4.0)

0.70710678118654757

>>> math.log(1024, 2)

10.0

random 提供了生成随机数的工具:

>>> import random

>>> random.choice(['apple', 'pear', 'banana'])

'apple'

>>> random.sample(range(100), 10) # sampling without replacement

[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]

>>> random.random() # random float

0.17970987693706186

>>> random.randrange(6) # random integer chosen from range(6)

4

SciPy 项目提供了许多数值计算的模块。

7. 互联网访问

有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从urls 接收的数据的urllib.request 以及用于发送电子邮件的smtplib:

>>> from urllib.request import urlopen

>>> for line in urlopen('https://www.360docs.net/doc/a816741125.html,/cgi-bin/timer.pl'):

... line = line.decode('utf-8') # Decoding the binary data to text.

... if 'EST' in line or 'EDT' in line: # look for Eastern Time

... print(line)


Nov. 25, 09:43:32 PM EST

>>> import smtplib

>>> server = smtplib.SMTP('localhost')

>>> server.sendmail('soothsayer@https://www.360docs.net/doc/a816741125.html,', 'jcaesar@https://www.360docs.net/doc/a816741125.html,',

... """To: jcaesar@https://www.360docs.net/doc/a816741125.html,

... From: soothsayer@https://www.360docs.net/doc/a816741125.html,

...

... Beware the Ides of March.

... """)

>>> server.quit()

8. 日期和时间

datetime 模块为日期和时间处理同时提供了简单和复杂的方法。支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。该模块还支持时区处理。

>>> # dates are easily constructed and formatted

>>> from datetime import date

>>> now = date.today()

>>> now

datetime.date(2003, 12, 2)

>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")

'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'

>>> # dates support calendar arithmetic

>>> birthday = date(1964, 7, 31)

>>> age = now - birthday

>>> age.days

14368

9. 数据压缩

以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,lzma,zipfile 以及tarfile。

>>> import zlib

>>> s = b'witch which has which witches wrist watch'

>>> len(s)

41

>>> t = https://www.360docs.net/doc/a816741125.html,press(s)

>>> len(t)

37

>>> zlib.decompress(t)

b'witch which has which witches wrist watch'

>>> zlib.crc32(s)

226805979

10. 性能度量

有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。

例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多。timeit 证明了后者更快一些:

>>> from timeit import Timer

>>> Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()

0.57535828626024577

>>> Timer('a,b = b,a', 'a=1; b=2').timeit()

0.54962537085770791

相对于timeit 的细粒度,profile 和pstats 模块提供了针对更大代码块的时间度量工具。

11. 质量控制

开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试。

doctest 模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。通过用户提供的例子,它发展了文档,允许doctest 模块确认代码的结果是否与文档一致:

def average(values):

"""Computes the arithmetic mean of a list of numbers.

>>> print(average([20, 30, 70]))

40.0

"""

return sum(values) / len(values)

import doctest

doctest.testmod() # automatically validate the embedded tests

unittest 模块不像doctest 模块那么容易使用,不过它可以在一个独立的文件里提供一个更全面的测试集:

import unittest

class TestStatisticalFunctions(unittest.TestCase):

def test_average(self):

self.assertEqual(average([20, 30, 70]), 40.0)

self.assertEqual(round(average([1, 5, 7]), 1), 4.3)

with self.assertRaises(ZeroDivisionError):

average([])

with self.assertRaises(TypeError):

average(20, 30, 70)

unittest.main() # Calling from the command line invokes all tests

12. “瑞士军刀”

Python 展现了“瑞士军刀”的哲学。这可以通过它更大的包的高级和健壮的功能来得到最好的展现。列如:

?xmlrpc.client 和xmlrpc.server 模块让远程过程调用变得轻而易举。尽管模块有这样的名字,用户无需拥有XML 的知识或处理XML。

?email 包是一个管理邮件信息的库,包括MIME和其它基于RFC2822 的信息文档。

不同于实际发送和接收信息的smtplib 和poplib 模块,email 包包含一个构造或解析复杂消息结构(包括附件)及实现互联网编码和头协议的完整工具集。

?xml.dom 和xml.sax 包为流行的信息交换格式提供了强大的支持。同样,csv模块支持在通用数据库格式中直接读写。

综合起来,这些模块和包大大简化了Python 应用程序和其它工具之间的数据交换。

?国际化由gettext,locale 和codecs 包支持。

13. 输出格式

reprlib 模块为大型的或深度嵌套的容器缩写显示提供了:repr() 函数的一个定制版本: >>> import reprlib

>>> reprlib.repr(set('supercalifragilisticexpialidocious'))

"set(['a', 'c', 'd', 'e', 'f', 'g', ...])"

pprint 模块给老手提供了一种解释器可读的方式深入控制内置和用户自定义对象的打印。当输出超过一行的时候,“美化打印(pretty printer)”添加断行和标识符,使得数据结构显示的更清晰:

>>> import pprint

>>> t = [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta',

... 'yellow'], 'blue']]]

...

>>> pprint.pprint(t, width=30)

[[[['black', 'cyan'],

'white',

['green', 'red']],

[['magenta', 'yellow'],

'blue']]]

textwrap 模块格式化文本段落以适应设定的屏宽:

>>> import textwrap

>>> doc = """The wrap() method is just like fill() except that it returns

... a list of strings instead of one big string with newlines to separate

... the wrapped lines."""

>>> print(textwrap.fill(doc, width=40))

The wrap() method is just like fill()

except that it returns a list of strings

instead of one big string with newlines

to separate the wrapped lines.

locale 模块按访问预定好的国家信息数据库。locale 的格式化函数属性集提供了一个直接方式以分组标示格式化数字:

>>> import locale

>>> locale.setlocale(locale.LC_ALL, 'English_United States.1252')

'English_United States.1252'

>>> conv = locale.localeconv() # get a mapping of conventions

>>> x = 1234567.8

>>> locale.format("%d", x, grouping=True)

'1,234,567'

>>> locale.format_string("%s%.*f", (conv['currency_symbol'],

... conv['frac_digits'], x), grouping=True)

'$1,234,567.80'

14. 模板

string 提供了一个灵活多变的模版类Template ,使用它最终用户可以用简单的进行编辑。这使用户可以在不进行改变的情况下定制他们的应用程序。

格式使用$ 为开头的Python 合法标识(数字、字母和下划线)作为占位符。占位符外面的大括号使它可以和其它的字符不加空格混在一起。$$ 创建一个单独的$: >>> from string import Template

>>> t = Template('${village}folk send $$10 to $cause.')

>>> t.substitute(village='Nottingham', cause='the ditch fund')

'Nottinghamfolk send $10 to the ditch fund.'

当一个占位符在字典或关键字参数中没有被提供时,substitute() 方法就会抛出一个KeyError 异常。对于邮件合并风格的应用程序,用户提供的数据可能并不完整,这时使用safe_substitute() 方法可能更适合—如果数据不完整,它就不会改变占位符: >>> t = Template('Return the $item to $owner.')

>>> d = dict(item='unladen swallow')

>>> t.substitute(d)

Traceback (most recent call last):

...

KeyError: 'owner'

>>> t.safe_substitute(d)

'Return the unladen swallow to $owner.'

模板子类可以指定一个自定义分隔符。例如,图像查看器的批量重命名工具可能选择使用百分号作为占位符,像当前日期,图片序列号或文件格式:

>>> import time, os.path

>>> photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']

>>> class BatchRename(Template):

... delimiter = '%'

>>> fmt = input('Enter rename style (%d-date %n-seqnum %f-format): ')

Enter rename style (%d-date %n-seqnum %f-format): Ashley_%n%f

>>> t = BatchRename(fmt)

>>> date = time.strftime('%d%b%y')

>>> for i, filename in enumerate(photofiles):

... base, ext = os.path.splitext(filename)

... newname = t.substitute(d=date, n=i, f=ext)

... print('{0} --> {1}'.format(filename, newname))

img_1074.jpg --> Ashley_0.jpg

img_1076.jpg --> Ashley_1.jpg

img_1077.jpg --> Ashley_2.jpg

模板的另一个应用是把多样的输出格式细节从程序逻辑中分类出来。这便使得XML 文件,纯文本报表和HTML WEB 报表定制模板成为可能。

15. 使用二进制数据记录布局

struct 模块为使用变长的二进制记录格式提供了pack() 和unpack() 函数。下面的示例演示了在不使用zipfile 模块的情况下如何迭代一个ZIP 文件的头信息。压缩码"H" 和"I" 分别表示2和4字节无符号数字,"<" 表明它们都是标准大小并且按照little-endian 字节排序。

import struct

with open('myfile.zip', 'rb') as f:

data = f.read()

start = 0

for i in range(3): # show the first 3 file headers

start += 14

fields = struct.unpack('

crc32, comp_size, uncomp_size, filenamesize, extra_size = fields

start += 16

filename = data[start:start+filenamesize]

start += filenamesize

extra = data[start:start+extra_size]

print(filename, hex(crc32), comp_size, uncomp_size)

start += extra_size + comp_size # skip to the next header

16. 多线程

线程是一个分离无顺序依赖关系任务的技术。在某些任务运行于后台的时候应用程序会变得迟缓,线程可以提升其速度。一个有关的用途是在I/O 的同时其它线程可以并行计算。

下面的代码显示了高级模块threading 如何在主程序运行的同时运行任务:

i mport threading, zipfile

class AsyncZip(threading.Thread):

def __init__(self, infile, outfile):

threading.Thread.__init__(self)

self.infile = infile

self.outfile = outfile

def run(self):

f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)

f.write(self.infile)

f.close()

print('Finished background zip of:', self.infile)

background = AsyncZip('mydata.txt', 'myarchive.zip')

background.start()

print('The main program continues to run in foreground.')

background.join() # Wait for the background task to finish

print('Main program waited until background was done.')

多线程应用程序的主要挑战是协调线程,诸如线程间共享数据或其它资源。为了达到那个目的,线程模块提供了许多同步化的原生支持,包括:锁,事件,条件变量和信号灯。

尽管这些工具很强大,微小的设计错误也可能造成难以挽回的故障。因此,任务协调的首选方法是把对一个资源的所有访问集中在一个单独的线程中,然后使用queue 模块用那个线程服务其他线程的请求。为内部线程通信和协调而使用Queue 对象的应用程序更易于设计,更可读,并且更可靠。

C++ 扩展和嵌入 Python

Python简介 Python是一种简单易学,功能强大的解释型编程语言,它有简洁明了的语法,高效率的高层数据结构,能够简单而有效地实现面向对象编程,特别适用于快速应用程序开发,也可以用来开发大规模的重要的商业应用。Python是一个理想的脚本语言。 Python免费开源,可移植到多种操作系统,只要避免使用依赖于特定操作系统的特性,Python程序无需修改就可以在各种平台上面运行。 Python拥有现代编程语言所具有的一切强大功能,Python标准库十分庞大,可以帮助开发者处理各种工作,如:图形用户界面、文件处理、多媒体、正则表达式、文档生成、单元测试、线程、数据库、网络通讯、网页浏览器、CGI、FTP、电子邮件、XML、HTML、WAV文件、密码系统、Tk和其他与系统有关的操作。只要安装了Python,这些功能都是可用的除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图形库等等数不胜数。 Python容易扩展和嵌入。Python提供的许多标准模块支持C或者C++接口。Python和C可以一起工作,它可以嵌入到C或者C++的应用程序当中,因此可用Python语言为应用程序提供脚本接口,由于支持跨语言开发,可用Python 设计概念化应用程序,并逐步移植到C,使用前不必用C重写应用程序。(Jython 使Python可以和Java一起工作,使开发者可以在Python里面调Java的包,也可以在Java里面使用Python的对象。还有更妙的,由于Jython的解释器完全用Java编写,因此可以在支持Java的任何平台上部署Python程序,甚至WEB浏览器也可以直接运行Python脚本。) 提出问题 在某个C++应用程序中,我们用一组插件来实现一些具有统一接口的功能,我们使用Python来代替动态链接库形式的插件,这样可以方便地根据需求的变化改写脚本代码,而不是必须重新编译链接二进制的动态链接库。Python强大的功能足以胜任,但是有一些操作系统特定的功能需要用C++来实现,再由Python调用。所以,最基础地,我们需要做到: ? 1. 把Python嵌入到C++应用程序中,在C++程序中调用Python函数和获得变量的值; ? 2. 用C++为Python编写扩展模块(动态链接库),在Python程序中调用C++开发的扩展功能函数。 常用的Python/C API介绍 下面是例子中用到的几个Python/C API的简要介绍及示例代码。注意,这

python考试复习题库

一、填空题 1、Python安装扩展库常用的是_工具。(pip) 2、Python标准库math中用来计算平方根的函数是____。(sqrt) 3、Python程序文件扩展名主要有__和两种,其中后者常用于GUI程序。(py、pyw) 4、Python源代码程序编译后的文件扩展名为___。(pyc) 5、使用pip工具升级科学计算扩展库numpy的完整命令是_______。(pip install –upgrade numpy) 6、使用pip工具查看当前已安装的Python扩展库的完整命令是___。(pip list) 7、在IDLE交互模式中浏览上一条语句的快捷键是____。(Alt+P) 8、使用pip工具查看当前已安装Python扩展库列表的完整命令是___。(pip list) 9、在Python中____表示空类型。(None) 10、列表、元组、字符串是Python的___(有序?无序)序列。(有序) 11、查看变量类型的Python内置函数是______。(type()) 12、查看变量内存地址的Python内置函数是_______。(id()) 13、以3为实部4为虚部,Python复数的表达形式为_或__。(3+4j、3+4J) 14、Python运算符中用来计算整商的是___。(//) 15、Python运算符中用来计算集合并集的是_。(|) 16、使用运算符测试集合包含集合A是否为集合B的真子集的表达式可以写作_。(A < B ) 17、表达式[1, 2, 3]*3的执行结果为____________。([1, 2, 3, 1, 2, 3, 1, 2, 3]) 18、list(map(str, [1, 2, 3]))的执行结果为___________。([‘1’, ‘2’, ‘3’]) 19、语句x = 3==3, 5执行结束后,变量x的值为___。((True, 5)) 20、已知x = 3,那么执行语句x += 6 之后,x的值为_____。(9) 21、已知x = 3,并且id(x)的返回值为496103280,那么执行语句x += 6 之后,表达式id(x) == 496103280 的值为_。(False) 22、已知x = 3,那么执行语句x *= 6 之后,x的值为______。(18) 23、为了提高Python代码运行速度和进行适当的保密,可以将Python程序文件编译为扩展名____的文件。(pyc) 24、表达式“[3] in [1, 2, 3, 4]”的值为______。(False) 25、列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为。(None) 26、假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是____________。([6, 7, 9, 11]) 27、使用列表推导式生成包含10个数字5的列表,语句可以写为_____。([5 for i in range(10)]) 28、假设有列表a = [‘name’, ‘age’, ‘sex’]和b = [‘Dong’, 38, ‘Male’],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为___________。(c = dict(zip(a, b))) 29、任意长度的Python列表、元组和字符串中最后一个元素的下标为__。(-1) 30、Python语句”.join(list(‘hello world!’))执行的结果是__________。(’hello world!’) 31、转义字符’\n’的含义是_________。(回车换行) 32、Python语句list(range(1,10,3))执行结果为_________。([1, 4, 7]) 33、表达式list(range(5)) 的值为______。([0, 1, 2, 3, 4]) 34、____命令既可以删除列表中的一个元素,也可以删除整个列表。(del) 35、已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果为_。(True) 36、表达式int(‘123’, 16) 的值为___。(291) 37、表达式int(‘123’, 8) 的值为___。(83) 38、表达式int(‘123’) 的值为___。(123) 39、表达式int(‘101’,2) 的值为____。(5) 40、表达式abs(-3) 的值为_。(3)

PYTHON3中文教程

Python已经是3.1版本了,与时俱进更新教程. ?本文适合有Java编程经验的程序员快速熟悉Python ?本文程序在windows xp+python3.1a1测试通过. ?本文提到的idle指python shell,即安装python后你在菜单看到的IDLE(python gui) ?在idle里ctrl+n可以打开一个新窗口,输入源码后ctrl+s可以保存,f5运行程序. ?凡打开新窗口即指ctrl+n的操作. #打开新窗口,输入:#!/usr/bin/python #-*-coding:utf8-*-s1=input("Input your name:")print("你好,%s"%s1)''' 知识点: *input("某字符串")函数:显示"某字符串",并等待用户输入. *print()函数:如何打印. *如何应用中文 *如何用多行注释 ''' 2字符串和数字 但有趣的是,在javascript里我们会理想当然的将字符串和数字连接,因为是动态语言嘛.但在Python里有点诡异,如下: 运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换 #!/usr/bin/python #运行这行程序会出错,提示你字符串和数字不能连接,于是只好用内置函数进行转换a=2

b="test" c=str(a)+b d="1111" e=a+int(d)#How to print multiply values print("c is%s,e is%i"%(c,e))''' 知识点: *用int和str函数将字符串和数字进行转换 *打印以#开头,而不是习惯的// *打印多个参数的方式''' #!/usr/bin/python #-*-coding:utf8-*- #列表类似Javascript的数组,方便易用#定义元组word=['a','b','c','d','e','f','g']#如何通过索引访问元组里的元素a=word[2]print("a is:"+a) b=word[1:3]print("b is:")print(b)#index1and2elements of word.c=word[:2]print ("c is:")print(c)#index0and1elements of word.d=word[0:]print("d is:")print(d)# All elements of word.#元组可以合并e=word[:2]+word[2:]print("e is:")print(e)#All elements of word.f=word[-1]print("f is:")print(f)#The last elements of word.g=word[-4:-2]print("g is:")print(g)#index3and4elements of word.h=word[-2:]print("h is:")print(h)#The last two elements.i=word[:-2]print("i is: ")print(i)#Everything except the last two characters l=len(word)print("Length of word is:"+str(l))print("Adds new element") word.append('h')print(word)#删除元素del word[0]print(word)del word[1:3]print (word)''' 知识点: *列表长度是动态的,可任意添加删除元素. *用索引可以很方便访问元素,甚至返回一个子列表 *更多方法请参考Python的文档'''

Python标准库14 数据库 (sqlite3) 光环大数据Python培训

https://www.360docs.net/doc/a816741125.html, Python标准库14 数据库(sqlite3) 光环大数据Python培训 光环大数据Python培训了解到,Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以搭配Python 建网站,或者制作有数据存储需求的工具。SQLite还在其它领域有广泛的应用,比如HTML5和移动端。Python标准库中的sqlite3提供该数据库的接口。 我将创建一个简单的关系型数据库,为一个书店存储书的分类和价格。数据库中包含两个表:category用于记录分类,book用于记录某个书的信息。一本书归属于某一个分类,因此book有一个外键(foreignkey),指向catogory表的主键id。 创建数据库 我首先来创建数据库,以及数据库中的表。在使用connect()连接数据库后,我就可以通过定位指针cursor,来执行SQL命令: 复制代码 #ByVameiimportsqlite3#test.dbisafileintheworkingdirectory.conn=sq lite3.connect("test.db")c=conn.cursor()#createtablesc.execute('''CREA TETABLEcategory(idintprimarykey,sortint,nametext)''')c.execute('''CRE ATETABLEbook(idintprimarykey,sortint,nametext,pricereal,categoryint,F OREIGNKEY(category)REFERENCEScategory(id))''')#https://www.360docs.net/doc/a816741125.html, mit()#closetheconnectionwiththedatabaseconn.close() 复制代码 SQLite的数据库是一个磁盘上的文件,如上面的test.db,因此整个数据库可以方便的移动或复制。test.db一开始不存在,所以SQLite将自动创建一个新文件。 利用execute()命令,我执行了两个SQL命令,创建数据库中的两个表。创建完成后,保存并断开数据库连接。 插入数据

python练习试题含答案.docx

精品文档 Python 练习题库 By 郑红波2017-12-19 一、填空题 1. Python 标准库 math 中用来计算平方根的函数是__________ 。( sqrt) 2.在 Python 中 __________表示空类型。( None) 3.列表、元组、字符串是 Python 的_________(有序?无序 ) 序列。(有序) 4.查看变量类型的 Python 内置函数是 ________________ 。( type() ) 5.查看变量内存地址的 Python 内置函数是 _________________。( id() ) 6. 表达式 [1, 2, 3]*3 的执行结果为______________________ 。( [1, 2, 3, 1, 2, 3, 1, 2, 3] ) 7.list(map(str, [1, 2, 3])) 的执行结果为 _____________________ 。([ ‘1’,‘2’,‘3’]) 8.已知 x =3,并且 id(x) 的返回值为 496103280 ,那么执行语句x += 6 之后,表达式id(x) == 496103280的值为 ___________。( False) 9.已知 x = 3 ,那么执行语句x *= 6 之后, x 的值为 ________________ 。( 18) 10.表达式“ [3] in [1, 2, 3, 4] ”的值为 ________________ 。( False) 11.假设列表对象 aList 的值为 [3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片 aList[3:7] 得到的值是 ______________________ 。([6, 7, 9, 11] ) 12.使用列表推导式生成包含10 个数字 5 的列表,语句可以写为_______________ 。( [5for i in range(10)] ) 13.假设有列表 a = ['name', 'age', 'sex'] 和 b = ['Dong', 38, 'Male'] ,请使用一个语句将这两个列表的内 容转换为字典,并且以列表 a 中的元素为“键” ,以列表 b 中的元素为“值” ,这个语句可以写为 _____________________ 。( c = dict(zip(a, b)) ) 14.任意长度的Python 列表、元组和字符串中最后一个元素的下标为________。( -1) 15.Python 语句 ''.join(list('hello world!')) 执行的结果是 ____________________。( 'hello world!') 16.转义字符’\n’的含义是 ___________________ 。(回车换行) 17.Python 语句 list(range(1,10,3)) 执行结果为 ___________________ 。( [1, 4, 7] ) 18.切片操作 list(range(6))[::2] 执行结果为 ________________ 。( [0, 2, 4] ) 19.表达式 'ab' in 'acbed' 的值为 ________。( False) 20.Python 3.x 语句 print(1, 2, 3, sep=':') 的输出结果为 ____________。( 1:2:3) 21.表达式 int(4**0.5) 的值为 ____________ 。(2) 22.达式 sorted([111, 2, 33], key=lambda x: -len(str(x)))的值为 ____________。( [111, 33, 2] ) 23.已知列表对象x = ['11', '2', '3'] ,则表达式 max(x)的值为 ___________。( '3') 24.表达式 min(['11', '2', '3']) 的值为 _________________ 。( '11') 25.已知列表对象x = ['11', '2', '3'] ,则表达式 max(x, key=len) 的值为 ___________。( '11') 26.语句 x = (3,) 执行后 x 的值为 _______________ 。( (3,)) 27.语句 x = (3) 执行后 x 的值为 ________________ 。( 3) 28.已知 x = {1:2} ,那么执行语句 x[2] = 3 之后, x 的值为 ________________ 。( {1: 2, 2: 3} ) 29.字典对象的_____________方法返回字典中的“键-值对”列表。( items()) 30.使用列表推导式得到 100 以内所有能被 13 整除的数的代码可以写作 ___________________________________ 。( [i for i in range(100) if i%13==0]) 31.表达式 3 ** 2 的值为 _________ 。( 9) 32.表达式 3 * 2 的值为 ___________。( 6) 33.已知 x = [3, 5, 7] ,那么执行语句x[len(x):] = [1, 2] 之后,x 的值为 ______________ (。 [3, 5, 7, 1, 2] ) 34.表达式list(zip([1,2], [3,4])) 的值为 ________________________ 。( [(1, 3), (2, 4)] ) 35.已知 x = [1, 2, 3, 2, 3] ,执行语句x.pop() 之后, x 的值为 _____________ 。( [1, 2, 3, 2] ) 36.表达式[x for x in [1,2,3,4,5] if x<3]的值为 _____________________ 。( [1, 2] ) 37.表达式 [index for index, value in enumerate([3,5,7,3,7]) if value == max([3,5,7,3,7])] 的值为 __________________ 。( [2, 4] ) 38.已知path = r'c:\test.html' ,那么表达式path[:-4]+'htm'的值为__________。('c:\\test.htm')

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标准库和扩展库

Tkinter———— Python默认的图形界面接口。Tkinter是一个和Tk接口的模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的,目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开发。Perl、Scheme 等语言也利用Tk库进行GUI开发。Tkinter是跨平台,在各种平台下都能使用。 Python Imaging Library(PIL)————它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。是用户进行图象处理的强有力工具。 Pmw(Python megawidgets)它是超级GUI组件集————一个利用Tkinter模块构建的高级GUI组件,每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。 PyXML————用Python解析和处理XML文档的工具包,包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容: xmlproc: 一个符合规范的XML解析器。 Expat: 一个快速的,非验证的XML解析器。还有其他 和他同级别的还有PyHtml PySGML PyGame————用于多媒体开发和游戏软件开发的模块。 PyOpenGL————模块封装了“OpenGL应用程序编程接口”,通过该模块python程序员可在程序中集成2D和3D的图形。 NumPy、NumArray和SAGE———— NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很明显。NumPy是Numarray的后继者,用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代Magma, Maple, Mathematica和Matlab 这类工具。 MySQLdb模块————用于连接MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。 PyGTK ————用于GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop PyQt ————用于Qt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是Scintillar 编辑器类的Qt接口。 PyMedia ————用于多媒体操作的python模块。它提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。 Psyco ————一个代码加速度器,可使代码的执行速度提高到与编译语言一样的水平。 Python-ldap ————提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x。 smtplib模块————发送电子邮件。 ftplib模块————定义了FTP类和一些方法,用以进行客户端的ftp编程。我们可用python编写一个自己的ftp客户端程序,用于下载文件或镜像站点。如果想了解ftp协议的详细内容,请参考RFC959。 xmpppy模块———— Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP 协议的IM系统。在中有一个xmpppy模块支持该协议。也就是说,我们可以通过该模块与Jabber 服务器通信,是不是很Cool。

python解释器内建函数帮助文档

Python解释器有很多内建函数。下面是以字母顺序列出 __import__( name[, globals[, locals[, fromlist[, level]]]]) 被import语句调用的函数。它的存在主要是为了你可以用另外一个有兼容接口的函数来改变import 语句的语义. 为什么和怎么做的例子, 标准库模块ihooks和rexec. 也可以查看imp, 它定义了有用的操作,你可以创建你自己的__import__()函数. 例如, 语句"import spam" 结果对应下面的调用: __import__('spam', globals(), locals(), [], -1); 语句"from spam.ham import eggs" 结果对应调用"__import__('spam.ham', globals(), locals(), ['eggs'], -1)". 注意即使locals()和['eggs']作为参数传递, __import__() 函数不会设置局部变量eggs; import语句后面的代码完成这项功能的. (实事上, 标准的执行根本没有使用局部参数, 仅仅使用globals决定import语句声明package的上下文.) 当name变量是package.module的形式, 正常讲, 将返回顶层包(第一个点左边的部分), 而不是名为name的模块. 然而, 当指定一个非空的formlist参数,将返回名为name的模块. 这样做是为了兼容为不同种类的import语句产生的字节码; 当使用"import spam.ham.eggs", 顶层包spam 必须在导入的空间中, 但是当使用"from spam.ham import eggs", 必须使用spam.ham子包来查找eggs变量. 作为这种行为的工作区间, 使用getattr()提取需要的组件. 例如, 你可以定义下面: def my_import(name): mod = __import__(name) components = name.split('.') for comp in components[1:]: mod = getattr(mod, comp) return mod level指定了是否使用相对或绝对导入. 默认是-1将使用将尝试使用相对或绝对导入. 0 仅使用绝对导入.正数意味着相对查找模块文件夹的level层父文件夹中调用__import__。 abs( x) 返回一个数的绝对值。参数也许是一个普通或长整型,或者一个浮点数。如果参数是一个复数,返回它的积。 all( iterable) 如果迭代的所有元素都是真就返回真。 def all(iterable): for element in iterable: if not element: return False return True

Python程序设计试题(卷)库

《Python程序设计》题库 一、填空题 第一章基础知识 1、Python安装扩展库常用的是_______工具。(pip) 2、Python标准库math中用来计算平方根的函数是__________。(sqrt) 3、Python程序文件扩展名主要有__________和________两种,其中后者常用于GUI程序。 (py、pyw) 4、Python源代码程序编译后的文件扩展名为_________。(pyc) 5、使用pip工具升级科学计算扩展库numpy的完整命令是_________________。(pip install --upgrade numpy) 6、使用pip工具查看当前已安装的Python扩展库的完整命令是_____________。(pip list) 7、在IDLE交互模式中浏览上一条语句的快捷键是__________。(Alt+P) 8、在Python中__________表示空类型。(None) 9、列表、元组、字符串是Python的_________(有序?无序)序列。(有序) 10、查看变量类型的Python置函数是________________。(type()) 11、查看变量存地址的Python置函数是_________________。(id()) 12、以3为实部4为虚部,Python复数的表达形式为___________或________。(3+4j、 3+4J)

13、Python运算符中用来计算整商的是_________。(//) 14、Python运算符中用来计算集合并集的是_______。(|) 15、使用运算符测试集合包含集合A是否为集合B的真子集的表达式可以写作_______。 (A

PythonImagingLibrary中文手册p

这是P I L的官方手册,2005年5月6日本中文手册来你可以在PythonWare library找到改文档其它格式的版本以及先前的版本。 原版出处:htt 目录 1.Python Imaging Library 中文手册 2.第一部分:介绍 1.概览 1.介绍 2.图像归档处理 3.图像显示 4.图像处理 2.入门导引 1.使用Image 类 2.读写图像 3.裁剪、粘贴和合并图像 4.滚动一幅图像 5.分离与合并通道 3.几何变换 1.简单的几何变换 2.transpose图像 4.颜色变换 1.转换图像颜色模式 5.图像增强 1.滤波器 1.使用滤波器 2.点操作 1.使用点变换 2.处理单个通道 3.增强 1.增强图像 6.图像序列 1.读取图像序列 2.一个序列迭代类 7.Postscript格式打印 1.Drawing Postscript 8.更多关于读取图像 1.控制解码器 3.概念 1.通道 2.模式 3.大小 4.坐标系统

5.调色板 6.信息 7.滤波器 4.第二部分:模块手册 5.Image 模块 1.例子 2.函数 1.new 2.open 3.blend https://www.360docs.net/doc/a816741125.html,posite 5.eval 6.frombuffer 7.fromstring 8.merge 3.方法 1.convert 2.copy 3.crop 4.draft 5.filter 6.fromstring 7.getbands 8.getbbox 9.getdata 10.getextrema 11.getpixel 12.histogram 13.load 14.offset 15.paste 16.point 17.putalpha 18.putdata 19.putpalette 20.putpixel 21.resize 22.rotate 23.save 24.seek 25.show 26.split 27.tell 28.thumbnail 29.tobitmap 30.tostring

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变成十六进制表示的字符串

几个常见的Python库

NumPy NumPy是Python科学计算的基础包,它提供了以下功能: 1)快速高效的多维数组对象ndarray; 2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数;3)用于读写硬盘上基于数组的数据集的工具; 4)线性代数运算、傅里叶变换,以及随机数生成; 5)用于将C、C++、Fortran代码集成到Python的工具。 对于数值型数据,NumPy数组在存储和处理数据时要比内置的Python 数据结构高效得多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作NumPy数组中的数据,无需进行任何数据复制工作。pandas pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。 用得最多的pandas对象是DataFrame,它是一个面向列的二维表结构,且含有行标和列标。

pandas兼具NumPy高性能的数组计算功能以及电子表格和关系型数据库灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。 pandas提供了大量适用于金融数据的高性能时间序列功能和工具。matplotlib matplotlib是最流行的用于绘制数据图表的Python库。它非常适合创建出版物上用的图表。它跟IPython结合得很好。 SciPy SciPy是一组专门解决科学计算中各种标准问题域的包的集合,主要包括: 1)scipy.integrate: 数值积分列程和微分方程求解器; 2)scipy.linalg: 扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能; 3)scipy.optimize:函数优化器(最小化器)以及根查找算法; 4)scipy.signal:信号处理工具; 5)scipy.sparse:稀疏矩阵和稀疏线性系统求解器; IPython

Python标准库和GUI综合练习实验报告

实验报告 课程名称:Python编程基础与应用实验学期:2019年至2020年第1学期实验时间:2019年5 月10 日 专业: 班级: 学号: 姓名: 指导教师:

实践一python标准库和GUI综合练习 1.1实践:python标准库和GUI练习 1.1.1实验目的 1.熟练掌握python标准库中常用的库函数,理解它们的基本原理,会运用它们的常用 功能。 2.熟练运用python的thinkter包来构建GUI界面,掌握它的基本组件并学会运用它们。 1.1.2实验内容及步骤 1.分析问题 2.编写代码 3.运行程序 4.结果展示 1.1.3程序运行过程、方法和运行结果 1.使用tkinter来编写一个计算器小程序,实现+、-、*、\、\\等基本功能。思路: 1).考虑用类来包裹整个计算器,用类的属性存储界面对象、数据与运算符等。2).考虑使用eval()函数来执行一个字符串表达式,并返回表达式的值。import tkinter as tk # 先有整体框架,输入计算框,各种按键。 class App: def __init__(self, master): # 基本界面 self.master = master # 输入组件

self.initWidgets() # 表达式 self.hi = None def initWidgets(self): # 创建一个输入组件 self.show = https://www.360docs.net/doc/a816741125.html,bel(relief=tk.SUNKEN, width=23, bg="white", anchor=tk.W) # 对该输入组件使用pack布局 self.show.pack(side=tk.TOP, pady=10) p = tk.Frame(self.master) p.pack(side=tk.TOP) # 定义字符串的元组 names = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", "+", "-", "*", "**", "//", "/", "%", "=", "?",) # 遍历元组 for i in range(len(names)): # 创建按钮,放入frame中 b = tk.Button(p, text=names[i], width=5) b.grid(row=i//5, column=i % 5) # b.pack(side=tk.LEFT, padx=0, pady=5) # 为鼠标左键的单击事件绑定事件处理方法 b.bind("", self.click) # 为鼠标左键双击事件绑定事件处理方法 if b["text"] == "?": b.bind("", self.clean) # 定义一个记录输入数字次数的变量 self.i = 0

python练习题-

Python练习题库 By 郑红波2017-12-19 一、填空题 1.Python标准库math中用来计算平方根的函数是__________。(sqrt) 2.在Python中__________表示空类型。(None) 3.列表、元组、字符串是Python的_________(有序?无序)序列。(有序) 4.查看变量类型的Python内置函数是________________。(type()) 5.查看变量内存地址的Python内置函数是_________________。(id()) 6.表达式[1, 2, 3]*3的执行结果为______________________。([1, 2, 3, 1, 2, 3, 1, 2, 3]) 7.list(map(str, [1, 2, 3]))的执行结果为_____________________。([‘1’, ‘2’, ‘3’]) 8.已知x = 3,并且id(x)的返回值为496103280,那么执行语句x += 6 之后,表达式id(x) == 496103280 的值为___________。(False) 9.已知x = 3,那么执行语句x *= 6 之后,x的值为________________。(18) 10.表达式“[3] in [1, 2, 3, 4]”的值为________________。(False) 11.假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是 ______________________。([6, 7, 9, 11]) 12.使用列表推导式生成包含10个数字5的列表,语句可以写为_______________。([5 for i in range(10)]) 13.假设有列表a = ['name', 'age', 'sex']和b = ['Dong', 38, 'Male'],请使用一个语句将这两个列表的内 容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_____________________。(c = dict(zip(a, b))) 14.任意长度的Python列表、元组和字符串中最后一个元素的下标为________。(-1) 15.Python语句''.join(list('hello world!'))执行的结果是____________________。('hello world!') 16.转义字符’\n’的含义是___________________。(回车换行) 17.Python语句list(range(1,10,3))执行结果为___________________。([1, 4, 7]) 18.切片操作list(range(6))[::2]执行结果为________________。([0, 2, 4]) 19.表达式'ab' in 'acbed' 的值为________。(False) 20.Python 3.x语句print(1, 2, 3, sep=':') 的输出结果为____________。(1:2:3) 21.表达式int(4**0.5) 的值为____________。(2) 22.达式sorted([111, 2, 33], key=lambda x: -len(str(x))) 的值为____________。([111, 33, 2]) 23.已知列表对象x = ['11', '2', '3'],则表达式max(x) 的值为___________。('3') 24.表达式min(['11', '2', '3']) 的值为_________________。('11') 25.已知列表对象x = ['11', '2', '3'],则表达式max(x, key=len) 的值为___________。('11') 26.语句x = (3,) 执行后x的值为_______________。((3,)) 27.语句x = (3) 执行后x的值为________________。(3) 28.已知x = {1:2},那么执行语句x[2] = 3之后,x的值为________________。({1: 2, 2: 3}) 29.字典对象的_____________方法返回字典中的“键-值对”列表。(items()) 30.使用列表推导式得到100以内所有能被13整除的数的代码可以写作 ___________________________________。([i for i in range(100) if i%13==0]) 31.表达式3 ** 2 的值为_________。(9) 32.表达式3 * 2的值为___________。(6) 33.已知x = [3, 5, 7],那么执行语句x[len(x):] = [1, 2]之后,x的值为______________。([3, 5, 7, 1, 2]) 34.表达式list(zip([1,2], [3,4])) 的值为________________________。([(1, 3), (2, 4)]) 35.已知x = [1, 2, 3, 2, 3],执行语句x.pop() 之后,x的值为_____________。([1, 2, 3, 2]) 36.表达式[x for x in [1,2,3,4,5] if x<3] 的值为_____________________。([1, 2]) 37.表达式[index for index, value in enumerate([3,5,7,3,7]) if value == max([3,5,7,3,7])] 的值为 __________________。([2, 4])

相关文档
最新文档