python标准库对象导⼊语句_python基础教程总结9——模块,
进制转换器apk包,标准库
1. 模块
在python中⼀个⽂件可以被看成⼀个独⽴模块,⽽包对应着⽂件夹,模块把python代码分成⼀些有组织的代码段,通过导⼊的⽅式实现代码重⽤。
冒泡排序法c语言实现1.1 模块搜索路径
导⼊模块时,是按照sys.path变量的值搜索模块,sys.path的值是包含每⼀个独⽴路径的列表,包含当前⽬录、python安装⽬录、PYTHONPATH环境变量,搜索顺序按照路径在列表中的顺序(⼀般当前⽬录优先级最⾼)。
1 >>>import sys
2 >>>sys.path
3 ['', 'E:\\Python27\\Lib\\idlelib', 'C:\\windows\\system32\\python27.zip',
'E:\\Python27\\DLLs', 'E:\\Python27\\lib', 'E:\\Python27\\lib\\plat-win', 'E:\\Python27\\lib\\lib-tk', 'E:\\Python27',
'E:\\Python27\\lib\\site-packages']
1.2 导⼊模块
1.2.1 使⽤import语句导⼊模块
有下⾯两种⽅式
import module1
import module2
import module3python基础代码语句
import module1,module2,module3
这两种⽅式的效果是⼀样的,但是第⼀种可读性⽐第⼆种好,推荐按照下⾯的顺序导⼊模块,并且⼀般在⽂件⾸部导⼊所有的模块
python标准库
第三⽅模块
应⽤程序⾃定义模块
也可以在函数内部导⼊模块,这样被导⼊的模块作⽤域是局部的
1.2.2 使⽤from-import语句导⼊模块的属性
单⾏导⼊
1 from module import name1,name2,name3
多⾏导⼊
from module import name1,name2,\
name3
导⼊全部属性(由于容易覆盖当前名称空间中现有的名字,所以⼀般不推荐使⽤,适合模块中变量名很长并且变量很多的情况)
1 from module import *
如果你不想某个模块的属性被以上⽅法导⼊,可以给该属性名称前加⼀个下划线(_test),如果需要取消隐藏,可以显⽰的导⼊该属性(from module import _test)
1.2.3 扩展的import语句
使⽤⾃定义的名称替换模块的原始名称
import simplejson as json
模块被导⼊时,加载的时候模块顶层代码会被执⾏,如:设定全局变量、类和函数的声明等,所以应该把代码尽量封装到类和函数中。⼀个模块⽆论被导⼊多少次,只加载⼀次,可以防⽌多次导⼊时代码被多次执⾏。
1.2.4 重新导⼊模块reroad
1)import
import作⽤:导⼊/引⼊⼀个python标准模块,其中包括.py⽂件、带有__init__.py⽂件的⽬录。
import module_name[,module1,...]
from module import *|child[,child1,...]
说明:多次重复使⽤import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引⽤到本地变量环境。
a.py
#!/usr/bin/env python
#encoding: utf-8
import os
print 'in a',id(os)
m.py
#!/usr/bin/env python
#encoding: utf-8
import a #第⼀次会打印a⾥⾯的语句
import os #再次导⼊os后,其内存地址和a⾥⾯的是⼀样的,因此这⾥只是对os的本地引⽤
print 'in c',id(os)
import a #第⼆次不会打印a⾥⾯的语句,因为没有重新加载
#结果
in a 23124144
in c 23124144
2)reroad
作⽤:对已经加载的模块进⾏重新加载,⼀般⽤于原模块有变化等特殊情况,reload前该模块必须已经import过。
import os
reload(os)
说明:reload会重新加载已加载的模块,但原来已经使⽤的实例还是会使⽤旧的模块,⽽新⽣产的实例会使⽤新的模块;
reload后还是⽤原来的内存地址;
不能⽀持from。。import。。格式的模块进⾏重新加载。
1 a.py
2 #!/usr/bin/env python
3 #encoding: utf-8
4 import os
5 print 'in a',id(os)6
7 m.py8 #!/usr/bin/env python9 #encoding: utf-8
10 import a #第⼀次import会打印a⾥⾯的语句11 print id(a) #原来a的内存地址12 reload(a) #第⼆次reload还会打印a⾥⾯的语句,因为有重新加载13 print id(a) #reload后a的内存地址,和原来⼀样
#结果
>>>
in a 23058608
29617680
in a 23058608
29617680
>>>
2. 包
包是另外⼀种模块,可以包含其他模块;
模块存储在⽂件中时(拓展名.py),包就是模块所在的⽬录;
包必须包括⼀个__init__.py的⽂件(模块),若将其作为普通模块导⼊⽂件内容就是包的内容
#名为constants的包,⽂件constants/__init__.py包括语句PI=3.14
import constants
print constants.PI
为了将模块放置在包内,直接把模块放在包⽬录内即可:
3. 标准库
3.1 sys
sys模块能够访问与Python解释器紧密联系的变量和函数,下⾯是 sys 模块中⼀些常⽤的函数和变量:
argv 命令⾏参数,包括脚本名称
exit([arg]) 退出当前程序,可选参数给定的返回值或错误信息
modules 隐射模块名字到载⼊模块的字典
path 查看模块所在⽬录的⽬录名列表
platform 类似sunos5或win32平台标识符
stdin 标准输⼊流——⼀个类⽂件(file-like)对象
stdout 标准输出流——⼀个类⽂件对象
stderr 标准错误流——⼀个类⽂件对象
1)sys.argv
下⾯的⽰例通过argv获取命令⾏参数,然后将其反转:
import sys
args = sys.argv[1:] # 跳过第⼀个元素(脚本名称)
print ' '.join(args)java基础txt下载
2)sys.platform
我们想实现⼀个清除终端,linux下⽤clear, windows下⽤cls
ostype=sys.platform
if ostype==”linux” or ostype==”linux2”:
Cmd=”clear”
else:
Cmd=”cls”
3)it(n)
执⾏⾄主程序的末尾时,解释器会⾃动退出. 但是如果需要中途退出程序, 你可以调⽤it 函数, 它带有⼀个可选的整数参数返回给调⽤它的程序.这意味着你可以在主程序中捕获对it 的调⽤。(注:0是正常退出,其他为不正常,可抛异常事件供捕获!)
1 import sys2
3 def exitfunc(value):
4 '''Clear function'''
5 print value
it(0)7
8 print "hello"
9
10 try:it(1)12 except SystemExit,value:13 exitfunc(value)14
15 print "come?"十大前端开发框架
16
17 #输出结果:18 [root@databak scripts]# python test.py19 hello20 1
4)sys.stdin,sys.stdout,sys.stderr
stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,⽽print 不能满⾜你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输⼊到其它设备( device ), 或者以⾮标准的⽅式处理它们
sys.stdout 与 print
当我们在 Python 中打印对象调⽤ print obj 时候,事实上是调⽤了 sys.stdout.write(obj+'\n');
print 将你需要的内容打印到了控制台,然后追加了⼀个换⾏符;
print 会调⽤ sys.stdout 的 write ⽅法
#等价
sys.stdout.write('hello'+'\n')
print 'hello'
sys.stdin 与 raw_input
当我们⽤ raw_input('Input promption: ') 时,事实上是先把提⽰信息输出,然后捕获输⼊
#等价
hi=raw_input('hello? ')
print 'hello? ', #comma to stay in the same line
hi=adline()[:-1] # -1 to discard the '\n' in input stream
从控制台重定向到⽂件
原始的 sys.stdout 指向控制台;
如果把⽂件的对象的引⽤赋给 sys.stdout,那么 print 调⽤的就是⽂件对象的 write ⽅法;
f_handler=open('out.log', 'w')
sys.stdout=f_handler
print 'hello'
# this hello can't be viewed on concole
# this hello is in file out.log
记住,如果你还想在控制台打印⼀些东西的话,最好先将原始的控制台对象引⽤保存下来,向⽂件中打印之后再恢复 sys.stdout
__console__=sys.stdout
# redirection start
valuechanged# ...
# redirection end
sys.stdout=__console__
同时重定向到控制台和⽂件
希望打印的内容⼀⽅⾯输出到控制台,另⼀⽅⾯输出到⽂件作为⽇志保存
1 import sys2
3 class__redirection__:4
5 def __init__(self):
6 self.buff=''
7 self.__console__=sys.stdout8
9 def write(self, output_stream):10 self.buff+=output_stream11

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。