From: "佐藤 大輔" Date: 2000-07-13T18:39:06+09:00 Subject: [ruby-list:23835] Re: net/smtp 佐藤です。 At Thu, 13 Jul 2000 18:16:26 +0900, Minero Aoki wrote: > 将来 module に入れるものがたくさん出てきて、何も考えずにそういうのを > 複数 include した時に意図せず重なってしまう場合が出てくるんでないか、 > というのがぼくの懸念です。 pythonについて調べた際に同じような話が出てきてます。 意味ないでしょうが実例。 #test1.py def huga(a): print ("t1: huga %s" % a) def hoge(b): print ("t2: hoge %s" % b) #test2.py def huga(a): print ("t2: huga %s" % a) def foo(b): print ("t2: foo %s" % b) #test.py from test1 import * from test2 import * huga("hogege") ご覧の通り、test1.py/test2.pyではhuga()が重複してます。 これらを同じディレクトリに置いて、 % python test.py t2: huga hogege importの順番をtest2->test1にしてみると % python test.py t1: huga hogege javaは厳密にチェックしてたようですが、pythonでは現在の名前空間に既存のも のがあったとしても、上書きしちゃうのですね。 おおらかな仕様。ですね。 だからって、 import test1 import test2 huga("hogege") にしちゃうとエラーでして、やはりtest1.huga()という形で呼ばないといけません。 個人的には引数の違いが無い場合はやはりjava並みにエラーを出してもらいたい ところです。 -- みらいちゃんを愛する人に悪い人はいません(c)おかのまりも 「みらいちゃん」って誰?な方は http://www.wdic.org で検索だだだ 佐藤 大輔/densuke@ga2.so-net.ne.jp