-
-
Notifications
You must be signed in to change notification settings - Fork 211
/
Copy path3.2.po
4497 lines (3921 loc) · 150 KB
/
3.2.po
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
# Copyright (C) 2001-2024, Python Software Foundation
# This file is distributed under the same license as the Python package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Python 3.13\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-10 00:13+0000\n"
"PO-Revision-Date: 2018-05-23 16:20+0000\n"
"Last-Translator: Adrian Liaw <[email protected]>\n"
"Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-"
"tw)\n"
"Language: zh_TW\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"
#: ../../whatsnew/3.2.rst:3
msgid "What's New In Python 3.2"
msgstr "Python 3.2 有什麼新功能"
#: ../../whatsnew/3.2.rst:0
msgid "Author"
msgstr "作者"
#: ../../whatsnew/3.2.rst:5
msgid "Raymond Hettinger"
msgstr "Raymond Hettinger"
#: ../../whatsnew/3.2.rst:51
msgid ""
"This article explains the new features in Python 3.2 as compared to 3.1. "
"Python 3.2 was released on February 20, 2011. It focuses on a few highlights "
"and gives a few examples. For full details, see the `Misc/NEWS <https://"
"github.com/python/cpython/blob/076ca6c3c8df3030307e548d9be792ce3c1c6eea/Misc/"
"NEWS>`__ file."
msgstr ""
#: ../../whatsnew/3.2.rst:60
msgid ":pep:`392` - Python 3.2 Release Schedule"
msgstr ":pep:`392` - Python 3.2 發佈時程"
#: ../../whatsnew/3.2.rst:64
msgid "PEP 384: Defining a Stable ABI"
msgstr ""
#: ../../whatsnew/3.2.rst:66
msgid ""
"In the past, extension modules built for one Python version were often not "
"usable with other Python versions. Particularly on Windows, every feature "
"release of Python required rebuilding all extension modules that one wanted "
"to use. This requirement was the result of the free access to Python "
"interpreter internals that extension modules could use."
msgstr ""
#: ../../whatsnew/3.2.rst:72
msgid ""
"With Python 3.2, an alternative approach becomes available: extension "
"modules which restrict themselves to a limited API (by defining "
"Py_LIMITED_API) cannot use many of the internals, but are constrained to a "
"set of API functions that are promised to be stable for several releases. As "
"a consequence, extension modules built for 3.2 in that mode will also work "
"with 3.3, 3.4, and so on. Extension modules that make use of details of "
"memory structures can still be built, but will need to be recompiled for "
"every feature release."
msgstr ""
#: ../../whatsnew/3.2.rst:83
msgid ":pep:`384` - Defining a Stable ABI"
msgstr ":pep:`384` - 定義一個穩定 ABI"
#: ../../whatsnew/3.2.rst:84
msgid "PEP written by Martin von Löwis."
msgstr "由 Martin von Löwis 撰寫 PEP。"
#: ../../whatsnew/3.2.rst:88
msgid "PEP 389: Argparse Command Line Parsing Module"
msgstr "PEP 389: Argparse 命令列剖析模組"
#: ../../whatsnew/3.2.rst:90
msgid ""
"A new module for command line parsing, :mod:`argparse`, was introduced to "
"overcome the limitations of :mod:`optparse` which did not provide support "
"for positional arguments (not just options), subcommands, required options "
"and other common patterns of specifying and validating options."
msgstr ""
#: ../../whatsnew/3.2.rst:95
msgid ""
"This module has already had widespread success in the community as a third-"
"party module. Being more fully featured than its predecessor, the :mod:"
"`argparse` module is now the preferred module for command-line processing. "
"The older module is still being kept available because of the substantial "
"amount of legacy code that depends on it."
msgstr ""
#: ../../whatsnew/3.2.rst:101
msgid ""
"Here's an annotated example parser showing features like limiting results to "
"a set of choices, specifying a *metavar* in the help screen, validating that "
"one or more positional arguments is present, and making a required option::"
msgstr ""
#: ../../whatsnew/3.2.rst:105
msgid ""
"import argparse\n"
"parser = argparse.ArgumentParser(\n"
" description = 'Manage servers', # main description for "
"help\n"
" epilog = 'Tested on Solaris and Linux') # displayed after help\n"
"parser.add_argument('action', # argument name\n"
" choices = ['deploy', 'start', 'stop'], # three allowed values\n"
" help = 'action on each target') # help msg\n"
"parser.add_argument('targets',\n"
" metavar = 'HOSTNAME', # var name used in help "
"msg\n"
" nargs = '+', # require one or more "
"targets\n"
" help = 'url for target machines') # help msg explanation\n"
"parser.add_argument('-u', '--user', # -u or --user option\n"
" required = True, # make it a required "
"argument\n"
" help = 'login as user')"
msgstr ""
#: ../../whatsnew/3.2.rst:120
msgid "Example of calling the parser on a command string::"
msgstr ""
#: ../../whatsnew/3.2.rst:122
msgid ""
">>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain'\n"
">>> result = parser.parse_args(cmd.split())\n"
">>> result.action\n"
"'deploy'\n"
">>> result.targets\n"
"['sneezy.example.com', 'sleepy.example.com']\n"
">>> result.user\n"
"'skycaptain'"
msgstr ""
">>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain'\n"
">>> result = parser.parse_args(cmd.split())\n"
">>> result.action\n"
"'deploy'\n"
">>> result.targets\n"
"['sneezy.example.com', 'sleepy.example.com']\n"
">>> result.user\n"
"'skycaptain'"
#: ../../whatsnew/3.2.rst:131
msgid "Example of the parser's automatically generated help::"
msgstr ""
#: ../../whatsnew/3.2.rst:133
msgid ""
">>> parser.parse_args('-h'.split())\n"
"\n"
"usage: manage_cloud.py [-h] -u USER\n"
" {deploy,start,stop} HOSTNAME [HOSTNAME ...]\n"
"\n"
"Manage servers\n"
"\n"
"positional arguments:\n"
" {deploy,start,stop} action on each target\n"
" HOSTNAME url for target machines\n"
"\n"
"optional arguments:\n"
" -h, --help show this help message and exit\n"
" -u USER, --user USER login as user\n"
"\n"
"Tested on Solaris and Linux"
msgstr ""
">>> parser.parse_args('-h'.split())\n"
"\n"
"usage: manage_cloud.py [-h] -u USER\n"
" {deploy,start,stop} HOSTNAME [HOSTNAME ...]\n"
"\n"
"Manage servers\n"
"\n"
"positional arguments:\n"
" {deploy,start,stop} action on each target\n"
" HOSTNAME url for target machines\n"
"\n"
"optional arguments:\n"
" -h, --help show this help message and exit\n"
" -u USER, --user USER login as user\n"
"\n"
"Tested on Solaris and Linux"
#: ../../whatsnew/3.2.rst:150
msgid ""
"An especially nice :mod:`argparse` feature is the ability to define "
"subparsers, each with their own argument patterns and help displays::"
msgstr ""
#: ../../whatsnew/3.2.rst:153
msgid ""
"import argparse\n"
"parser = argparse.ArgumentParser(prog='HELM')\n"
"subparsers = parser.add_subparsers()\n"
"\n"
"parser_l = subparsers.add_parser('launch', help='Launch Control') # first "
"subgroup\n"
"parser_l.add_argument('-m', '--missiles', action='store_true')\n"
"parser_l.add_argument('-t', '--torpedos', action='store_true')\n"
"\n"
"parser_m = subparsers.add_parser('move', help='Move Vessel', # second "
"subgroup\n"
" aliases=('steer', 'turn')) # "
"equivalent names\n"
"parser_m.add_argument('-c', '--course', type=int, required=True)\n"
"parser_m.add_argument('-s', '--speed', type=int, default=0)"
msgstr ""
#: ../../whatsnew/3.2.rst:166
msgid ""
"$ ./helm.py --help # top level help (launch and "
"move)\n"
"$ ./helm.py launch --help # help for launch options\n"
"$ ./helm.py launch --missiles # set missiles=True and "
"torpedos=False\n"
"$ ./helm.py steer --course 180 --speed 5 # set movement parameters"
msgstr ""
#: ../../whatsnew/3.2.rst:175
msgid ":pep:`389` - New Command Line Parsing Module"
msgstr ":pep:`389` - 新命令列剖析模組"
#: ../../whatsnew/3.2.rst:176
msgid "PEP written by Steven Bethard."
msgstr "由 Steven Bethard 撰寫 PEP。"
#: ../../whatsnew/3.2.rst:178
msgid ""
":ref:`upgrading-optparse-code` for details on the differences from :mod:"
"`optparse`."
msgstr ""
#: ../../whatsnew/3.2.rst:182
msgid "PEP 391: Dictionary Based Configuration for Logging"
msgstr ""
#: ../../whatsnew/3.2.rst:184
msgid ""
"The :mod:`logging` module provided two kinds of configuration, one style "
"with function calls for each option or another style driven by an external "
"file saved in a :mod:`configparser` format. Those options did not provide "
"the flexibility to create configurations from JSON or YAML files, nor did "
"they support incremental configuration, which is needed for specifying "
"logger options from a command line."
msgstr ""
#: ../../whatsnew/3.2.rst:191
msgid ""
"To support a more flexible style, the module now offers :func:`logging."
"config.dictConfig` for specifying logging configuration with plain Python "
"dictionaries. The configuration options include formatters, handlers, "
"filters, and loggers. Here's a working example of a configuration "
"dictionary::"
msgstr ""
#: ../../whatsnew/3.2.rst:197
msgid ""
"{\"version\": 1,\n"
" \"formatters\": {\"brief\": {\"format\": \"%(levelname)-8s: %(name)-15s: "
"%(message)s\"},\n"
" \"full\": {\"format\": \"%(asctime)s %(name)-15s "
"%(levelname)-8s %(message)s\"}\n"
" },\n"
" \"handlers\": {\"console\": {\n"
" \"class\": \"logging.StreamHandler\",\n"
" \"formatter\": \"brief\",\n"
" \"level\": \"INFO\",\n"
" \"stream\": \"ext://sys.stdout\"},\n"
" \"console_priority\": {\n"
" \"class\": \"logging.StreamHandler\",\n"
" \"formatter\": \"full\",\n"
" \"level\": \"ERROR\",\n"
" \"stream\": \"ext://sys.stderr\"}\n"
" },\n"
" \"root\": {\"level\": \"DEBUG\", \"handlers\": [\"console\", "
"\"console_priority\"]}}"
msgstr ""
"{\"version\": 1,\n"
" \"formatters\": {\"brief\": {\"format\": \"%(levelname)-8s: %(name)-15s: "
"%(message)s\"},\n"
" \"full\": {\"format\": \"%(asctime)s %(name)-15s "
"%(levelname)-8s %(message)s\"}\n"
" },\n"
" \"handlers\": {\"console\": {\n"
" \"class\": \"logging.StreamHandler\",\n"
" \"formatter\": \"brief\",\n"
" \"level\": \"INFO\",\n"
" \"stream\": \"ext://sys.stdout\"},\n"
" \"console_priority\": {\n"
" \"class\": \"logging.StreamHandler\",\n"
" \"formatter\": \"full\",\n"
" \"level\": \"ERROR\",\n"
" \"stream\": \"ext://sys.stderr\"}\n"
" },\n"
" \"root\": {\"level\": \"DEBUG\", \"handlers\": [\"console\", "
"\"console_priority\"]}}"
#: ../../whatsnew/3.2.rst:215
msgid ""
"If that dictionary is stored in a file called :file:`conf.json`, it can be "
"loaded and called with code like this::"
msgstr ""
#: ../../whatsnew/3.2.rst:218
msgid ""
">>> import json, logging.config\n"
">>> with open('conf.json') as f:\n"
"... conf = json.load(f)\n"
"...\n"
">>> logging.config.dictConfig(conf)\n"
">>> logging.info(\"Transaction completed normally\")\n"
"INFO : root : Transaction completed normally\n"
">>> logging.critical(\"Abnormal termination\")\n"
"2011-02-17 11:14:36,694 root CRITICAL Abnormal termination"
msgstr ""
#: ../../whatsnew/3.2.rst:230
msgid ":pep:`391` - Dictionary Based Configuration for Logging"
msgstr ""
#: ../../whatsnew/3.2.rst:231
msgid "PEP written by Vinay Sajip."
msgstr "由 Vinay Sajip 撰寫 PEP。"
#: ../../whatsnew/3.2.rst:235
msgid "PEP 3148: The ``concurrent.futures`` module"
msgstr "PEP 3148:``concurrent.futures`` 模組"
#: ../../whatsnew/3.2.rst:237
msgid ""
"Code for creating and managing concurrency is being collected in a new top-"
"level namespace, *concurrent*. Its first member is a *futures* package "
"which provides a uniform high-level interface for managing threads and "
"processes."
msgstr ""
#: ../../whatsnew/3.2.rst:241
msgid ""
"The design for :mod:`concurrent.futures` was inspired by the *java.util."
"concurrent* package. In that model, a running call and its result are "
"represented by a :class:`~concurrent.futures.Future` object that abstracts "
"features common to threads, processes, and remote procedure calls. That "
"object supports status checks (running or done), timeouts, cancellations, "
"adding callbacks, and access to results or exceptions."
msgstr ""
#: ../../whatsnew/3.2.rst:248
msgid ""
"The primary offering of the new module is a pair of executor classes for "
"launching and managing calls. The goal of the executors is to make it "
"easier to use existing tools for making parallel calls. They save the effort "
"needed to setup a pool of resources, launch the calls, create a results "
"queue, add time-out handling, and limit the total number of threads, "
"processes, or remote procedure calls."
msgstr ""
#: ../../whatsnew/3.2.rst:255
msgid ""
"Ideally, each application should share a single executor across multiple "
"components so that process and thread limits can be centrally managed. This "
"solves the design challenge that arises when each component has its own "
"competing strategy for resource management."
msgstr ""
#: ../../whatsnew/3.2.rst:260
msgid ""
"Both classes share a common interface with three methods: :meth:`~concurrent."
"futures.Executor.submit` for scheduling a callable and returning a :class:"
"`~concurrent.futures.Future` object; :meth:`~concurrent.futures.Executor."
"map` for scheduling many asynchronous calls at a time, and :meth:"
"`~concurrent.futures.Executor.shutdown` for freeing resources. The class is "
"a :term:`context manager` and can be used in a :keyword:`with` statement to "
"assure that resources are automatically released when currently pending "
"futures are done executing."
msgstr ""
#: ../../whatsnew/3.2.rst:269
msgid ""
"A simple of example of :class:`~concurrent.futures.ThreadPoolExecutor` is a "
"launch of four parallel threads for copying files::"
msgstr ""
#: ../../whatsnew/3.2.rst:272
msgid ""
"import concurrent.futures, shutil\n"
"with concurrent.futures.ThreadPoolExecutor(max_workers=4) as e:\n"
" e.submit(shutil.copy, 'src1.txt', 'dest1.txt')\n"
" e.submit(shutil.copy, 'src2.txt', 'dest2.txt')\n"
" e.submit(shutil.copy, 'src3.txt', 'dest3.txt')\n"
" e.submit(shutil.copy, 'src3.txt', 'dest4.txt')"
msgstr ""
"import concurrent.futures, shutil\n"
"with concurrent.futures.ThreadPoolExecutor(max_workers=4) as e:\n"
" e.submit(shutil.copy, 'src1.txt', 'dest1.txt')\n"
" e.submit(shutil.copy, 'src2.txt', 'dest2.txt')\n"
" e.submit(shutil.copy, 'src3.txt', 'dest3.txt')\n"
" e.submit(shutil.copy, 'src3.txt', 'dest4.txt')"
#: ../../whatsnew/3.2.rst:281
msgid ":pep:`3148` - Futures -- Execute Computations Asynchronously"
msgstr ""
#: ../../whatsnew/3.2.rst:282
msgid "PEP written by Brian Quinlan."
msgstr "由 Brian Quinlan 撰寫 PEP。"
#: ../../whatsnew/3.2.rst:284
msgid ""
":ref:`Code for Threaded Parallel URL reads<threadpoolexecutor-example>`, an "
"example using threads to fetch multiple web pages in parallel."
msgstr ""
#: ../../whatsnew/3.2.rst:287
msgid ""
":ref:`Code for computing prime numbers in parallel<processpoolexecutor-"
"example>`, an example demonstrating :class:`~concurrent.futures."
"ProcessPoolExecutor`."
msgstr ""
#: ../../whatsnew/3.2.rst:293
msgid "PEP 3147: PYC Repository Directories"
msgstr ""
#: ../../whatsnew/3.2.rst:295
msgid ""
"Python's scheme for caching bytecode in *.pyc* files did not work well in "
"environments with multiple Python interpreters. If one interpreter "
"encountered a cached file created by another interpreter, it would recompile "
"the source and overwrite the cached file, thus losing the benefits of "
"caching."
msgstr ""
#: ../../whatsnew/3.2.rst:300
msgid ""
"The issue of \"pyc fights\" has become more pronounced as it has become "
"commonplace for Linux distributions to ship with multiple versions of "
"Python. These conflicts also arise with CPython alternatives such as Unladen "
"Swallow."
msgstr ""
#: ../../whatsnew/3.2.rst:304
msgid ""
"To solve this problem, Python's import machinery has been extended to use "
"distinct filenames for each interpreter. Instead of Python 3.2 and Python "
"3.3 and Unladen Swallow each competing for a file called \"mymodule.pyc\", "
"they will now look for \"mymodule.cpython-32.pyc\", \"mymodule.cpython-33."
"pyc\", and \"mymodule.unladen10.pyc\". And to prevent all of these new "
"files from cluttering source directories, the *pyc* files are now collected "
"in a \"__pycache__\" directory stored under the package directory."
msgstr ""
#: ../../whatsnew/3.2.rst:312
msgid ""
"Aside from the filenames and target directories, the new scheme has a few "
"aspects that are visible to the programmer:"
msgstr ""
#: ../../whatsnew/3.2.rst:315
msgid ""
"Imported modules now have a :attr:`~module.__cached__` attribute which "
"stores the name of the actual file that was imported:"
msgstr ""
#: ../../whatsnew/3.2.rst:322
msgid ""
"The tag that is unique to each interpreter is accessible from the :mod:`!"
"imp` module:"
msgstr ""
#: ../../whatsnew/3.2.rst:329
msgid ""
"Scripts that try to deduce source filename from the imported file now need "
"to be smarter. It is no longer sufficient to simply strip the \"c\" from a "
"\".pyc\" filename. Instead, use the new functions in the :mod:`!imp` module:"
msgstr ""
#: ../../whatsnew/3.2.rst:338
msgid ""
"The :mod:`py_compile` and :mod:`compileall` modules have been updated to "
"reflect the new naming convention and target directory. The command-line "
"invocation of *compileall* has new options: ``-i`` for specifying a list of "
"files and directories to compile and ``-b`` which causes bytecode files to "
"be written to their legacy location rather than *__pycache__*."
msgstr ""
#: ../../whatsnew/3.2.rst:345
msgid ""
"The :mod:`importlib.abc` module has been updated with new :term:`abstract "
"base classes <abstract base class>` for loading bytecode files. The "
"obsolete ABCs, :class:`!PyLoader` and :class:`!PyPycLoader`, have been "
"deprecated (instructions on how to stay Python 3.1 compatible are included "
"with the documentation)."
msgstr ""
#: ../../whatsnew/3.2.rst:353
msgid ":pep:`3147` - PYC Repository Directories"
msgstr ""
#: ../../whatsnew/3.2.rst:354 ../../whatsnew/3.2.rst:385
msgid "PEP written by Barry Warsaw."
msgstr "由 Barry Warsaw 撰寫 PEP。"
#: ../../whatsnew/3.2.rst:358
msgid "PEP 3149: ABI Version Tagged .so Files"
msgstr ""
#: ../../whatsnew/3.2.rst:360
msgid ""
"The PYC repository directory allows multiple bytecode cache files to be co-"
"located. This PEP implements a similar mechanism for shared object files by "
"giving them a common directory and distinct names for each version."
msgstr ""
#: ../../whatsnew/3.2.rst:364
msgid ""
"The common directory is \"pyshared\" and the file names are made distinct by "
"identifying the Python implementation (such as CPython, PyPy, Jython, etc.), "
"the major and minor version numbers, and optional build flags (such as \"d\" "
"for debug, \"m\" for pymalloc, \"u\" for wide-unicode). For an arbitrary "
"package \"foo\", you may see these files when the distribution package is "
"installed::"
msgstr ""
#: ../../whatsnew/3.2.rst:370
msgid ""
"/usr/share/pyshared/foo.cpython-32m.so\n"
"/usr/share/pyshared/foo.cpython-33md.so"
msgstr ""
"/usr/share/pyshared/foo.cpython-32m.so\n"
"/usr/share/pyshared/foo.cpython-33md.so"
#: ../../whatsnew/3.2.rst:373
msgid ""
"In Python itself, the tags are accessible from functions in the :mod:"
"`sysconfig` module::"
msgstr ""
#: ../../whatsnew/3.2.rst:376
msgid ""
">>> import sysconfig\n"
">>> sysconfig.get_config_var('SOABI') # find the version tag\n"
"'cpython-32mu'\n"
">>> sysconfig.get_config_var('EXT_SUFFIX') # find the full filename "
"extension\n"
"'.cpython-32mu.so'"
msgstr ""
#: ../../whatsnew/3.2.rst:384
msgid ":pep:`3149` - ABI Version Tagged .so Files"
msgstr ""
#: ../../whatsnew/3.2.rst:389
msgid "PEP 3333: Python Web Server Gateway Interface v1.0.1"
msgstr ""
#: ../../whatsnew/3.2.rst:391
msgid ""
"This informational PEP clarifies how bytes/text issues are to be handled by "
"the WSGI protocol. The challenge is that string handling in Python 3 is "
"most conveniently handled with the :class:`str` type even though the HTTP "
"protocol is itself bytes oriented."
msgstr ""
#: ../../whatsnew/3.2.rst:396
msgid ""
"The PEP differentiates so-called *native strings* that are used for request/"
"response headers and metadata versus *byte strings* which are used for the "
"bodies of requests and responses."
msgstr ""
#: ../../whatsnew/3.2.rst:400
msgid ""
"The *native strings* are always of type :class:`str` but are restricted to "
"code points between *U+0000* through *U+00FF* which are translatable to "
"bytes using *Latin-1* encoding. These strings are used for the keys and "
"values in the environment dictionary and for response headers and statuses "
"in the :func:`!start_response` function. They must follow :rfc:`2616` with "
"respect to encoding. That is, they must either be *ISO-8859-1* characters or "
"use :rfc:`2047` MIME encoding."
msgstr ""
#: ../../whatsnew/3.2.rst:408
msgid ""
"For developers porting WSGI applications from Python 2, here are the salient "
"points:"
msgstr ""
#: ../../whatsnew/3.2.rst:411
msgid ""
"If the app already used strings for headers in Python 2, no change is needed."
msgstr ""
#: ../../whatsnew/3.2.rst:413
msgid ""
"If instead, the app encoded output headers or decoded input headers, then "
"the headers will need to be re-encoded to Latin-1. For example, an output "
"header encoded in utf-8 was using ``h.encode('utf-8')`` now needs to convert "
"from bytes to native strings using ``h.encode('utf-8').decode('latin-1')``."
msgstr ""
#: ../../whatsnew/3.2.rst:418
msgid ""
"Values yielded by an application or sent using the :meth:`!write` method "
"must be byte strings. The :func:`!start_response` function and environ must "
"use native strings. The two cannot be mixed."
msgstr ""
#: ../../whatsnew/3.2.rst:422
msgid ""
"For server implementers writing CGI-to-WSGI pathways or other CGI-style "
"protocols, the users must to be able access the environment using native "
"strings even though the underlying platform may have a different "
"convention. To bridge this gap, the :mod:`wsgiref` module has a new "
"function, :func:`wsgiref.handlers.read_environ` for transcoding CGI "
"variables from :data:`os.environ` into native strings and returning a new "
"dictionary."
msgstr ""
#: ../../whatsnew/3.2.rst:431
msgid ":pep:`3333` - Python Web Server Gateway Interface v1.0.1"
msgstr ""
#: ../../whatsnew/3.2.rst:432
msgid "PEP written by Phillip Eby."
msgstr "由 Phillip Eby 撰寫 PEP。"
#: ../../whatsnew/3.2.rst:436
msgid "Other Language Changes"
msgstr "其他語言更動"
#: ../../whatsnew/3.2.rst:438
msgid "Some smaller changes made to the core Python language are:"
msgstr ""
#: ../../whatsnew/3.2.rst:440
msgid ""
"String formatting for :func:`format` and :meth:`str.format` gained new "
"capabilities for the format character **#**. Previously, for integers in "
"binary, octal, or hexadecimal, it caused the output to be prefixed with "
"'0b', '0o', or '0x' respectively. Now it can also handle floats, complex, "
"and Decimal, causing the output to always have a decimal point even when no "
"digits follow it."
msgstr ""
#: ../../whatsnew/3.2.rst:452
msgid ""
"(Suggested by Mark Dickinson and implemented by Eric Smith in :issue:`7094`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:454
msgid ""
"There is also a new :meth:`str.format_map` method that extends the "
"capabilities of the existing :meth:`str.format` method by accepting "
"arbitrary :term:`mapping` objects. This new method makes it possible to use "
"string formatting with any of Python's many dictionary-like objects such as :"
"class:`~collections.defaultdict`, :class:`~shelve.Shelf`, :class:"
"`~configparser.ConfigParser`, or :mod:`dbm`. It is also useful with custom :"
"class:`dict` subclasses that normalize keys before look-up or that supply a :"
"meth:`__missing__` method for unknown keys::"
msgstr ""
#: ../../whatsnew/3.2.rst:463
msgid ""
">>> import shelve\n"
">>> d = shelve.open('tmp.shl')\n"
">>> 'The {project_name} status is {status} as of {date}'.format_map(d)\n"
"'The testing project status is green as of February 15, 2011'\n"
"\n"
">>> class LowerCasedDict(dict):\n"
"... def __getitem__(self, key):\n"
"... return dict.__getitem__(self, key.lower())\n"
"...\n"
">>> lcd = LowerCasedDict(part='widgets', quantity=10)\n"
">>> 'There are {QUANTITY} {Part} in stock'.format_map(lcd)\n"
"'There are 10 widgets in stock'\n"
"\n"
">>> class PlaceholderDict(dict):\n"
"... def __missing__(self, key):\n"
"... return '<{}>'.format(key)\n"
"...\n"
">>> 'Hello {name}, welcome to {location}'.format_map(PlaceholderDict())\n"
"'Hello <name>, welcome to <location>'"
msgstr ""
">>> import shelve\n"
">>> d = shelve.open('tmp.shl')\n"
">>> 'The {project_name} status is {status} as of {date}'.format_map(d)\n"
"'The testing project status is green as of February 15, 2011'\n"
"\n"
">>> class LowerCasedDict(dict):\n"
"... def __getitem__(self, key):\n"
"... return dict.__getitem__(self, key.lower())\n"
"...\n"
">>> lcd = LowerCasedDict(part='widgets', quantity=10)\n"
">>> 'There are {QUANTITY} {Part} in stock'.format_map(lcd)\n"
"'There are 10 widgets in stock'\n"
"\n"
">>> class PlaceholderDict(dict):\n"
"... def __missing__(self, key):\n"
"... return '<{}>'.format(key)\n"
"...\n"
">>> 'Hello {name}, welcome to {location}'.format_map(PlaceholderDict())\n"
"'Hello <name>, welcome to <location>'"
#: ../../whatsnew/3.2.rst:483
msgid ""
"(Suggested by Raymond Hettinger and implemented by Eric Smith in :issue:"
"`6081`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:486
msgid ""
"The interpreter can now be started with a quiet option, ``-q``, to prevent "
"the copyright and version information from being displayed in the "
"interactive mode. The option can be introspected using the :data:`sys."
"flags` attribute:"
msgstr ""
#: ../../whatsnew/3.2.rst:490
msgid ""
"$ python -q\n"
">>> sys.flags\n"
"sys.flags(debug=0, division_warning=0, inspect=0, interactive=0,\n"
"optimize=0, dont_write_bytecode=0, no_user_site=0, no_site=0,\n"
"ignore_environment=0, verbose=0, bytes_warning=0, quiet=1)"
msgstr ""
"$ python -q\n"
">>> sys.flags\n"
"sys.flags(debug=0, division_warning=0, inspect=0, interactive=0,\n"
"optimize=0, dont_write_bytecode=0, no_user_site=0, no_site=0,\n"
"ignore_environment=0, verbose=0, bytes_warning=0, quiet=1)"
#: ../../whatsnew/3.2.rst:498
msgid "(Contributed by Marcin Wojdyr in :issue:`1772833`)."
msgstr "(由 Marcin Wojdyr 在 :issue:`1772833` 中貢獻)。"
#: ../../whatsnew/3.2.rst:500
msgid ""
"The :func:`hasattr` function works by calling :func:`getattr` and detecting "
"whether an exception is raised. This technique allows it to detect methods "
"created dynamically by :meth:`~object.__getattr__` or :meth:`~object."
"__getattribute__` which would otherwise be absent from the class "
"dictionary. Formerly, *hasattr* would catch any exception, possibly masking "
"genuine errors. Now, *hasattr* has been tightened to only catch :exc:"
"`AttributeError` and let other exceptions pass through::"
msgstr ""
#: ../../whatsnew/3.2.rst:508
msgid ""
">>> class A:\n"
"... @property\n"
"... def f(self):\n"
"... return 1 // 0\n"
"...\n"
">>> a = A()\n"
">>> hasattr(a, 'f')\n"
"Traceback (most recent call last):\n"
" ...\n"
"ZeroDivisionError: integer division or modulo by zero"
msgstr ""
">>> class A:\n"
"... @property\n"
"... def f(self):\n"
"... return 1 // 0\n"
"...\n"
">>> a = A()\n"
">>> hasattr(a, 'f')\n"
"Traceback (most recent call last):\n"
" ...\n"
"ZeroDivisionError: integer division or modulo by zero"
#: ../../whatsnew/3.2.rst:519
msgid ""
"(Discovered by Yury Selivanov and fixed by Benjamin Peterson; :issue:`9666`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:521
msgid ""
"The :func:`str` of a float or complex number is now the same as its :func:"
"`repr`. Previously, the :func:`str` form was shorter but that just caused "
"confusion and is no longer needed now that the shortest possible :func:"
"`repr` is displayed by default:"
msgstr ""
#: ../../whatsnew/3.2.rst:532
msgid "(Proposed and implemented by Mark Dickinson; :issue:`9337`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:534
msgid ""
":class:`memoryview` objects now have a :meth:`~memoryview.release` method "
"and they also now support the context management protocol. This allows "
"timely release of any resources that were acquired when requesting a buffer "
"from the original object."
msgstr ""
#: ../../whatsnew/3.2.rst:543
msgid "(Added by Antoine Pitrou; :issue:`9757`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:545
msgid ""
"Previously it was illegal to delete a name from the local namespace if it "
"occurs as a free variable in a nested block::"
msgstr ""
#: ../../whatsnew/3.2.rst:548
msgid ""
"def outer(x):\n"
" def inner():\n"
" return x\n"
" inner()\n"
" del x"
msgstr ""
"def outer(x):\n"
" def inner():\n"
" return x\n"
" inner()\n"
" del x"
#: ../../whatsnew/3.2.rst:554
msgid ""
"This is now allowed. Remember that the target of an :keyword:`except` "
"clause is cleared, so this code which used to work with Python 2.6, raised "
"a :exc:`SyntaxError` with Python 3.1 and now works again::"
msgstr ""
#: ../../whatsnew/3.2.rst:558
msgid ""
"def f():\n"
" def print_error():\n"
" print(e)\n"
" try:\n"
" something\n"
" except Exception as e:\n"
" print_error()\n"
" # implicit \"del e\" here"
msgstr ""
#: ../../whatsnew/3.2.rst:567
msgid "(See :issue:`4617`.)"
msgstr "(請見 :issue:`4617`。)"
#: ../../whatsnew/3.2.rst:569
msgid ""
":ref:`Struct sequence types <struct-sequence-objects>` are now subclasses of "
"tuple. This means that C structures like those returned by :func:`os.stat`, :"
"func:`time.gmtime`, and :data:`sys.version_info` now work like a :term:"
"`named tuple` and now work with functions and methods that expect a tuple as "
"an argument. This is a big step forward in making the C structures as "
"flexible as their pure Python counterparts:"
msgstr ""
#: ../../whatsnew/3.2.rst:582
msgid ""
"(Suggested by Arfrever Frehtes Taifersar Arahesis and implemented by "
"Benjamin Peterson in :issue:`8413`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:585
msgid ""
"Warnings are now easier to control using the :envvar:`PYTHONWARNINGS` "
"environment variable as an alternative to using ``-W`` at the command line:"
msgstr ""
#: ../../whatsnew/3.2.rst:588
msgid ""
"$ export PYTHONWARNINGS='ignore::RuntimeWarning::,once::UnicodeWarning::'"
msgstr ""
"$ export PYTHONWARNINGS='ignore::RuntimeWarning::,once::UnicodeWarning::'"
#: ../../whatsnew/3.2.rst:592
msgid ""
"(Suggested by Barry Warsaw and implemented by Philip Jenvey in :issue:"
"`7301`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:594
msgid ""
"A new warning category, :exc:`ResourceWarning`, has been added. It is "
"emitted when potential issues with resource consumption or cleanup are "
"detected. It is silenced by default in normal release builds but can be "
"enabled through the means provided by the :mod:`warnings` module, or on the "
"command line."
msgstr ""
#: ../../whatsnew/3.2.rst:600
msgid ""
"A :exc:`ResourceWarning` is issued at interpreter shutdown if the :data:`gc."
"garbage` list isn't empty, and if :const:`gc.DEBUG_UNCOLLECTABLE` is set, "
"all uncollectable objects are printed. This is meant to make the programmer "
"aware that their code contains object finalization issues."
msgstr ""
#: ../../whatsnew/3.2.rst:605
msgid ""
"A :exc:`ResourceWarning` is also issued when a :term:`file object` is "
"destroyed without having been explicitly closed. While the deallocator for "
"such object ensures it closes the underlying operating system resource "
"(usually, a file descriptor), the delay in deallocating the object could "
"produce various issues, especially under Windows. Here is an example of "
"enabling the warning from the command line:"
msgstr ""
#: ../../whatsnew/3.2.rst:612
msgid ""
"$ python -q -Wdefault\n"
">>> f = open(\"foo\", \"wb\")\n"
">>> del f\n"
"__main__:1: ResourceWarning: unclosed file <_io.BufferedWriter name='foo'>"
msgstr ""
"$ python -q -Wdefault\n"
">>> f = open(\"foo\", \"wb\")\n"
">>> del f\n"
"__main__:1: ResourceWarning: unclosed file <_io.BufferedWriter name='foo'>"
#: ../../whatsnew/3.2.rst:619
msgid ""
"(Added by Antoine Pitrou and Georg Brandl in :issue:`10093` and :issue:"
"`477863`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:621
msgid ""
":class:`range` objects now support *index* and *count* methods. This is part "
"of an effort to make more objects fully implement the :class:`collections."
"Sequence <collections.abc.Sequence>` :term:`abstract base class`. As a "
"result, the language will have a more uniform API. In addition, :class:"
"`range` objects now support slicing and negative indices, even with values "
"larger than :data:`sys.maxsize`. This makes *range* more interoperable with "
"lists::"
msgstr ""
#: ../../whatsnew/3.2.rst:628
msgid ""
">>> range(0, 100, 2).count(10)\n"
"1\n"
">>> range(0, 100, 2).index(10)\n"
"5\n"
">>> range(0, 100, 2)[5]\n"
"10\n"
">>> range(0, 100, 2)[0:5]\n"
"range(0, 10, 2)"
msgstr ""
">>> range(0, 100, 2).count(10)\n"
"1\n"
">>> range(0, 100, 2).index(10)\n"
"5\n"
">>> range(0, 100, 2)[5]\n"
"10\n"
">>> range(0, 100, 2)[0:5]\n"
"range(0, 10, 2)"
#: ../../whatsnew/3.2.rst:637
msgid ""
"(Contributed by Daniel Stutzbach in :issue:`9213`, by Alexander Belopolsky "
"in :issue:`2690`, and by Nick Coghlan in :issue:`10889`.)"
msgstr ""
"(由 Daniel Stutzbach 在 :issue:`9213`、Alexander Belopolsky 在 :issue:"
"`2690`、Nick Coghlan 在 :issue:`10889` 中貢獻。)"
#: ../../whatsnew/3.2.rst:640
msgid ""
"The :func:`callable` builtin function from Py2.x was resurrected. It "
"provides a concise, readable alternative to using an :term:`abstract base "
"class` in an expression like ``isinstance(x, collections.Callable)``:"
msgstr ""
#: ../../whatsnew/3.2.rst:649
msgid "(See :issue:`10518`.)"
msgstr "(請見 :issue:`10518`。)"
#: ../../whatsnew/3.2.rst:651
msgid ""
"Python's import mechanism can now load modules installed in directories with "
"non-ASCII characters in the path name. This solved an aggravating problem "
"with home directories for users with non-ASCII characters in their usernames."
msgstr ""
#: ../../whatsnew/3.2.rst:655
msgid "(Required extensive work by Victor Stinner in :issue:`9425`.)"
msgstr ""
#: ../../whatsnew/3.2.rst:659
msgid "New, Improved, and Deprecated Modules"
msgstr ""
#: ../../whatsnew/3.2.rst:661
msgid ""
"Python's standard library has undergone significant maintenance efforts and "
"quality improvements."
msgstr ""