GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python-docs-ja/faq/programming.po at 3.12 · python/python-docs-ja Expand file tree/ Copy pathprogramming.poMore file actions 4417 lines (3909 loc) · 181 KB / Copy pathprogramming.poFile metadata and controls4417 lines (3909 loc) · 181 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 # SOME DESCRIPTIVE TITLE. # Copyright (C) 2001 Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # # Translators: # mollinaca, 2021 # Mikami Akiko, 2021 # 菊池 健志, 2023 # tomo, 2023 # Arihiro TAKASE, 2023 # TENMYO Masakazu, 2024 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-16 14:19+0000\n" "PO-Revision-Date: 2021-06-28 00:52+0000\n" "Last-Translator: TENMYO Masakazu, 2024\n" "Language-Team: Japanese (https://app.transifex.com/python-doc/teams/5390/" "ja/)\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../faq/programming.rst:5 msgid "Programming FAQ" msgstr "プログラミング FAQ" #: ../../faq/programming.rst:8 msgid "Contents" msgstr "内容" #: ../../faq/programming.rst:12 msgid "General Questions" msgstr "一般的な質問" #: ../../faq/programming.rst:15 msgid "" "Is there a source code level debugger with breakpoints, single-stepping, " "etc.?" msgstr "" "ブレークポイントやシングルステップ実行などを備えたソースコードレベルデバッガ" "はありますか?" #: ../../faq/programming.rst:17 ../../faq/programming.rst:58 msgid "Yes." msgstr "はい。" #: ../../faq/programming.rst:19 msgid "" "Several debuggers for Python are described below, and the built-in function :" "func:`breakpoint` allows you to drop into any of them." msgstr "" "Python 用のデバッガについては次に解説してあり、組み込みの :func:`breakpoint` " "関数でそれらのデバッガに処理を移せます。" #: ../../faq/programming.rst:22 msgid "" "The pdb module is a simple but adequate console-mode debugger for Python. It " "is part of the standard Python library, and is :mod:`documented in the " "Library Reference Manual <pdb>`. You can also write your own debugger by " "using the code for pdb as an example." msgstr "" "pdb モジュールは簡素にして十分な Python のコンソールモードデバッガです。これ" "は Python の標準ライブラリに含まれているもので、 :mod:`ライブラリリファレンス" "マニュアルにドキュメントがあります <pdb>` 。 pdb のコードを手本にして自分用の" "デバッガを書くこともできます。" #: ../../faq/programming.rst:27 msgid "" "The IDLE interactive development environment, which is part of the standard " "Python distribution (normally available as `Tools/scripts/idle3 <https://" "github.com/python/cpython/blob/main/Tools/scripts/idle3>`_), includes a " "graphical debugger." msgstr "" "Python に同梱されている統合開発環境の IDLE は通常の Python の配布形態の一部 " "(普通は `Tools/scripts/idle3 <https://github.com/python/cpython/blob/main/" "Tools/scripts/idle3>`_ から利用可能) であり、グラフィカルなデバッガを含んでい" "ます。" #: ../../faq/programming.rst:32 msgid "" "PythonWin is a Python IDE that includes a GUI debugger based on pdb. The " "PythonWin debugger colors breakpoints and has quite a few cool features such " "as debugging non-PythonWin programs. PythonWin is available as part of " "`pywin32 <https://github.com/mhammond/pywin32>`_ project and as a part of " "the `ActivePython <https://www.activestate.com/products/python/>`_ " "distribution." msgstr "" "PythonWin は、pdb をベースとした GUI デバッガを含む Python IDE です。" "Pythonwin デバッガは、ブレークポイントの色付けや非 PythonWin プログラムのデ" "バッグなどの素敵な機能をたくさん持っています。PythonWin は `pywin32 " "<https://github.com/mhammond/pywin32>`_ プロジェクトの一部、あるいは " "`ActivePython <https://www.activestate.com/products/python/>`_ ディストリ" "ビューションの一部として利用可能です。" #: ../../faq/programming.rst:39 msgid "" "`Eric <https://eric-ide.python-projects.org/>`_ is an IDE built on PyQt and " "the Scintilla editing component." msgstr "" "`Eric <https://eric-ide.python-projects.org/>`_ は PyQt や Scintilla editing " "component をもとにした IDE です。" #: ../../faq/programming.rst:42 msgid "" "`trepan3k <https://github.com/rocky/python3-trepan/>`_ is a gdb-like " "debugger." msgstr "" "`trepan3k <https://github.com/rocky/python3-trepan/>`_ は gdbライクなデバッガ" "です。" #: ../../faq/programming.rst:44 msgid "" "`Visual Studio Code <https://code.visualstudio.com/>`_ is an IDE with " "debugging tools that integrates with version-control software." msgstr "" "`Visual Studio Code <https://code.visualstudio.com/>`_ はバージョン管理ソフト" "と一緒になったデバッグツールを備えた IDE です" #: ../../faq/programming.rst:47 msgid "" "There are a number of commercial Python IDEs that include graphical " "debuggers. They include:" msgstr "商業のグラフィカルデバッガ付き Python IDE もあります。例えば:" #: ../../faq/programming.rst:50 msgid "`Wing IDE <https://wingware.com/>`_" msgstr "`Wing IDE <https://wingware.com/>`_" #: ../../faq/programming.rst:51 msgid "`Komodo IDE <https://www.activestate.com/products/komodo-ide/>`_" msgstr "`Komodo IDE <https://www.activestate.com/products/komodo-ide/>`_" #: ../../faq/programming.rst:52 msgid "`PyCharm <https://www.jetbrains.com/pycharm/>`_" msgstr "`PyCharm <https://www.jetbrains.com/pycharm/>`_" #: ../../faq/programming.rst:56 msgid "Are there tools to help find bugs or perform static analysis?" msgstr "バグの発見や静的解析に役立つツールはありますか?" #: ../../faq/programming.rst:60 msgid "" "`Pylint <https://pylint.pycqa.org/en/latest/index.html>`_ and `Pyflakes " "<https://github.com/PyCQA/pyflakes>`_ do basic checking that will help you " "catch bugs sooner." msgstr "" "`Pylint <https://pylint.pycqa.org/en/latest/index.html>`_ と `Pyflakes " "<https://github.com/PyCQA/pyflakes>`_ は、バグの早期発見に役立つ基本的な" "チェックを行います。" #: ../../faq/programming.rst:64 msgid "" "Static type checkers such as `Mypy <https://mypy-lang.org/>`_, `Pyre " "<https://pyre-check.org/>`_, and `Pytype <https://github.com/google/" "pytype>`_ can check type hints in Python source code." msgstr "" "`Mypy <https://mypy-lang.org/>`_, `Pyre <https://pyre-check.org/>`_, `Pytype " "<https://github.com/google/pytype>`_ などの静的型チェッカーは、 Python ソース" "コードにある型ヒントをチェックできます。" #: ../../faq/programming.rst:73 msgid "How can I create a stand-alone binary from a Python script?" msgstr "どうしたら Python スクリプトからスタンドアロンバイナリを作れますか?" #: ../../faq/programming.rst:75 msgid "" "You don't need the ability to compile Python to C code if all you want is a " "stand-alone program that users can download and run without having to " "install the Python distribution first. There are a number of tools that " "determine the set of modules required by a program and bind these modules " "together with a Python binary to produce a single executable." msgstr "" "ユーザがダウンロードでき、Python ディストリビューションをインストールせずに実" "行できるようなスタンドアロンプログラムだけでいいなら、Python を C コードにコ" "ンパイルできなくても構いません。プログラムに対して必要なモジュールを選び、そ" "のモジュールを Python バイナリに束縛して一つの実行可能ファイルにまとめる多く" "のツールがあります。" #: ../../faq/programming.rst:81 msgid "" "One is to use the freeze tool, which is included in the Python source tree " "as `Tools/freeze <https://github.com/python/cpython/tree/main/Tools/" "freeze>`_. It converts Python byte code to C arrays; with a C compiler you " "can embed all your modules into a new program, which is then linked with the " "standard Python modules." msgstr "" "一つは freeze ツールで、Python ソースツリーに `Tools/freeze <https://github." "com/python/cpython/tree/main/Tools/freeze>`_ として含まれています。これは " "Python バイトコードを C 配列に変換します。すべてのモジュールを新しいプログラ" "ムに埋め込む C コンパイラで、そのプログラムは Python モジュールにリンクされま" "す。" #: ../../faq/programming.rst:87 msgid "" "It works by scanning your source recursively for import statements (in both " "forms) and looking for the modules in the standard Python path as well as in " "the source directory (for built-in modules). It then turns the bytecode for " "modules written in Python into C code (array initializers that can be turned " "into code objects using the marshal module) and creates a custom-made config " "file that only contains those built-in modules which are actually used in " "the program. It then compiles the generated C code and links it with the " "rest of the Python interpreter to form a self-contained binary which acts " "exactly like your script." msgstr "" "これはあなたのソースの (両方の形式の) import 文を再帰的にスキャンし、import " "されたモジュールを標準の Python パスと (組み込みモジュールのある) ソースディ" "レクトリから探します。そして Python で書かれたモジュールのバイトコードを C " "コード (marshal モジュールでコードオブジェクトに変換できる配列) に変換し、実" "際にそのプログラム内で使われている組み込みモジュールだけが含まれたカスタムメ" "イドの設定ファイルを作成します。そして生成された C コードをコンパイルして " "Python インタプリタの残りとリンクし、元のスクリプトと全く同じように動作する自" "己完結的なバイナリを形成します。" #: ../../faq/programming.rst:96 msgid "" "The following packages can help with the creation of console and GUI " "executables:" msgstr "以下のパッケージはコンソールやGUIの実行ファイル作成に役立ちます。" #: ../../faq/programming.rst:99 msgid "`Nuitka <https://nuitka.net/>`_ (Cross-platform)" msgstr "`Nuitka <https://nuitka.net/>`_ (Cross-platform)" #: ../../faq/programming.rst:100 msgid "`PyInstaller <https://pyinstaller.org/>`_ (Cross-platform)" msgstr "`PyInstaller <https://pyinstaller.org/>`_ (Cross-platform)" #: ../../faq/programming.rst:101 msgid "" "`PyOxidizer <https://pyoxidizer.readthedocs.io/en/stable/>`_ (Cross-platform)" msgstr "" "`PyOxidizer <https://pyoxidizer.readthedocs.io/en/stable/>`_ (Cross-platform)" #: ../../faq/programming.rst:102 msgid "" "`cx_Freeze <https://marcelotduarte.github.io/cx_Freeze/>`_ (Cross-platform)" msgstr "" "`cx_Freeze <https://marcelotduarte.github.io/cx_Freeze/>`_ (Cross-platform)" #: ../../faq/programming.rst:103 msgid "`py2app <https://github.com/ronaldoussoren/py2app>`_ (macOS only)" msgstr "`py2app <https://github.com/ronaldoussoren/py2app>`_ (macOS only)" #: ../../faq/programming.rst:104 msgid "`py2exe <https://www.py2exe.org/>`_ (Windows only)" msgstr "`py2exe <https://www.py2exe.org/>`_ (Windows only)" #: ../../faq/programming.rst:107 msgid "Are there coding standards or a style guide for Python programs?" msgstr "" "Python プログラムのためのコーディングスタンダードやスタイルガイドはあります" "か?" #: ../../faq/programming.rst:109 msgid "" "Yes. The coding style required for standard library modules is documented " "as :pep:`8`." msgstr "" "はい。標準ライブラリモジュールに求められるコーディングスタイルは :pep:`8` と" "して文書化されています。" #: ../../faq/programming.rst:114 msgid "Core Language" msgstr "コア言語" #: ../../faq/programming.rst:119 msgid "Why am I getting an UnboundLocalError when the variable has a value?" msgstr "なぜ変数に値があるのに UnboundLocalError が出るのですか?" #: ../../faq/programming.rst:121 msgid "" "It can be a surprise to get the :exc:`UnboundLocalError` in previously " "working code when it is modified by adding an assignment statement somewhere " "in the body of a function." msgstr "" "もともと動いていたコードが、関数の本体のどこかに代入文を加えるという変更をし" "たら :exc:`UnboundLocalError` を出すのには驚くかもしれません。" #: ../../faq/programming.rst:125 msgid "This code:" msgstr "このコード:" #: ../../faq/programming.rst:134 msgid "works, but this code:" msgstr "は動きますが、このコード:" #: ../../faq/programming.rst:141 msgid "results in an :exc:`!UnboundLocalError`:" msgstr "は :exc:`!UnboundLocalError` になります:" #: ../../faq/programming.rst:148 msgid "" "This is because when you make an assignment to a variable in a scope, that " "variable becomes local to that scope and shadows any similarly named " "variable in the outer scope. Since the last statement in foo assigns a new " "value to ``x``, the compiler recognizes it as a local variable. " "Consequently when the earlier ``print(x)`` attempts to print the " "uninitialized local variable and an error results." msgstr "" "これは、あるスコープの中で変数に代入を行うとき、その変数はそのスコープに対し" "てローカルになり、外のスコープにある同じ名前の変数を隠すからです。foo の最後" "の文が ``x`` に新しい値を代入しているので、コンパイラはこれをローカル変数であ" "ると認識します。その結果、先の ``print(x)`` が初期化されていないローカル変数" "を表示しようとして結果はエラーとなります。" #: ../../faq/programming.rst:155 msgid "" "In the example above you can access the outer scope variable by declaring it " "global:" msgstr "" "上の例では、グローバルであると宣言することで外のスコープにアクセスできます:" #: ../../faq/programming.rst:167 msgid "" "This explicit declaration is required in order to remind you that (unlike " "the superficially analogous situation with class and instance variables) you " "are actually modifying the value of the variable in the outer scope:" msgstr "" "この明示的な宣言は (表面的には似ているクラスとインスタンス変数の例とは違っ" "て) あなたは実際は他のスコープの変数の値を変えようとしているのだ、ということ" "を知らせるのに必要です:" #: ../../faq/programming.rst:174 msgid "" "You can do a similar thing in a nested scope using the :keyword:`nonlocal` " "keyword:" msgstr "" "同様のことを、ネストされたスコープで :keyword:`nonlocal` 予約語を使うことでも" "できます:" #: ../../faq/programming.rst:192 msgid "What are the rules for local and global variables in Python?" msgstr "Python のローカルとグローバル変数のルールは何ですか?" #: ../../faq/programming.rst:194 msgid "" "In Python, variables that are only referenced inside a function are " "implicitly global. If a variable is assigned a value anywhere within the " "function's body, it's assumed to be a local unless explicitly declared as " "global." msgstr "" "Python では、関数内で参照されるだけの変数は暗黙的にグローバルとなります。\n" "関数の本体のどこかで値が変数に代入されたなら、それは明示的にグローバルである" "と宣言されない限り、ローカルであるとみなされます。" #: ../../faq/programming.rst:198 msgid "" "Though a bit surprising at first, a moment's consideration explains this. " "On one hand, requiring :keyword:`global` for assigned variables provides a " "bar against unintended side-effects. On the other hand, if ``global`` was " "required for all global references, you'd be using ``global`` all the time. " "You'd have to declare as global every reference to a built-in function or to " "a component of an imported module. This clutter would defeat the usefulness " "of the ``global`` declaration for identifying side-effects." msgstr "" "最初はちょっと驚くでしょうが、少し考えると納得できます。一方では、代入された" "変数に :keyword:`global` を要求することで、意図しない副作用を防げます。他方で" "は、グローバルな参照の度に ``global`` が要求されてしまうと、 ``global`` を" "使ってばかりになってしまいます。ビルトイン関数やインポートされたモジュールの" "内容を参照するたびにグローバル宣言をしなければならないのです。その乱雑さは副" "作用を特定するための ``global`` 宣言の便利さよりも重大です。" #: ../../faq/programming.rst:208 msgid "" "Why do lambdas defined in a loop with different values all return the same " "result?" msgstr "" "ループの中で異なる値で定義されたラムダ式が、同じ値を返すのはなぜですか?" #: ../../faq/programming.rst:210 msgid "" "Assume you use a for loop to define a few different lambdas (or even plain " "functions), e.g.::" msgstr "" "for ループを使って、少しずつ異なるラムダを定義 (もしくは簡単な関数) するとし" "ます。例えば::" #: ../../faq/programming.rst:213 msgid "" ">>> squares = []\n" ">>> for x in range(5):\n" "... squares.append(lambda: x**2)" msgstr "" ">>> squares = []\n" ">>> for x in range(5):\n" "... squares.append(lambda: x**2)" #: ../../faq/programming.rst:217 msgid "" "This gives you a list that contains 5 lambdas that calculate ``x**2``. You " "might expect that, when called, they would return, respectively, ``0``, " "``1``, ``4``, ``9``, and ``16``. However, when you actually try you will " "see that they all return ``16``::" msgstr "" "これで ``x**2`` を計算する 5 つのラムダのリストが得られます。それらを呼び出し" "たとき、それぞれ ``0``、``1``、``4``、``9``、``16`` を返すと予想するかもしれ" "ません。しかし実際にやってみると、全て ``16`` が返ってくるのを目にするでしょ" "う::" #: ../../faq/programming.rst:222 msgid "" ">>> squares[2]()\n" "16\n" ">>> squares[4]()\n" "16" msgstr "" ">>> squares[2]()\n" "16\n" ">>> squares[4]()\n" "16" #: ../../faq/programming.rst:227 msgid "" "This happens because ``x`` is not local to the lambdas, but is defined in " "the outer scope, and it is accessed when the lambda is called --- not when " "it is defined. At the end of the loop, the value of ``x`` is ``4``, so all " "the functions now return ``4**2``, i.e. ``16``. You can also verify this by " "changing the value of ``x`` and see how the results of the lambdas change::" msgstr "" "これは、``x`` がラムダにとってのローカル変数ではなく外側のスコープで定義され" "ていて、ラムダが定義されたときでなく呼び出されたときにアクセスされるために起" "こります。ループが終わった時点では ``x`` は ``4`` であり、従って、全ての関数" "は ``4**2`` つまり ``16`` を返します。このことは ``x`` の値を変えてみることで" "検証でき、ラムダの返り値がどのように変わるのか観察できます::" #: ../../faq/programming.rst:233 msgid "" ">>> x = 8\n" ">>> squares[2]()\n" "64" msgstr "" ">>> x = 8\n" ">>> squares[2]()\n" "64" #: ../../faq/programming.rst:237 msgid "" "In order to avoid this, you need to save the values in variables local to " "the lambdas, so that they don't rely on the value of the global ``x``::" msgstr "" "これを避けるためには、グローバルの ``x`` の値に依存しないために、ラムダにとっ" "てのローカル変数に値を保存する必要があります::" #: ../../faq/programming.rst:240 msgid "" ">>> squares = []\n" ">>> for x in range(5):\n" "... squares.append(lambda n=x: n**2)" msgstr "" ">>> squares = []\n" ">>> for x in range(5):\n" "... squares.append(lambda n=x: n**2)" #: ../../faq/programming.rst:244 msgid "" "Here, ``n=x`` creates a new variable ``n`` local to the lambda and computed " "when the lambda is defined so that it has the same value that ``x`` had at " "that point in the loop. This means that the value of ``n`` will be ``0`` in " "the first lambda, ``1`` in the second, ``2`` in the third, and so on. " "Therefore each lambda will now return the correct result::" msgstr "" "ここで、``n=x`` は新しいラムダにとってのローカル変数 ``n`` を作成し、ラムダが" "定義されるときに計算されるので、ループのその時点での ``x`` と同じ値を持ってい" "ます。これは、1 つ目のラムダでは ``n`` の値は ``0`` になり、2 つ目では " "``1``、3 つ目では ``2`` 以下同様、となることを意味します。従って、それぞれの" "ラムダは今や正しい値を返すようになりました::" #: ../../faq/programming.rst:250 msgid "" ">>> squares[2]()\n" "4\n" ">>> squares[4]()\n" "16" msgstr "" ">>> squares[2]()\n" "4\n" ">>> squares[4]()\n" "16" #: ../../faq/programming.rst:255 msgid "" "Note that this behaviour is not peculiar to lambdas, but applies to regular " "functions too." msgstr "" "この動作はラムダに特有なものではなく、通常の関数にも適用されることに注意して" "ください。" #: ../../faq/programming.rst:260 msgid "How do I share global variables across modules?" msgstr "グローバル変数をモジュール間で共有するにはどうしたらいいですか?" #: ../../faq/programming.rst:262 msgid "" "The canonical way to share information across modules within a single " "program is to create a special module (often called config or cfg). Just " "import the config module in all modules of your application; the module then " "becomes available as a global name. Because there is only one instance of " "each module, any changes made to the module object get reflected " "everywhere. For example:" msgstr "" "一つのプログラムのモジュール間で情報を共有する正準な方法は、特別なモジュール " "(しばしば config や cfg と呼ばれる) を作ることです。単に設定モジュールをアプ" "リケーションのすべてのモジュールにインポートしてください。このモジュールはグ" "ローバルな名前として使えます。それぞれのモジュールのただ一つのインスタンスが" "あるので、設定モジュールオブジェクトに対するいかなる変更も全体に反映されま" "す。例えば:" #: ../../faq/programming.rst:268 msgid "config.py::" msgstr "config.py::" #: ../../faq/programming.rst:270 msgid "x = 0 # Default value of the 'x' configuration setting" msgstr "x = 0 # 'x' 設定のデフォルト値" #: ../../faq/programming.rst:272 msgid "mod.py::" msgstr "mod.py::" #: ../../faq/programming.rst:274 msgid "" "import config\n" "config.x = 1" msgstr "" "import config\n" "config.x = 1" #: ../../faq/programming.rst:277 msgid "main.py::" msgstr "main.py::" #: ../../faq/programming.rst:279 msgid "" "import config\n" "import mod\n" "print(config.x)" msgstr "" "import config\n" "import mod\n" "print(config.x)" #: ../../faq/programming.rst:283 msgid "" "Note that using a module is also the basis for implementing the singleton " "design pattern, for the same reason." msgstr "" "なお、同じ理由から、モジュールを使うということは、シングルトンデザインパター" "ンを実装することの基礎でもあります。" #: ../../faq/programming.rst:288 msgid "What are the \"best practices\" for using import in a module?" msgstr "モジュールで import を使う際の「ベストプラクティス」は何ですか?" #: ../../faq/programming.rst:290 msgid "" "In general, don't use ``from modulename import *``. Doing so clutters the " "importer's namespace, and makes it much harder for linters to detect " "undefined names." msgstr "" "一般的に ``from modulename import *`` を使ってはいけません。そのようにすると" "インポータの名前空間は汚染され、linter が未定義の名前を発見することが難しくな" "ります。" #: ../../faq/programming.rst:294 msgid "" "Import modules at the top of a file. Doing so makes it clear what other " "modules your code requires and avoids questions of whether the module name " "is in scope. Using one import per line makes it easy to add and delete " "module imports, but using multiple imports per line uses less screen space." msgstr "" "モジュールはファイルの先頭でインポートしてください。これによってコードが必要" "とする他のモジュールが明確になり、モジュール名がスコープに含まれるかどうかに" "迷わなくなります。行に一つのインポートにすると、モジュールのインポートの追加" "と削除が容易になりますが、行に複数のインポートにすると画面の領域が少なく済み" "ます。" #: ../../faq/programming.rst:299 msgid "It's good practice if you import modules in the following order:" msgstr "次の手順でモジュールをインポートするのが、良い習慣になります:" #: ../../faq/programming.rst:301 msgid "" "standard library modules -- e.g. :mod:`sys`, :mod:`os`, :mod:`argparse`, :" "mod:`re`" msgstr "" "標準ライブラリモジュール -- 例 :mod:`sys`、:mod:`os`、:mod:`argparse`、:mod:" "`re`" #: ../../faq/programming.rst:302 msgid "" "third-party library modules (anything installed in Python's site-packages " "directory) -- e.g. :mod:`!dateutil`, :mod:`!requests`, :mod:`!PIL.Image`" msgstr "" "サードパーティのライブラリモジュール (Python の site-packages ディレクトリに" "あるもの) -- 例 :mod:`!dateutil`、:mod:`!requests`、:mod:`!PIL.Image`、など" #: ../../faq/programming.rst:304 msgid "locally developed modules" msgstr "自前で開発したモジュール" #: ../../faq/programming.rst:306 msgid "" "It is sometimes necessary to move imports to a function or class to avoid " "problems with circular imports. Gordon McMillan says:" msgstr "" "循環参照の問題を避けるために、インポートを関数やクラスに移すことが必要なとき" "もあります。Gordon McMillan によれば:" #: ../../faq/programming.rst:309 msgid "" "Circular imports are fine where both modules use the \"import <module>\" " "form of import. They fail when the 2nd module wants to grab a name out of " "the first (\"from module import name\") and the import is at the top level. " "That's because names in the 1st are not yet available, because the first " "module is busy importing the 2nd." msgstr "" "循環参照は両方のモジュールが \"import <module>\" 形式のインポートを使っていれ" "ば大丈夫です。二つ目のモジュールが最初のモジュールから名前を確保しようとして " "(\"from module import name\")、そのインポートがトップレベルにあると駄目です。" "最初のモジュールが二つ目のモジュールをインポートするのに忙しくて、最初のモ" "ジュールの名前が利用可能になっていないからです。" #: ../../faq/programming.rst:315 msgid "" "In this case, if the second module is only used in one function, then the " "import can easily be moved into that function. By the time the import is " "called, the first module will have finished initializing, and the second " "module can do its import." msgstr "" "この状況では、二つ目のモジュールが一つの関数の中でのみ使われているならば、そ" "のインポートは簡単に関数の中に移せます。インポートが呼ばれたとき、最初のモ" "ジュールは初期化を完了していて、二つ目のモジュールは自分のインポートをできま" "す。" #: ../../faq/programming.rst:320 msgid "" "It may also be necessary to move imports out of the top level of code if " "some of the modules are platform-specific. In that case, it may not even be " "possible to import all of the modules at the top of the file. In this case, " "importing the correct modules in the corresponding platform-specific code is " "a good option." msgstr "" "プラットフォーム依存のモジュールがあるときには、インポートをトップレベルの外" "に動かすことも必要です。この場合、ファイルの先頭ではすべてのモジュールをイン" "ポートすることさえできないかもしれません。この場合は、対応するプラットフォー" "ムに合わせたコードで正しいモジュールをインポートすることを選ぶと良いです。" #: ../../faq/programming.rst:325 msgid "" "Only move imports into a local scope, such as inside a function definition, " "if it's necessary to solve a problem such as avoiding a circular import or " "are trying to reduce the initialization time of a module. This technique is " "especially helpful if many of the imports are unnecessary depending on how " "the program executes. You may also want to move imports into a function if " "the modules are only ever used in that function. Note that loading a module " "the first time may be expensive because of the one time initialization of " "the module, but loading a module multiple times is virtually free, costing " "only a couple of dictionary lookups. Even if the module name has gone out " "of scope, the module is probably available in :data:`sys.modules`." msgstr "" "循環参照の問題を避けたりモジュールの初期化にかかる時間を減らしたりしたいな" "ら、単にインポートを関数定義の中などのローカルなスコープに移してください。こ" "の手法は多くのインポートがプログラムがどのように実行されるかに依存しなくてよ" "いときに特に有効です。ある関数の中でのみモジュールが使われるのなら、インポー" "トをその関数の中に移すことを考えてもいいでしょう。なお、モジュールを読み込む" "最初の回はモジュールの初期化の時間のために高価になりえますが、複数回目にモ" "ジュールを読み込むのは事実上無料、辞書探索の数回のコストだけで済みます。モ" "ジュール名がスコープから外れてさえ、そのモジュールはおそらく :data:`sys." "modules` から利用できるでしょう。" #: ../../faq/programming.rst:338 msgid "Why are default values shared between objects?" msgstr "なぜオブジェクト間でデフォルト値が共有されるのですか?" #: ../../faq/programming.rst:340 msgid "" "This type of bug commonly bites neophyte programmers. Consider this " "function::" msgstr "" "この種のバグがよく初心者プログラマに噛み付きます。この関数を考えてみてくださ" "い::" #: ../../faq/programming.rst:342 msgid "" "def foo(mydict={}): # Danger: shared reference to one dict for all calls\n" " ... compute something ...\n" " mydict[key] = value\n" " return mydict" msgstr "" "def foo(mydict={}): # 危険:すべての呼び出しで単一辞書への参照が共有される\n" " ... compute something ...\n" " mydict[key] = value\n" " return mydict" #: ../../faq/programming.rst:347 msgid "" "The first time you call this function, ``mydict`` contains a single item. " "The second time, ``mydict`` contains two items because when ``foo()`` begins " "executing, ``mydict`` starts out with an item already in it." msgstr "" "初めてこの関数を呼び出した時、``mydict`` には一つの要素があります。二回目に" "は、``foo()`` が実行されるときに ``mydict`` には初めから一つの要素をすでに" "持っているので、``mydict`` には二つの要素があります。" #: ../../faq/programming.rst:351 msgid "" "It is often expected that a function call creates new objects for default " "values. This is not what happens. Default values are created exactly once, " "when the function is defined. If that object is changed, like the " "dictionary in this example, subsequent calls to the function will refer to " "this changed object." msgstr "" "関数の呼び出しによって、デフォルトの値に対する新しいオブジェクトが作られるの" "だと予想しがちです。実はそうなりません。デフォルト値は、関数が定義されたとき" "に一度だけ生成されます。この例の辞書のように、そのオブジェクトが変更されたと" "き、その後の関数の呼び出しは変更後のオブジェクトを参照します。" #: ../../faq/programming.rst:356 msgid "" "By definition, immutable objects such as numbers, strings, tuples, and " "``None``, are safe from change. Changes to mutable objects such as " "dictionaries, lists, and class instances can lead to confusion." msgstr "" "定義の時に、数、文字列、タプル、``None`` など、イミュータブルなオブジェクトを" "使うと変更される危険がありません。辞書、リスト、クラスインスタンスなどの" "ミュータブルなオブジェクトは混乱のもとです。" #: ../../faq/programming.rst:360 msgid "" "Because of this feature, it is good programming practice to not use mutable " "objects as default values. Instead, use ``None`` as the default value and " "inside the function, check if the parameter is ``None`` and create a new " "list/dictionary/whatever if it is. For example, don't write::" msgstr "" "この性質から、ミュータブルなオブジェクトをデフォルト値として使わないプログラ" "ミング手法がいいです。代わりに、``None`` をデフォルト値に使い、そのパラメタ" "が ``None`` である時にだけ、関数の内部で新しいリスト/辞書/その他をつくるよう" "にしてください。例えば、こう書かずに::" #: ../../faq/programming.rst:365 msgid "" "def foo(mydict={}):\n" " ..." msgstr "" "def foo(mydict={}):\n" " ..." #: ../../faq/programming.rst:368 msgid "but::" msgstr "代わりに::" #: ../../faq/programming.rst:370 msgid "" "def foo(mydict=None):\n" " if mydict is None:\n" " mydict = {} # create a new dict for local namespace" msgstr "" "def foo(mydict=None):\n" " if mydict is None:\n" " mydict = {} # ローカル名前空間での新辞書作成" #: ../../faq/programming.rst:374 msgid "" "This feature can be useful. When you have a function that's time-consuming " "to compute, a common technique is to cache the parameters and the resulting " "value of each call to the function, and return the cached value if the same " "value is requested again. This is called \"memoizing\", and can be " "implemented like this::" msgstr "" "この性質が便利なこともあります。時間のかかる計算を行う関数があるときに使われ" "る一般的な技法は、関数が呼び出されるごとにパラメータと結果の値をキャッシュ" "し、再び同じ値が要求されたらキャッシュされた値を返すというものです。これはメ" "モ化( \"memoizing\" )と呼ばれ、このように実装されます::" #: ../../faq/programming.rst:379 msgid "" "# Callers can only provide two parameters and optionally pass _cache by " "keyword\n" "def expensive(arg1, arg2, *, _cache={}):\n" " if (arg1, arg2) in _cache:\n" " return _cache[(arg1, arg2)]\n" "\n" " # Calculate the value\n" " result = ... expensive computation ...\n" " _cache[(arg1, arg2)] = result # Store result in the cache\n" " return result" msgstr "" "# 呼び出し元は2つのパラメータを指定でき、キーワードにより _cache をオプショ" "ンとして渡せる\n" "def expensive(arg1, arg2, *, _cache={}):\n" " if (arg1, arg2) in _cache:\n" " return _cache[(arg1, arg2)]\n" "\n" " # 値の算出\n" " result = ... 高コストな計算 ...\n" " _cache[(arg1, arg2)] = result # 結果をキャッシュに保持\n" " return result" #: ../../faq/programming.rst:389 msgid "" "You could use a global variable containing a dictionary instead of the " "default value; it's a matter of taste." msgstr "" "デフォルト値の代わりに、辞書を含むグローバル変数も使えます。これは好みの問題" "です。" #: ../../faq/programming.rst:394 msgid "" "How can I pass optional or keyword parameters from one function to another?" msgstr "" "オプションパラメータやキーワードパラメータを関数から関数へ渡すにはどうしたら" "いいですか?" #: ../../faq/programming.rst:396 msgid "" "Collect the arguments using the ``*`` and ``**`` specifiers in the " "function's parameter list; this gives you the positional arguments as a " "tuple and the keyword arguments as a dictionary. You can then pass these " "arguments when calling another function by using ``*`` and ``**``::" msgstr "" "関数のパラメータリストに引数を ``*`` と ``**`` 指定子 (specifier) で集めてく" "ださい。そうすれば、位置引数をタプルとして、キーワード引数を辞書として得られ" "ます。これで、他の関数を呼び出すときに ``*`` と ``**`` を使ってそれらの引数を" "渡せます::" #: ../../faq/programming.rst:401 msgid "" "def f(x, *args, **kwargs):\n" " ...\n" " kwargs['width'] = '14.3c'\n" " ...\n" " g(x, *args, **kwargs)" msgstr "" "def f(x, *args, **kwargs):\n" " ...\n" " kwargs['width'] = '14.3c'\n" " ...\n" " g(x, *args, **kwargs)" #: ../../faq/programming.rst:415 msgid "What is the difference between arguments and parameters?" msgstr "実引数と仮引数の違いは何ですか?" #: ../../faq/programming.rst:417 msgid "" ":term:`Parameters <parameter>` are defined by the names that appear in a " "function definition, whereas :term:`arguments <argument>` are the values " "actually passed to a function when calling it. Parameters define what :term:" "`kind of arguments <parameter>` a function can accept. For example, given " "the function definition::" msgstr "" ":term:`仮引数 (parameter) <parameter>` は関数定義に表れる名前で定義されるのに" "対し、 :term:`実引数 (argument) <argument>` は関数を呼び出すときに実際に渡す" "値のことです。仮引数は関数が受け取ることの出来る :term:`実引数の型 " "<parameter>` を定義します。例えば、以下のような関数定義があったとして::" #: ../../faq/programming.rst:423 msgid "" "def func(foo, bar=None, **kwargs):\n" " pass" msgstr "" "def func(foo, bar=None, **kwargs):\n" " pass" #: ../../faq/programming.rst:426 msgid "" "*foo*, *bar* and *kwargs* are parameters of ``func``. However, when calling " "``func``, for example::" msgstr "" "*foo*、*bar*、*kwargs* は ``func`` の仮引数です。一方、``func`` を呼び出すと" "きには、例えば::" #: ../../faq/programming.rst:429 msgid "func(42, bar=314, extra=somevar)" msgstr "func(42, bar=314, extra=somevar)" #: ../../faq/programming.rst:431 msgid "the values ``42``, ``314``, and ``somevar`` are arguments." msgstr "``42``、``314``、``somevar`` という値は実引数です。" #: ../../faq/programming.rst:435 msgid "Why did changing list 'y' also change list 'x'?" msgstr "なぜ list 'y' を変更すると list 'x' も変更されるのですか?" #: ../../faq/programming.rst:437 msgid "If you wrote code like::" msgstr "次のようなコードを書いたとします::" #: ../../faq/programming.rst:439 msgid "" ">>> x = []\n" ">>> y = x\n" ">>> y.append(10)\n" ">>> y\n" "[10]\n" ">>> x\n" "[10]" msgstr "" ">>> x = []\n" ">>> y = x\n" ">>> y.append(10)\n" ">>> y\n" "[10]\n" ">>> x\n" "[10]" #: ../../faq/programming.rst:447 msgid "" "you might be wondering why appending an element to ``y`` changed ``x`` too." msgstr "" "どうして ``y`` への要素の追加が ``x`` も変更してしまうのか疑問に思うかもしれ" "ません。" #: ../../faq/programming.rst:449 msgid "There are two factors that produce this result:" msgstr "このような結果になる2つの要因があります:" #: ../../faq/programming.rst:451 msgid "" "Variables are simply names that refer to objects. Doing ``y = x`` doesn't " "create a copy of the list -- it creates a new variable ``y`` that refers to " "the same object ``x`` refers to. This means that there is only one object " "(the list), and both ``x`` and ``y`` refer to it." msgstr "" "変数とは、単にオブジェクトを参照するための名前に過ぎません。 ``y = x`` とする" "ことは、リストのコピーを作りません -- それは ``x`` が参照するのと同じオブジェ" "クトを参照する新しい変数 ``y`` を作ります。つまり、あるのは一つのオブジェクト" "(この場合リスト)だけであって、 ``x`` と ``y`` の両方がそれを参照しているので" "す。" #: ../../faq/programming.rst:455 msgid "" "Lists are :term:`mutable`, which means that you can change their content." msgstr "リストは :term:`mutable` です。内容を変更出来る、ということです。" #: ../../faq/programming.rst:457 msgid "" "After the call to :meth:`!append`, the content of the mutable object has " "changed from ``[]`` to ``[10]``. Since both the variables refer to the same " "object, using either name accesses the modified value ``[10]``." msgstr "" ":meth:`!append` 呼び出しの後、ミュータブルオブジェクトの内容が ``[]`` から " "``[10]`` に変わります。 変数が同じオブジェクトを参照しているので、どちらの名" "前であっても変更された値 ``[10]`` にアクセスします。" #: ../../faq/programming.rst:461 msgid "If we instead assign an immutable object to ``x``::" msgstr "代わりに ``x`` にイミュータブルを代入すると::" #: ../../faq/programming.rst:463 msgid "" ">>> x = 5 # ints are immutable\n" ">>> y = x\n" ">>> x = x + 1 # 5 can't be mutated, we are creating a new object here\n" ">>> x\n" "6\n" ">>> y\n" "5" msgstr "" ">>> x = 5 # int はイミュータブル(不変)\n" ">>> y = x\n" ">>> x = x + 1 # 5 は変更不可。 ここでは新しいオブジェクトを作っている\n" ">>> x\n" "6\n" ">>> y\n" "5" #: ../../faq/programming.rst:471 msgid "" "we can see that in this case ``x`` and ``y`` are not equal anymore. This is " "because integers are :term:`immutable`, and when we do ``x = x + 1`` we are " "not mutating the int ``5`` by incrementing its value; instead, we are " "creating a new object (the int ``6``) and assigning it to ``x`` (that is, " "changing which object ``x`` refers to). After this assignment we have two " "objects (the ints ``6`` and ``5``) and two variables that refer to them " "(``x`` now refers to ``6`` but ``y`` still refers to ``5``)." msgstr "" "この場合ご覧の通り ``x`` と ``y`` はまったく同じではありませんね。これは整数" "が :term:`immutable` だからで、 ``x = x + 1`` は整数の ``5`` の値を変更してい" "るのではありません; 代わりに新しいオブジェクト(整数 ``6``)を作って ``x`` に代" "入しています (つまり ``x`` が参照するオブジェクトが変わります)。この代入の後" "では私たちは 2 つのオブジェクト(整数の ``6`` と ``5``)を持っていて、2 つの変" "数はそれらを参照しています(``x`` はいまや ``6`` を参照していますが ``y`` は " "``5`` を参照したままです)。" #: ../../faq/programming.rst:479 msgid "" "Some operations (for example ``y.append(10)`` and ``y.sort()``) mutate the " "object, whereas superficially similar operations (for example ``y = y + " "[10]`` and :func:`sorted(y) <sorted>`) create a new object. In general in " "Python (and in all cases in the standard library) a method that mutates an " "object will return ``None`` to help avoid getting the two types of " "operations confused. So if you mistakenly write ``y.sort()`` thinking it " |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |