《程序员》杂志关于Python技术专题的规划

tangtao 2003-12-31 05:59:59
作为一个Python语言的爱好者,我目睹了最近的两年国外类似于Python、Ruby这样面向对象的动态语言获得的空前发展。无论是构建如Zope般大型系统,还是BitTorrent般轻量级软件,Python均有非常好的表现。优雅简洁的语法,“完全”的面向对象所引发的崭新的开发思想,极佳的开发效率,统一自然的接口规则。Python的优点实在无法一一述尽。

反观国内,Python语言的发展依然是不温不火。由于不是属于所谓.net和Java的主流体系,Python远远没有受到应有的重视。国内的关于Python语言的图书,几乎是出一本赔一本,读者寥寥。在CSDN这个国内最大的开发者论坛,关于Python的讨论也还停留在“原始阶段”。

作为国内最重要的开发者杂志之一的《程序员》虽然也偶有Python或ruby的相关报道,但是受很多条件限制,实际做的并不是很令人满意。作为杂志技术编辑,我也觉得非常的遗憾。

在新的一年里,我希望能为国内在Python领域的发展做一些力所能及的事情。我现在正在策划一个Python相关的技术专题,希望能将Python语言的魅力能够真实的展现在广大的开发者面前。我希望得到广大Python爱好者的支持,帮助我一起做好这个Python的技术专题。

具体关于Python专题的规划我目前想的不是特别清楚。大致的想法是通过系列文章能够表现Python语言的“完全面向对象”以及“完全动态”的特征所引起python在开发中具有特色的开发思路、开发方法和设计模式;能够表现出因为Python丰富的数据结构和丰富的标准库所带来的高效的开发能力;还有python在2.2/2.3中所发展的新的语法特征(比如yield语法)以及诸如boost.python等优秀的C/C++扩展接口。

希望朋友们多提意见!!!
...全文
86 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
iBear 2004-03-19
  • 打赏
  • 举报
回复
python确实是一个好东东,用它来做一些日常管理方面的小工具也确实很方便
steel007 2004-03-18
  • 打赏
  • 举报
回复
我是python初学者~~热烈欢迎programmer能有这么一个专题~
arya 2004-03-17
  • 打赏
  • 举报
回复
国外现在对Python的关注越来越多了。新闻组上找python/Zope程序员的也越来越多了。国内在这方面慢了很多。很多人都没听说过Python。事实上我认为应该在高中和大学计算机系新生中用Python开课讲编程。把Python作为CS的入门语言。一是简单,二是强大。基本上一门语言囊括编程语言的几乎所有模式: 过程,面向对象,函数式。而且我认为Python程序代表了真正的好程序。一个一头就扎入C指针细节的人没有5年的功夫是写不出好程序的。而Python可以从一开始就培养良好的编程习惯表达习惯。最后,Python没有复杂的编译问题,初学者不用陷入细节的泥沼,成就感很强。有了程序员的基础,才会有广泛的应用。因为程序是要人来维护的。
张海霖 2004-03-16
  • 打赏
  • 举报
回复
应该把python独立出一个专题。
xsinuz 2004-03-16
  • 打赏
  • 举报
回复
国内对开放源代码的兴趣还差了一些,向这些脚本的语言关注的就少了。
最多使用的可能就是Asp和Php,Jsp这些东西了,Zope本身是用得就少,
所以Python也就在程序员的兴趣爱好层次发展,没有了经济的动力,
是很难推动它的发展的。
但这也是两方面的事情,使用的人越少,最后也就越少关注。
象我也就是快速建模的时候用它,修改方便,但交给用户这个东西,
大多是不能认可的。
liusong1234 2004-02-12
  • 打赏
  • 举报
回复
在python2.2上测试,无异常出现。
>>> go()
in a
in b
in bb
in aa
>>> b = B()
in a
in b
第一次由于实例化一个对象后变量跳出作用域,实例引用数变为0,立即清除(__del__)
第二次由于有b变量引用新生成的实例,所以没有调用(__del__)


另:最近对python也挺感兴趣。python对于重构、模式、面向层面方面的优势都很多。
如:
class T(object):
__metaclass__ = SingletonMetaClass #1
xx = property(...) #2

T.__bases__ = T.__bases__ + (A,) #3 mixin

T.__dict__['addFunc'] = A.__dict__['addFunc'] #4

tempT = T
class T(tempT):
...
#5

yield #6

class func:
def __call__(...) #7

......
如有时间可以写篇短文啦:)
IntoPython 2004-02-07
  • 打赏
  • 举报
回复
up
dmchun 2004-02-05
  • 打赏
  • 举报
回复
非常喜欢楼上的解释和思路:))
dmchun 2004-02-04
  • 打赏
  • 举报
回复
tangtao (skywalker) ,请问一下,为什么程序员杂志的<自由与繁荣的国度>系列到现在还没有完?

还有您为什么会对偏偏PYTHON感兴趣:))
dmchun 2004-02-04
  • 打赏
  • 举报
回复
NetSnail(过水无痕)
基类的同名函数要写在函数的第一个语句...

===========
跟这里throw AttributeError没什么关系吧.
而且,"写在函数的第一个语句",也不合逻辑.

我觉得是Python的一个不重要的Bug.因为它只在全局对象时才会发生.
所以
#go()# ok
这行就没有问题.
xyzxyz1111 2004-02-04
  • 打赏
  • 举报
回复
在python 的源代码是由这个方法处理module cleanup的
void _PyModule_Clear(PyObject *m)
{
/* To make the execution order of destructors for global
objects a bit more predictable, we first zap all objects
whose name starts with a single underscore, before we clear
the entire dictionary. We zap them by replacing them with
None, rather than deleting them from the dictionary, to
avoid rehashing the dictionary (to some extent). */

int pos;
PyObject *key, *value;
PyObject *d;

d = ((PyModuleObject *)m)->md_dict;
if (d == NULL)
return;

/* First, clear only names starting with a single underscore */
pos = 0;
while (PyDict_Next(d, &pos, &key, &value)) {
if (value != Py_None && PyString_Check(key)) {
char *s = PyString_AsString(key);
if (s[0] == '_' && s[1] != '_') {
if (Py_VerboseFlag > 1)
PySys_WriteStderr("# clear[1] %s\n", s);
PyDict_SetItem(d, key, Py_None);
}
}
}

/* Next, clear all names except for __builtins__ */
pos = 0;
while (PyDict_Next(d, &pos, &key, &value)) {
if (value != Py_None && PyString_Check(key)) {
char *s = PyString_AsString(key);
PySys_WriteStderr("clear object %s\n", s);
if (s[0] != '_' || strcmp(s, "__builtins__") != 0) {
if (Py_VerboseFlag > 1)
PySys_WriteStderr("# clear[2] %s\n", s);
PyDict_SetItem(d, key, Py_None);
}
}
}

/* Note: we leave __builtins__ in place, so that destructors
of non-global objects defined in this module can still use
builtins, in particularly 'None'. */

}
可以看到最后清除对象的顺序是对象字典顺序,这就带来了不定性.在你的例子里是先清楚A,B再清除b,你如果把类名和变量名字改一下就可能有不同的结果.
另外如果把变量的名字前加一个'_',就一定没有问题
xyzxyz1111 2004-02-04
  • 打赏
  • 举报
回复
to dmchun(mumu) :
在你的模块最后添加一行如下
class A:
def __init__ (self):
print 'in a'

def __del__ (self):
print 'in aa'

class B(A):
def __init__ (self):
A.__init__(self)
print 'in b'

def __del__ (self):
print 'in bb'

A.__del__(self) #A is None!!!
def go ():
a = B()

#go()# ok
b = B()# error
del b
就没有问题
我认为是当整个模块结束的时候,同一般直接调用del 方法的不一样,他会对其中的每个对象析构,顺序是先A后B(类也是对象),这样在析构B的时候,A的类对象已经变成了None
hchi0118 2004-02-03
  • 打赏
  • 举报
回复
支持楼主的观点
NetSnail 2004-02-03
  • 打赏
  • 举报
回复
楼上的楼上代码
要写成这样:
class B(A):
def __init__ (self):
A.__init__(self)
print 'in b'

def __del__ (self):
A.__del__(self)
print 'in bb'
基类的同名函数要写在函数的第一个语句...
wlabmed 2004-01-31
  • 打赏
  • 举报
回复
我刚在第二书店买了二本python的书!希望能有更多的“老师”!
dmchun 2004-01-30
  • 打赏
  • 举报
回复
有人能告訴我,下面的__DEL__方法爲何無效嗎?我從PYTHON2.0開始接觸PYTHON,但這個問題一直沒有找到好的解決.

class A:
def __init__ (self):
print 'in a'

def __del__ (self):
print 'in aa'

class B(A):
def __init__ (self):
A.__init__(self)
print 'in b'

def __del__ (self):
print 'in bb'
A.__del__(self)# why execption?

def go ():
a = B()

#go()# ok
b = B()# error
taowen2002 2004-01-22
  • 打赏
  • 举报
回复
不要为了介绍python和开专题。而应该更加专注于如何对于开发工作带来便利。以及遴选出比较好的库的组合。
shhgs 2004-01-18
  • 打赏
  • 举报
回复
ibm有一个developer network。它的Linux专栏下面的“可爱的Python”不错。David Metz好像是他们的特约撰稿人,经常能看到他写的一些文章。不是说有多大的深度,主要是开阔眼界。
tangtao 2004-01-18
  • 打赏
  • 举报
回复
谢谢大家的关注。

大家也知道,csdn与电子出版社合资成立了一家图书出版公司。我们内部也曾经讨论python的图书出版问题。不过据调查,现在python图书出版情况都很不理想。所以做python的图书估计近期内操作起来都比较困难。我也是想通过在杂志上对python的宣传来推动python语言在国内的发展。希望大家多多提建议

这里先祝大家春节愉快。顺利到家!!

明日我也启程回家了
IntoPython 2004-01-17
  • 打赏
  • 举报
回复
re
加载更多回复(8)

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧