python如何使用一个自己定义好的模块中的类?
Chain.py块(Module),
在代码义的Class Chain是在模块里定义的类
一种方法是from Chain import Chain
还种方法是用 a = Chain.Chain()
相当于块里索引出这个类
两种方法都可以。
python 模块文件放在哪儿
Python27\Lib\site-packages
source1是《python基础教程》上的一个例子,关于shelve模块的,求大侠解释下.
Python中有提到这一点(详见shelve模块文档)
Because of Python semantics, a shelf cannot know when a mutable persistent-dictionary entry is modified. By default modified objects are written only when assigned to the shelf.
大致意思如下:
一个shelf(对象)无法知道什么其中一个可变的项被修改了。默认情况下,一个被修改过的对象只有重新赋给shelf对象,这些更改才会生效。
Python文档中也给出了两种解决方案:
第一种:
把修改过的对象赋给shelve对象:s['x'] = s['x'].append('d')
或者,更清晰的形式:temp = s['x'] # 得到s['x']的拷贝,即一个mutable的列表对象
temp.append('d') # 在这个列表对象上进行append操作
s['x'] = temp # 重新写回去
第二种:s = shelve.open('temp.dat', writeback = True) # 指定writeback为True,默认为False
s['x'] = ['a', 'b', 'c']
s['x'].append('d')
s.close()
这样,你要访问的entry就会cached in memory,并在你调用sync或close方法的时候写入文件。
python中的模块,库,包有什么区别
1.python模:
python模块:包含并且有组织的代码片段为模块。
表现为:写的代码保存为。这个文件就是一个模块。sample.py 其中文件名smaple为模块名字。
关系图:
2.python包是:
包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。
通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。
常见问题:
引入某一特定路径下的模块
使用sys.path.append(yourmodulepath)
将一个路径加入到python系统路径下,避免每次通过代码指定路径
利用系统环境变量 export PYTHONPATH=$PYTHONPATH:yourmodulepath,
直接将这个路径链接到类似/Library/Python/2.7/site-packages目录下
好的建议:
经常使用if __name__ == '__main__',保证写包既可以import又可以独立运行,用于test。
多次import不会多次执行模块,只会执行一次。可以使用reload来强制运行模块,但不提倡。
常见的包结构如下:
package_a
├── __init__.py
├── module_a1.py
└── module_a2.py
package_b
├── __init__.py
├── module_b1.py
└── module_b2.py
main.py
如果main.py想要引用packagea中的模块modulea1,可以使用:
from package_a import module_a1
import package_a.module_a1
如果packagea中的modulea1需要引用packageb,那么默认情况下,python是找不到packageb。我们可以使用sys.path.append('../'),可以在packagea中的__init__.py添加这句话,然后该包下得所有module都添加* import __init_即可。
关系图:
3.库(library)
库的概念是具有相关功能模块的集合。这也是Python的一大特色之一,即具有强大的标准库、第三方库以及自定义模块。
版权声明:本站所有文章皆为原创,欢迎转载或转发,请保留网站地址和作者信息。