2007年01月13日 星期六 21:04
各位好! 我想请教一下,在Python中除了用lamda,还有什么方法能动态创建一个函数。 比如类似以下情形: #类A含有方法show a = A() a.show = "XXXXX" #用某种方法创建 a.show() -- Best Regards, Archer Ming Zhe Huang -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070113/97c39f9f/attachment.html
2007年01月13日 星期六 21:18
exec 'def foo(): pass' print type(foo) Mingzhe Huang wrote:: > 各位好! > > 我想请教一下,在Python中除了用lamda,还有什么方法能动态创建一个函数。 > > 比如类似以下情形: > #类A含有方法show > a = A() > a.show = "XXXXX" #用某种方法创建 > a.show() > > > > ------------------------------------------------------------------------ > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
2007年01月13日 星期六 21:20
exec 'def foo(): pass' print type(foo) Mingzhe Huang wrote:: > 各位好! > > 我想请教一下,在Python中除了用lamda,还有什么方法能动态创建一个函数。 > > 比如类似以下情形: > #类A含有方法show > a = A() > a.show = "XXXXX" #用某种方法创建 > a.show() > -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
2007年01月13日 星期六 21:52
谢谢!可是如果定义的函数比较复杂,语句超过一行呢? On 1/13/07, tocer <tocer.deng在gmail.com> wrote: > > exec 'def foo(): pass' > print type(foo) > > Mingzhe Huang wrote:: > > 各位好! > > > > 我想请教一下,在Python中除了用lamda,还有什么方法能动态创建一个函数。 > > > > 比如类似以下情形: > > #类A含有方法show > > a = A() > > a.show = "XXXXX" #用某种方法创建 > > a.show() > > > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -- > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Best Regards, Archer Ming Zhe Huang -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070113/ddbba83b/attachment.html
2007年01月13日 星期六 22:09
func = """ def foo(): a = 'hello' print a """ exec func foo() Mingzhe Huang wrote:: > 谢谢!可是如果定义的函数比较复杂,语句超过一行呢? > > On 1/13/07, tocer <tocer.deng在gmail.com> wrote: >> >> exec 'def foo(): pass' >> print type(foo) >> >> Mingzhe Huang wrote:: >> > 各位好! >> > >> > 我想请教一下,在Python中除了用lamda,还有什么方法能动态创建一个函数。 >> > >> > 比如类似以下情形: >> > #类A含有方法show >> > a = A() >> > a.show = "XXXXX" #用某种方法创建 >> > a.show() >> > >> > >> > >> > >> ------------------------------------------------------------------------ >> > >> > _______________________________________________ >> > python-chinese >> > Post: send python-chinese在lists.python.cn >> > Subscribe: send subscribe to python-chinese-request在lists.python.cn >> > Unsubscribe: send unsubscribe to >> python-chinese-request在lists.python.cn >> > Detail Info: http://python.cn/mailman/listinfo/python-chinese >> >> -- >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn >> _______________________________________________ >> python-chinese >> Post: send python-chinese在lists.python.cn >> Subscribe: send subscribe to python-chinese-request在lists.python.cn >> Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn >> Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
2007年01月13日 星期六 22:39
On 1/13/07, tocer <tocer.deng at gmail.com> wrote: > > func = """ > def foo(): > a = 'hello' > print a > """ > exec func > foo() > > Mingzhe Huang wrote:: > > 谢谢!可是如果定义的函数比较复杂,语句超过一行呢? > > > > On 1/13/07, tocer <tocer.deng at gmail.com> wrote: > >> > >> exec 'def foo(): pass' > >> print type(foo) > >> > >> Mingzhe Huang wrote:: > >> > 各位好! > >> > > >> > 我想请教一下,在Python中除了用lamda,还有什么方法能动态创建一个函数。 > >> > > >> > 比如类似以下情形: > >> > #类A含有方法show > >> > a = A() > >> > a.show = "XXXXX" #用某种方法创建 > >> > a.show() > >> > > >> > > >> > > >> > > >> > ------------------------------------------------------------------------ > >> > > >> > _______________________________________________ > >> > python-chinese > >> > Post: send python-chinese at lists.python.cn > >> > Subscribe: send subscribe to python-chinese-request at lists.python.cn > >> > Unsubscribe: send unsubscribe to > >> python-chinese-request at lists.python.cn > >> > Detail Info: http://python.cn/mailman/listinfo/python-chinese > >> > >> -- > >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > >> _______________________________________________ > >> python-chinese > >> Post: send python-chinese at lists.python.cn > >> Subscribe: send subscribe to python-chinese-request at lists.python.cn > >> Unsubscribe: send unsubscribe to > python-chinese-request at lists.python.cn > >> Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese at lists.python.cn > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -- > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese tocer 不要教坏小朋友 ;-) python 之所以限制 lambda 语法,就是因为不鼓励这种做法。 -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070113/fae84eae/attachment-0001.htm
2007年01月13日 星期六 23:17
呵呵,非常感谢! 其实只要那个格式字符串能正确包括函数定义的换行和缩进就可以了,是吧? On 1/13/07, yi huang <yi.codeplayer在gmail.com> wrote: > > On 1/13/07, tocer <tocer.deng在gmail.com> wrote: > > > > func = """ > > def foo(): > > a = 'hello' > > print a > > """ > > exec func > > foo() > > > > Mingzhe Huang wrote:: > > > 谢谢!可是如果定义的函数比较复杂,语句超过一行呢? > > > > > > On 1/13/07, tocer < tocer.deng在gmail.com> wrote: > > >> > > >> exec 'def foo(): pass' > > >> print type(foo) > > >> > > >> Mingzhe Huang wrote:: > > >> > 各位好! > > >> > > > >> > 我想请教一下,在Python中除了用lamda,还有什么方法能动态创建一个函数。 > > >> > > > >> > 比如类似以下情形: > > >> > #类A含有方法show > > >> > a = A() > > >> > a.show = "XXXXX" #用某种方法创建 > > >> > a.show() > > >> > > > >> > > > >> > > > >> > > > >> > > ------------------------------------------------------------------------ > > >> > > > >> > _______________________________________________ > > >> > python-chinese > > >> > Post: send python-chinese在lists.python.cn > > >> > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > >> > Unsubscribe: send unsubscribe to > > >> python-chinese-request在lists.python.cn > > >> > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > >> > > >> -- > > >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > > >> _______________________________________________ > > >> python-chinese > > >> Post: send python-chinese在lists.python.cn > > >> Subscribe: send subscribe to python-chinese-request在lists.python.cn > > >> Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > > > >> Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > _______________________________________________ > > > python-chinese > > > Post: send python-chinese在lists.python.cn > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > -- > > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > tocer 不要教坏小朋友 ;-) python 之所以限制 lambda 语法,就是因为不鼓励这种做法。 > > -- > http://codeplayer.blogspot.com/ > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -- Best Regards, Archer Ming Zhe Huang -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070113/5d64063a/attachment.html
2007年01月14日 星期日 13:58
呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好? yi huang wrote:: > tocer 不要教坏小朋友 ;-) python 之所以限制 lambda 语法,就是因为不鼓励这 > 种做法。 > > > ------------------------------------------------------------------------ > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
2007年01月14日 星期日 14:10
是 Mingzhe Huang wrote:: > 呵呵,非常感谢! > 其实只要那个格式字符串能正确包括函数定义的换行和缩进就可以了,是吧? -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
2007年01月14日 星期日 15:31
On 1/14/07, tocer <tocer.deng at gmail.com> wrote: > > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好? > > yi huang wrote:: > > tocer 不要教坏小朋友 ;-) python 之所以限制 lambda 语法,就是因为不鼓励这 > > 种做法。 > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese at lists.python.cn > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -- > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese 当然如果确实需要这种形式的话是可以,比如某一个函数是由用户输入的,那肯定只能 eval 。 但是其他使用 eval 的场景实在想不出来。 总之 eval 的坏处基本上和 c 里面的 define 一样。 我很想知道 huang mingzhe 兄的需求,我觉的肯定可以有更好的解决方案。 -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070114/29befc7a/attachment.html
2007年01月14日 星期日 17:25
我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。Java里有classloader机制,可以载入编译好的class文件。我在想,python里面应该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知道还会有其它的吗? On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: > > On 1/14/07, tocer <tocer.deng在gmail.com> wrote: > > > > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好? > > > > yi huang wrote:: > > > tocer 不要教坏小朋友 ;-) python 之所以限制 lambda 语法,就是因为不鼓励这 > > > 种做法。 > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > _______________________________________________ > > > python-chinese > > > Post: send python-chinese在lists.python.cn > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > -- > > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > 当然如果确实需要这种形式的话是可以,比如某一个函数是由用户输入的,那肯定只能 eval 。 > 但是其他使用 eval 的场景实在想不出来。 > 总之 eval 的坏处基本上和 c 里面的 define 一样。 > 我很想知道 huang mingzhe 兄的需求,我觉的肯定可以有更好的解决方案。 > > -- > http://codeplayer.blogspot.com/ > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -- Best Regards, Archer Ming Zhe Huang -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070114/cffa4a64/attachment.htm
2007年01月14日 星期日 17:43
On 1/14/07, Mingzhe Huang <archerzz at gmail.com> wrote: > > > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。Java里有classloader机制,可以载入编译好的class文件。我在想,python里面应该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知道还会有其它的吗? > 内置函数 __import__ ,可以先将插件所在目录加到 sys.path 中去。 -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070114/3161ea51/attachment.html
2007年01月14日 星期日 18:32
如果用的代码是 python 写的,直接 import 不就可以么?或者使用 mixin 方式处理插 件,可以参考 Ulipad 代码。 Mingzhe Huang wrote:: > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写 > 一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。 > Java里有classloader机制,可以载入编译好的class文件。我在想,python里面应 > 该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知道还 > 会有其它的吗? > > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: >> >> On 1/14/07, tocer <tocer.deng在gmail.com> wrote: >> > >> > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好? -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
2007年01月14日 星期日 23:21
但是import不是静态的关键字吗?我是希望能根据配置文件动态载入用户的代码。 比如这样: pluginString = "UserClass" import pluginString #这句话显然目前不行 ob = UserClass() 我的假设是引擎不清楚用户的代码,类似eclipse那样,完全是运行时载入的。Java有classloader,不知道python除了eval,还有别的什么吗? On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > > 如果用的代码是 python 写的,直接 import 不就可以么?或者使用 mixin 方式处理插 > 件,可以参考 Ulipad 代码。 > > Mingzhe Huang wrote:: > > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写 > > 一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。 > > Java里有classloader机制,可以载入编译好的class文件。我在想,python里面应 > > 该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知道还 > > 会有其它的吗? > > > > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: > >> > >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > >> > > >> > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好? > > -- > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Best Regards, Archer Ming Zhe Huang -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070114/c70e572f/attachment.html
2007年01月14日 星期日 23:25
__import__º¯Êý ·ÅÐÄ£¬¾Í¶¯Ì¬ÄÜÁ¦¶øÑÔ£¬Python»¹ÊÇÍêÈ«¿ÉÒÔÐÅÈεģ¬ÄãÒªÊDz»ÏÓÂé·³£¬×Ô¼ºÆ´×°×Ö½ÚÂ붼¿ÉÒÔ¡£ 2007/1/14, Mingzhe Huang <archerzz在gmail.com>: > > µ«ÊÇimport²»ÊǾ²Ì¬µÄ¹Ø¼ü×ÖÂð£¿ÎÒÊÇÏ£ÍûÄܸù¾ÝÅäÖÃÎļþ¶¯Ì¬ÔØÈëÓû§µÄ´úÂë¡£ > ±ÈÈçÕâÑù£º > pluginString = "UserClass" > import pluginString #Õâ¾ä»°ÏÔȻĿǰ²»ÐÐ > ob = UserClass() > > > ÎҵļÙÉèÊÇÒýÇæ²»Çå³þÓû§µÄ´úÂ룬ÀàËÆeclipseÄÇÑù£¬ÍêÈ«ÊÇÔËÐÐʱÔØÈëµÄ¡£JavaÓÐclassloader£¬²»ÖªµÀpython³ýÁËeval£¬»¹ÓбðµÄʲôÂ𣿠> > On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > > > > Èç¹ûÓõĴúÂëÊÇ python дµÄ£¬Ö±½Ó import ²»¾Í¿ÉÒÔô£¿»òÕßʹÓà mixin ·½Ê½´¦Àí²å > > ¼þ£¬¿ÉÒԲο¼ Ulipad ´úÂë¡£ > > > > Mingzhe Huang wrote:: > > > ÎÒÆäʵÏëдһ¸öÖ§³Ö²å¼þµÄÒýÇæ¡£Õâ¸öÒýÇæ´óÖµÄÔÀíºÍeclipse²î²»¶à£¬Óû§Ð´ > > > Ò»¸öxmlÅäÖÃÎļþ¸æËßÒýÇæһЩԪÊý¾Ý£¬È»ºóÒýÇæÈ¥¶ÁÈ¡Óû§±àдµÄ´úÂëÀ´ÔËÐС£ > > > JavaÀïÓÐclassloader»úÖÆ£¬¿ÉÒÔÔØÈë±àÒëºÃµÄclassÎļþ¡£ÎÒÔÚÏ룬pythonÀïÃæÓ¦ > > > ¸ÃÒ²ÓÐÀàËƶ¯Ì¬ÔØÈë´úÂëµÄ·½·¨à¶¡£ÎÒÒ»¿ªÊ¼ÏëµÄ¾ÍÊÇlambda»òÕßeval¡£²»ÖªµÀ»¹ > > > »áÓÐÆäËüµÄÂ𣿠> > > > > > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: > > >> > > >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > > >> > > > >> > ºÇºÇ£¬Ò²ÐíÓÐʱºòȷʵÐèÒªÕâÖÖ·½Ê½ÄØ¡£ÎÒ»¹Õæ²»ÖªµÀÕâÖÖ·½Ê½ÓÐʲô²»ºÃ£¿ > > > > -- > > Vim ÖÐÎÄ Google ÂÛ̳ http://groups.google.com/group/Vim-cn > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > -- > Best Regards, > > Archer > > Ming Zhe Huang > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -- Blog°á¼ÒÁË ÁõöÎ March.Liu -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070114/b63ffe46/attachment.htm
2007年01月14日 星期日 23:50
Óà compiler Ä£¿é¿´¿´£¬ ±ÈÖ±½Ó eval ºÃ£¬ÖÁÉÙ¿ÉÒÔÖªµÀ´íÎó¡£ ÔÚ07-1-14£¬ÁõöÎ <march.liu在gmail.com> дµÀ£º > > __import__º¯Êý > ·ÅÐÄ£¬¾Í¶¯Ì¬ÄÜÁ¦¶øÑÔ£¬Python»¹ÊÇÍêÈ«¿ÉÒÔÐÅÈεģ¬ÄãÒªÊDz»ÏÓÂé·³£¬×Ô¼ºÆ´×°×Ö½ÚÂ붼¿ÉÒÔ¡£ > > 2007/1/14, Mingzhe Huang <archerzz在gmail.com>: > > > > µ«ÊÇimport²»ÊǾ²Ì¬µÄ¹Ø¼ü×ÖÂð£¿ÎÒÊÇÏ£ÍûÄܸù¾ÝÅäÖÃÎļþ¶¯Ì¬ÔØÈëÓû§µÄ´úÂë¡£ > > ±ÈÈçÕâÑù£º > > pluginString = "UserClass" > > import pluginString #Õâ¾ä»°ÏÔȻĿǰ²»ÐÐ > > ob = UserClass() > > > > > > ÎҵļÙÉèÊÇÒýÇæ²»Çå³þÓû§µÄ´úÂ룬ÀàËÆeclipseÄÇÑù£¬ÍêÈ«ÊÇÔËÐÐʱÔØÈëµÄ¡£JavaÓÐclassloader£¬²»ÖªµÀpython³ýÁËeval£¬»¹ÓбðµÄʲôÂ𣿠> > > > On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > > > > > > Èç¹ûÓõĴúÂëÊÇ python дµÄ£¬Ö±½Ó import ²»¾Í¿ÉÒÔô£¿»òÕßʹÓà mixin ·½Ê½´¦Àí²å > > > ¼þ£¬¿ÉÒԲο¼ Ulipad ´úÂë¡£ > > > > > > Mingzhe Huang wrote:: > > > > ÎÒÆäʵÏëдһ¸öÖ§³Ö²å¼þµÄÒýÇæ¡£Õâ¸öÒýÇæ´óÖµÄÔÀíºÍeclipse²î²»¶à£¬Óû§Ð´ > > > > Ò»¸öxmlÅäÖÃÎļþ¸æËßÒýÇæһЩԪÊý¾Ý£¬È»ºóÒýÇæÈ¥¶ÁÈ¡Óû§±àдµÄ´úÂëÀ´ÔËÐС£ > > > > JavaÀïÓÐclassloader»úÖÆ£¬¿ÉÒÔÔØÈë±àÒëºÃµÄclassÎļþ¡£ÎÒÔÚÏ룬pythonÀïÃæÓ¦ > > > > ¸ÃÒ²ÓÐÀàËƶ¯Ì¬ÔØÈë´úÂëµÄ·½·¨à¶¡£ÎÒÒ»¿ªÊ¼ÏëµÄ¾ÍÊÇlambda»òÕßeval¡£²»ÖªµÀ»¹ > > > > »áÓÐÆäËüµÄÂ𣿠> > > > > > > > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: > > > >> > > > >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > > > >> > > > > >> > ºÇºÇ£¬Ò²ÐíÓÐʱºòȷʵÐèÒªÕâÖÖ·½Ê½ÄØ¡£ÎÒ»¹Õæ²»ÖªµÀÕâÖÖ·½Ê½ÓÐʲô²»ºÃ£¿ > > > > > > -- > > > Vim ÖÐÎÄ Google ÂÛ̳ http://groups.google.com/group/Vim-cn > > > _______________________________________________ > > > python-chinese > > > Post: send python-chinese在lists.python.cn > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > -- > > Best Regards, > > > > Archer > > > > Ming Zhe Huang > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to > > python-chinese-request在lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > -- > Blog°á¼ÒÁË > > ÁõöÎ > March.Liu > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -- http://hanzhupeng.googlepages.com/ -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070114/42c8b1f6/attachment-0001.htm
2007年01月15日 星期一 07:53
不知道这样行不行? pluginString = """ def hello(): return 'hello' """ print >> file('plugin.py', 'w'), pluginString if os.paht.exists('plugin.py'): import plugin plugin.hello() Mingzhe Huang wrote:: > 但是import不是静态的关键字吗?我是希望能根据配置文件动态载入用户的代码。 > 比如这样: > pluginString = "UserClass" > import pluginString #这句话显然目前不行 > ob = UserClass() > > 我的假设是引擎不清楚用户的代码,类似eclipse那样,完全是运行时载入的。 > Java有classloader,不知道python除了eval,还有别的什么吗? > > On 1/14/07, tocer < tocer.deng在gmail.com> wrote: >> >> 如果用的代码是 python 写的,直接 import 不就可以么?或者使用 mixin 方 >> 式处理插 >> 件,可以参考 Ulipad 代码。 >> >> Mingzhe Huang wrote:: >> > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写 >> > 一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。 >> > Java里有classloader机制,可以载入编译好的class文件。我在想,python里 >> 面应 >> > 该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知 >> 道还 >> > 会有其它的吗? >> > >> > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: >> >> >> >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote: >> >> > >> >> > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好? >> >> -- >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn >> _______________________________________________ >> python-chinese >> Post: send python-chinese在lists.python.cn >> Subscribe: send subscribe to python-chinese-request在lists.python.cn >> Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn >> Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
2007年01月15日 星期一 11:46
问题是import后面的名字是在运行时才能得到的。请看下面: pluginString = """ def hello(): return 'hello' """ print >> file('plugin.py', 'w'), pluginString if os.paht.exists('plugin.py'): import plugin #plugin这里是静态的,如果plugin是个字符串变量,会报错 plugin.hello() 貌似用eval是最快捷的,呵呵。等会我试试看刘鑫兄弟的方法。 On 1/15/07, tocer <tocer.deng在gmail.com> wrote: > > 不知道这样行不行? > > pluginString = """ > > def hello(): > return 'hello' > """ > print >> file('plugin.py', 'w'), pluginString > if os.paht.exists('plugin.py'): > import plugin > plugin.hello() > > > Mingzhe Huang wrote:: > > 但是import不是静态的关键字吗?我是希望能根据配置文件动态载入用户的代码。 > > 比如这样: > > pluginString = "UserClass" > > import pluginString #这句话显然目前不行 > > ob = UserClass() > > > > 我的假设是引擎不清楚用户的代码,类似eclipse那样,完全是运行时载入的。 > > Java有classloader,不知道python除了eval,还有别的什么吗? > > > > On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > >> > >> 如果用的代码是 python 写的,直接 import 不就可以么?或者使用 mixin 方 > >> 式处理插 > >> 件,可以参考 Ulipad 代码。 > >> > >> Mingzhe Huang wrote:: > >> > 我其实想写一个支持插件的引擎。这个引擎大致的原理和eclipse差不多,用户写 > >> > 一个xml配置文件告诉引擎一些元数据,然后引擎去读取用户编写的代码来运行。 > >> > Java里有classloader机制,可以载入编译好的class文件。我在想,python里 > >> 面应 > >> > 该也有类似动态载入代码的方法喽。我一开始想的就是lambda或者eval。不知 > >> 道还 > >> > 会有其它的吗? > >> > > >> > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: > >> >> > >> >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > >> >> > > >> >> > 呵呵,也许有时候确实需要这种方式呢。我还真不知道这种方式有什么不好? > >> > >> -- > >> Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > >> _______________________________________________ > >> python-chinese > >> Post: send python-chinese在lists.python.cn > >> Subscribe: send subscribe to python-chinese-request在lists.python.cn > >> Unsubscribe: send unsubscribe to > python-chinese-request在lists.python.cn > >> Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -- > Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Best Regards, Archer Ming Zhe Huang -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070115/761fc39e/attachment.htm
2007年01月15日 星期一 12:31
2007/1/15, Mingzhe Huang <archerzz在gmail.com>: > > ÎÊÌâÊÇimportºóÃæµÄÃû×ÖÊÇÔÚÔËÐÐʱ²ÅÄܵõ½µÄ¡£Çë¿´ÏÂÃ棺 > > pluginString = """ > > def hello(): > return 'hello' > """ > print >> file('plugin.py', 'w'), pluginString > if os.paht.exists ('plugin.py'): > import plugin #pluginÕâÀïÊǾ²Ì¬µÄ£¬Èç¹ûpluginÊǸö×Ö·û´®±äÁ¿£¬»á±¨´í > plugin.hello () ´ËÈË×ê½øÅ£½Ç¼â¶ùÁË.... -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070115/1ce60227/attachment.htm
2007年01月15日 星期一 12:43
ÎҵĽâ¾ö·½°¸£º def ImportModule(moduleName): """Import and return a module from given module name. @type moduleName: String @param moduleName: The given module name. @rtype: Module @return: The imported module. """ module = __import__(moduleName) components = moduleName.split('.') for component in components[1:]: module = getattr(module, component) return module def FromModuleImportObject(moduleName, objectName): """Import and return an object from a given module name. @type moduleName: String @param moduleName: The given module name. @type objectName: String @param objectName: The given object name. @rtype: Object @return: The imported object. """ module = ImportModule(moduleName) return module.__getattribute__(objectName) ʹÓ÷½·¨£º try: m = ImportModule('foo.bar') o = FromModuleImportObject('foo.bar', 'foobar') except: # do something you want pass 2007/1/15, Mingzhe Huang <archerzz在gmail.com>: > > ÎÊÌâÊÇimportºóÃæµÄÃû×ÖÊÇÔÚÔËÐÐʱ²ÅÄܵõ½µÄ¡£Çë¿´ÏÂÃ棺 > > pluginString = """ > > def hello(): > return 'hello' > """ > print >> file('plugin.py', 'w'), pluginString > if os.paht.exists ('plugin.py'): > import plugin #pluginÕâÀïÊǾ²Ì¬µÄ£¬Èç¹ûpluginÊǸö×Ö·û´®±äÁ¿£¬»á±¨´í > plugin.hello () > > òËÆÓÃevalÊÇ×î¿ì½ÝµÄ£¬ºÇºÇ¡£µÈ»áÎÒÊÔÊÔ¿´ÁõöÎÐֵܵķ½·¨¡£ > > On 1/15/07, tocer <tocer.deng在gmail.com> wrote: > > > > ²»ÖªµÀÕâÑùÐв»ÐУ¿ > > > > pluginString = """ > > > > def hello(): > > return 'hello' > > """ > > print >> file('plugin.py', 'w'), pluginString > > if os.paht.exists('plugin.py '): > > import plugin > > plugin.hello() > > > > > > Mingzhe Huang wrote:: > > > µ«ÊÇimport²»ÊǾ²Ì¬µÄ¹Ø¼ü×ÖÂð£¿ÎÒÊÇÏ£ÍûÄܸù¾ÝÅäÖÃÎļþ¶¯Ì¬ÔØÈëÓû§µÄ´úÂë¡£ > > > ±ÈÈçÕâÑù£º > > > pluginString = "UserClass" > > > import pluginString #Õâ¾ä»°ÏÔȻĿǰ²»ÐÐ > > > ob = UserClass() > > > > > > ÎҵļÙÉèÊÇÒýÇæ²»Çå³þÓû§µÄ´úÂ룬ÀàËÆeclipseÄÇÑù£¬ÍêÈ«ÊÇÔËÐÐʱÔØÈëµÄ¡£ > > > JavaÓÐclassloader£¬²»ÖªµÀpython³ýÁËeval£¬»¹ÓбðµÄʲôÂ𣿠> > > > > > On 1/14/07, tocer < tocer.deng在gmail.com > wrote: > > >> > > >> Èç¹ûÓõĴúÂëÊÇ python дµÄ£¬Ö±½Ó import ²»¾Í¿ÉÒÔô£¿»òÕßʹÓà mixin ·½ > > >> ʽ´¦Àí²å > > >> ¼þ£¬¿ÉÒԲο¼ Ulipad ´úÂë¡£ > > >> > > >> Mingzhe Huang wrote:: > > >> > ÎÒÆäʵÏëдһ¸öÖ§³Ö²å¼þµÄÒýÇæ¡£Õâ¸öÒýÇæ´óÖµÄÔÀíºÍeclipse²î²»¶à£¬Óû§Ð´ > > >> > Ò»¸öxmlÅäÖÃÎļþ¸æËßÒýÇæһЩԪÊý¾Ý£¬È»ºóÒýÇæÈ¥¶ÁÈ¡Óû§±àдµÄ´úÂëÀ´ÔËÐС£ > > >> > JavaÀïÓÐclassloader»úÖÆ£¬¿ÉÒÔÔØÈë±àÒëºÃµÄclassÎļþ¡£ÎÒÔÚÏ룬pythonÀï > > >> ÃæÓ¦ > > >> > ¸ÃÒ²ÓÐÀàËƶ¯Ì¬ÔØÈë´úÂëµÄ·½·¨à¶¡£ÎÒÒ»¿ªÊ¼ÏëµÄ¾ÍÊÇlambda»òÕßeval¡£²»Öª > > >> µÀ»¹ > > >> > »áÓÐÆäËüµÄÂ𣿠> > >> > > > >> > On 1/14/07, yi huang <yi.codeplayer在gmail.com> wrote: > > >> >> > > >> >> On 1/14/07, tocer < tocer.deng在gmail.com> wrote: > > >> >> > > > >> >> > ºÇºÇ£¬Ò²ÐíÓÐʱºòȷʵÐèÒªÕâÖÖ·½Ê½ÄØ¡£ÎÒ»¹Õæ²»ÖªµÀÕâÖÖ·½Ê½ÓÐʲô²»ºÃ£¿ > > >> > > >> -- > > >> Vim ÖÐÎÄ Google ÂÛ̳ http://groups.google.com/group/Vim-cn > > >> _______________________________________________ > > >> python-chinese > > >> Post: send python-chinese在lists.python.cn > > >> Subscribe: send subscribe to python-chinese-request在lists.python.cn > > >> Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > >> Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > _______________________________________________ > > > python-chinese > > > Post: send python-chinese在lists.python.cn > > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > -- > > Vim ÖÐÎÄ Google ÂÛ̳ http://groups.google.com/group/Vim-cn > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > -- > Best Regards, > > Archer > > Ming Zhe Huang > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -- ѦôÓ ÓиûÔÅ·½ÄÜÓÐÊÕ»ñ£¬Ô¸ÄÜÓëÄú˳ÐÄЯÊÖ¹²³É³¤¡£ -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070115/fe64368f/attachment-0001.html
2007年01月15日 星期一 12:49
呵呵,不好意思,刚才搞错了,import可以加变量名的,也就是动态的载入! On 1/15/07, 头太晕 <torrycn在gmail.com> wrote: > > > > 2007/1/15, Mingzhe Huang <archerzz在gmail.com>: > > > > 问题是import后面的名字是在运行时才能得到的。请看下面: > > > > pluginString = """ > > > > def hello(): > > return 'hello' > > """ > > print >> file('plugin.py', 'w'), pluginString > > if os.paht.exists ('plugin.py'): > > import plugin #plugin这里是静态的,如果plugin是个字符串变量,会报错 > > plugin.hello () > > > 此人钻进牛角尖儿了.... > > > > > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -- Best Regards, Archer Ming Zhe Huang -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070115/e7e70dfa/attachment.html
Zeuux © 2025
京ICP备05028076号