• ベストアンサー

pythonにCでのexternはありますか

python初心者です。 a.py, b.pyがあります。 <a.py> import b bar=123 b.foo() <b.py> def foo  global bar  print bar 実行すると"123"が表示されず失敗します。 Cだとexternすれば外部参照で希望通りに成功します。 CとPythonは違うことは知っていますが、Pythonで実現できないでしょうか。 又は類似の手段はありますか。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

<a.py> import b b.bar=123 # b.fooと同様に、b.を指定する b.foo() <b.py> bar=0 # 代入文を書く。これで変数宣言になる。 def foo():  global bar # barを参照するだけなら不要。 # bar=4321 # 代入が最初にあるとローカル変数になるので、globalが必要に  print bar

remokon
質問者

お礼

返答ありがとうございます 今から試してみます。

関連するQ&A

  • pythonのCGIでページを遷移したい

    PythonのCGIserverを使っています。 /cgi-bin/hoge.py から /cgi-bin/foo.py へとページを遷移させたいのですが、うまくいきません。 どうすればいいですか? 以下、hoge.pyのソースです。 #!/usr/local/bin/python # coding: utf-8 (中略) print "Location: /cgi-bin/foo.py\n\n" 他の方法として、 import foo として、fooの関数やメソッドを呼ぶことも考えたのですが、 これもうまくいきません。。

    • 締切済み
    • CGI
  • python プログラミング

    pythonで、 def CircleArea(): a=r*r*3.14 print(r,a) というプログラムをunixのvimでcircle.pyで保存しました。 今度はこれをpythonで実行したいと思って, ターミナルに, circle.pyと入力しましたが, 実行しません。どうすればよろしいでしょうか? よろしくお願いします。

  • C言語のexternとアドレス渡しについて

    組み込み系です。 c言語でソフトを作っています。 初心者です。 例えば、Aさんがmain.cファイルにあるmain関数を作成し、 Bさんがsub.cファイルにあるsub関数を作成するとします。 mainで取得した複数のデータをsubに渡し、subが加工演算して、mainに返すとします。 複数のデータを渡す場合、引数でポインタ渡しが考えられます。 または、subがexternで外部参照する方法があります。 (複数データはグローバルでstaticを付けてないとします) 正直どちらのやり方が望ましいのでしょうか? お互いメリットデメリットがあるのでしょうか? 私の考えでは、externの場合、その複数データの名前が変わるとコンパイルエラーになる それぐらいしか思いつきません。 よろしくお願いします。

  • pythonがうまく起動できない

    12歳からはじめるゼロからのpythonを読みながらやっているのですが、 実行をしようとするとターミナルに chap2.py : 用語 'chap2.py' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。 名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1 + chap2.py + ~~~~~~~~ + CategoryInfo : ObjectNotFound: (chap2.py:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Suggestion [3,General]: コマンド chap2.py は見つかりませんでしたが、現在の場所に存在します。Windows PowerShell は、既定では、現在 の場所からコマンドを読み込みません。このコマンドを信頼する場合は、".\chap2.py" と入力してください。詳細については、"get-help about_Command_Precedence" と入力してヘルプを参照してください。 と表示されます。 ファイルの道順はきちんとしていると思います。 調べて関係ありそうなことをコピペ https://ja.stackoverflow.com/questions/42146/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%B8%88%E3%81%BF%E3%81%AEpython%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E8%AA%8D%E8%AD%98%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84ここから C:\Program Files (x86)\Common Files\Oracle\Java\javapath C:\WINDOWS\system32 C:\WINDOWS C:\WINDOWS\System32\Wbem C:\WINDOWS\System32\WindowsPowerShell\v1.0\ C:\WINDOWS\System32\OpenSSH\ C:\Users\NEC\AppData\Local\Programs\Python\Python37-32\Scripts\ C:\Users\NEC\AppData\Local\Programs\Python\Python37-32\ C:\Ruby26-x64\bin C:\Users\NEC\AppData\Local\Microsoft\WindowsApps C:\Users\NEC\AppData\Local\atom\bin C:\Users\NEC\AppData\Local\Programs\Microsoft VS Code\bin PS C:\Users\NEC\Desktop\desktop\programing\python> コマンドプロンプトでするとimport mymodule Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'mymodule'

  • Pythonでの関数呼び出し

    現在pythonでのプログラミングをしています。 例えば下のように関数を作るとglobal errorが発生します。 pythonでは引数で関数名を受け取らずに関数内から他の関数を呼び出すことはできないのでしょうか? よろしくお願いします。 ***************************************** def a():   b() def b():   print "test" a() *****************************************

  • pythonのimport の考え方 importと合わせて覚える事柄?

    python素人です。 いまいち、importの感覚がつかめていないのですが import aaaとした場合、使うときはaaa.function_nameとなりますが、クラスの場合はaaa.class_nameとなるのは何かカッコ悪く感じます。 素直に、class_nameで使えないのでしょうか? import aaa b = aaa.AAA() # aaa.py class AAA: a = 0

  • apacheとmod_pythonについて

    Python2.6、MacOSX10.6の環境でmod_pythonで動かしたいのですが、以下のようなエラーが出てしまいます。 MySQLdb関係のようですが、コマンドでpython -c "import MySQLdb" とした場合はエラーがでません。 解決法がさっぱりわからないのでわかる方教えていただけると助かります ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/WebServer/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib Referenced from: /Library/WebServer/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so Reason: image not found よくわかりませんが、 /Library/WebServer/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so は存在しているようです

  • jupyter notebookとpython

    jupyter notebookはインタラクティブにコマンドを入力しながら1行1行進めていくわけですが、一方pythonのソースは普通のプログラミングのようにエディットしていくのだと思います。そこで質問ですが、pythonのプログラム(abc.py)をjupyter notebookで使うとかその逆とかはどのようにして実現できるのでしょうか。abc.pyをエディタで開いてコピペしていくのでしょうか。 また、関連してお尋ねしますが、jupyter notebookを保存して終了するとき、ブラウザが閉じたあと、ターミナル上でプロンプトが戻って来ず、待ち状態になります。調べるとCtrrl+Cで打ち切るらしいのですが、最新のものでもそうなのでしょうか。

  • パソコンを変えるとpythonを使えなくなった

    スクリプトにimportしているものはtweepyのみです。 tweepyもpythonも最新のものをインストール済みです。 同じフォルダにある別の簡単なスクリプトは正常に動作しました。 PyScripterを使った時のエラーメッセージは以下のものとなります。 どうすれば改善されるか教えていただけないでしょうか。 Traceback (most recent call last): File "C:\Users\user7\Desktop\TC.py", line 19, in <module> tweets = api.user_timeline(Account, count=200, page=1, tweet_mode = 'extended') File "C:\Users\user7\AppData\Local\Programs\Python\Python310\lib\site-packages\tweepy\api.py", line 33, in wrapper return method(*args, **kwargs) File "C:\Users\user7\AppData\Local\Programs\Python\Python310\lib\site-packages\tweepy\api.py", line 46, in wrapper return method(*args, **kwargs) TypeError: API.user_timeline() takes 1 positional argument but 2 were given

  • python

    pythonについての質問です。 def S_sa(k=1) for step in xrange(k) : if step == 0 : print 'a' else print 'b' というコードがあって、なぜかprint aが実行されるのはなぜでしょうか? xrangeのreturnは1ではないのでしょうか?