Dieser Artikel ist der Artikel zum 16. Tag von Python Part 2 Adventskalender 2015.
Diesmal,
Ich werde nicht darauf eingehen, sondern nur die Teile vorstellen, die dem Wesen nahe kommen, wie z. B. Python-Grammatik und primitive Typen. (Da es einige berührte Teile gibt, überspringen Sie in diesem Fall bitte ...)
Gegen Ende habe ich nicht viel Zeit und es wird chaotisch, aber bitte vergib mir.
Python3.0 -> Python3.1
Einführung der Sammlungen.OrderedDict-Klasse. Es ist wie ein Wörterbuch, das sich an die Reihenfolge erinnert, in der es eingefügt wurde.
Python3.1
from collections import OrderedDict
>>> {2:"a", 1:"b", 3:"c"}.items()
dict_items([(1, 'b'), (2, 'a'), (3, 'c')])
>>>
>>> OrderedDict([(2, "a"), (1, "b"), (3, "c")]).items()
ItemsView(OrderedDict([(2, 'a'), (1, 'b'), (3, 'c')]))
Die integrierten Funktionen format ()
und str.format ()
können jetzt Formatspezifizierer für dreistellige Trennzeichen verwenden.
Sie können es mit einem Komma angeben.
Unterstützt int, float, complex, decimal.Decimal.
Python3.1
>>> format(123456789, ',d')
'123,456,789'
>>> format(123456789, ',f')
'123,456,789.000000'
>>> format(123456789, ',.2f')
'123,456,789.00'
>>>
>>> "{0:,d}".format(123456789)
'123,456,789'
>>> "{0:,f}".format(123456789)
'123,456,789.000000'
>>> "{0:,.2f}".format(123456789)
'123,456,789.00'
Nein, ich schäme mich zu wissen, dass ich das Format zum ersten Mal angeben kann. .. Ich habe mich gefragt, ob es etwas zu sagen gibt, aber ich habe es nicht überprüft.
Da format ()
als format (value [, format_spec])
geschrieben ist, verstehe ich, dass Sie das Format angeben können, aber
Das str.format ()
wusste nicht, wo es suchen sollte. Für den eingebauten Typ "str.format (* args, ** kwargs)"
Ich verstehe überhaupt nicht, weil es nur sagt.
Während ich das sagte, fand ich hier. (Es ist ein Geheimnis, dass es einen Link direkt unter str.format gab ...)
Über kleine Änderungen. Ich werde es leicht zusammenfassen.
Das Verzeichnis mit \ _ \ _ main \ _ \ _. Py und das Zip-Archiv können direkt ausgeführt werden, indem der Name an den Interpreter übergeben wird.
Umm. Es ist schwer zu verstehen.
__main__.py
print("Hello World!!")
Erstellen Sie eine solche Datei und speichern Sie sie unter dem Pfad "python_test / __ main __. Py". Versuchen Sie dann, einen Reißverschluss zu machen.
$ zip -j python_test.zip python_test/__main__.py
Überprüfen Sie, ob sich "__main __. Py" in der Wurzel befindet.
$ unzip -l python_test.zip
Archive: python_test.zip
Length Date Time Name
--------- ---------- ----- ----
23 2015-12-16 12:34 __main__.py
--------- -------
23 1 file
Dann renne!
$ #Aus Ordner ausführen
$ python python_test
Hello World!!
$ #Aus dem Archiv ausführen
$ python python_test.zip
Hello World!!
Nun, du kannst es so machen.
Python3.1
>>> n = 37
>>> bin(n)
'0b100101'
>>> n.bit_length()
6
>>> n = 2**123-1
>>> n.bit_length()
123
Ja. Die Anzahl der Ziffern in Binär wird so ausgegeben.
format ()
werden automatisch nummeriert.Python3.1
>>> "{} {}!!".format("Hello", "World")
'Hello World!!'
Das habe ich auch zum ersten Mal gelernt ... Es ist bequem!
string.maketrans ()
ist veraltetNeu als statische Methode erstellt
bytes.maketrans()
bytearray.maketrans()
Kann verwendet werden.
Python3.1
>>> class WithTest:
... def __init__(self, msg):
... self.msg = msg
...
... def __enter__(self):
... print("enter: "+self.msg)
... return self
...
... def __exit__(self, exc_type, exc_value, traceback):
... print("exit: "+self.msg)
... return True
...
>>> with WithTest("hoge") as hoge, WithTest("fuga") as fuga:
... pass
...
enter: hoge
enter: fuga
exit: fuga
exit: hoge
Sie können mit Anweisungen gleichzeitig schreiben, ohne sie zu verschachteln. Die Bewegung ist dieselbe wie die verschachtelte Bewegung.
Diese veraltete contextlib.nested ().
Es scheint, dass es früher Gleitkommazahlen zurückgegeben hat.
Python3.1
>>> round(1234, -2)
1200
>>> round(1234., -2)
1200.0
>>> round(1234, 2)
1234
Wenn Sie eine Ganzzahl übergeben, wird diese als Ganzzahl zurückgegeben.
Es bleibt der Titel. Gleitkomma wird mit einem neuen Algorithmus angezeigt.
Python3.0
>>> 1.1
1.1000000000000001
Python3.1
>>> 1.1
1.1
Es war schwierig für mich, weiter zu reden ~ Bitte sag es mir!
Python3.1 -> Python3.2
Eine aktualisierte Version des Argparse-Moduls von optparse wurde hinzugefügt.
Unterstützt Positionsargumente, Unterbefehle, Optionsvalidierung usw.
Die Formel für dieses Modul ist detailliert. Wenn Sie mehr darüber erfahren möchten, besuchen Sie bitte hier.
Es gab eine Methode zum Festlegen des Protokollierungsmoduls durch Aufrufen einer Funktion oder Lesen einer Datei im Format ConfigParser.
Um diese Einstellung flexibel vorzunehmen, können Sie jetzt Einstellungen mithilfe eines Wörterbuchs vornehmen. Legen Sie Informationen in [logging.config.dictConfig ()
] fest (http://docs.python.jp/3/library/logging.config.html#logging.config.dictConfig)
Sie kann durch Übergeben des gespeicherten Wörterbuchs festgelegt werden.
Flexible Einstellungen können vorgenommen werden, indem eine in JSON oder YAML geschriebene Datei analysiert und an eine Methode übergeben wird.
Klicken Sie hier, um Details zum Protokollierungsmodul anzuzeigen (http://docs.python.jp/3/library/logging.html#module-logging).
Das Modul concurrent.futures wurde hinzugefügt. Dieses Modul bietet eine übergeordnete Schnittstelle für aufrufbare Objekte, die asynchron ausgeführt werden können.
Sie können den ThreadPoolExecutor verwenden, um ihn in einem Thread auszuführen, oder Sie können den ProcessPoolExecutor verwenden, um ihn in einem anderen Prozess auszuführen.
Klicken Sie hier, um Details zum Modul concurrent.futures (http://docs.python.jp/3/library/concurrent.futures.html) anzuzeigen.
Wenn die .pyc-Datei der von Python generierten Cache-Datei von einer anderen Version des Interpreters betrieben wird, kann der vorhandene Cache nicht verwendet werden, sodass eine neue Cache-Datei erstellt und überschrieben wird.
Um dies zu beheben, befindet sich die Datei mit der Python-Version, die am Ende des Dateinamens hinzugefügt wurde, jetzt im Verzeichnis \ _ \ _ pycache \ _ \ _.
Python3.2
$ touch mymodule.py
$ python -c "import mymodule"
$ ls
__pycache__ mymodule.py
$ ls __pycache__
mymodule.cpython-32.pyc
Der Cache des importierten Moduls wird im Ordner \ _ \ _ pycache \ _ \ _ mit dem Dateinamen mit der Version erstellt.
Freigegebene Objekte sind auch Python-Implementierungsmethoden (CPython, Jython, PyPy usw.) + Haupt- und Nebenversionsnummern + Build-Flags Sie können jetzt mehrere Dateien mit dem Namen ablegen.
Python Web Server Gateway Interface v1.0.1
In diesem PEP wird erläutert, wie das WSGI-Protokoll mit Bytes und Textproblemen umgeht. PEP ist für Byte-Strings, die in Anforderungs- und Antwortkörpern verwendet werden Unterscheiden Sie zwischen sogenannten nativen Zeichenfolgen, die in Anforderungs- / Antwortheadern und Metadaten verwendet werden.
Native Zeichenfolgen sind immer str, können jedoch mithilfe der Latin-1-Codierung in Bytes konvertiert werden und sind auf Codepunkte zwischen U + 0000 und U + 00FF beschränkt. Diese Zeichenfolgen werden im Schlüssel und Wert im Wörterbuch der Umgebungsvariablen sowie im Antwortheader und im Status von start \ _response () verwendet. Das heißt, Sie müssen ISO-8891-1-Zeichen oder RFC 2047-MIME-Codierung verwenden.
Server-Implementierer von CGI-WSGI-Routen und anderen Protokollen im CGI-Stil erfordern, dass Benutzer native Zeichenfolgen verwenden, um auf Umgebungsvariablen auf verschiedenen Plattformen zuzugreifen.
Um diese Lücke zu schließen, verfügt das wsgiref-Modul über ein neues "wsgiref.handlers.read_environ ()", das CGI-Variablen von os.environ in native Zeichenfolgen konvertiert und ein neues Wörterbuch zurückgibt.
Nun, ich habe mein Bestes versucht, um Englisch zu lesen, aber ich habe nicht wirklich verstanden, was wichtig ist (lacht).
Die Einführung ist lang, wenn wsgiref.handlers.read_environ ()
sagen wollte. War es nur das ...?
Wer Hilfe versteht !!
#
Zu den Formatbezeichnern vonformat ()
und str.format ()
hinzugefügtPython3.2
>>> format(10, 'o')
'12'
>>> format(10, '#o')
'0o12'
>>> format(10, 'b')
'1010'
>>> format(10, '#b')
'0b1010'
>>> format(10, '.0f')
'10'
>>> format(10, '#.0f')
'10.'
str.format_map ()
Es ist wie Format, Wörterbuchversion.
Python3.2
>>> '{msg1} {msg2}!!'.format_map({"msg1":"Hello", "msg2":"World"})
'Hello World!!'
Python3.2
$ python
Python 3.2.6 (default, Dec 9 2015, 17:42:33)
[GCC 5.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
$ python -q
>>>
Durch Hinzufügen der Option -q können die Versionsinformationen beim Starten des Interpreters ausgeblendet werden.
hasattr () ruft getattr () auf, um festzustellen, ob eine Ausnahme erkannt wird. Früher war das Verhalten False, wenn eine Ausnahme erkannt wurde. Jetzt werden andere Ausnahmen als AttributeError durchlaufen.
Python3.1
>>> class C:
... @property
... def f(self):
... return 1//0
... @property
... def g(self):
... return 0
...
>>> c = C()
>>> hasattr(c, 'f')
False
>>> hasattr(c, 'g')
True
>>> hasattr(c, 'h')
False
Python3.2
>>> class C:
... @property
... def f(self):
... return 1//0
... @property
... def g(self):
... return 0
...
>>> c = C()
>>> hasattr(c, 'f')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in f
ZeroDivisionError: integer division or modulo by zero
>>> hasattr(c, 'g')
True
>>> hasattr(c, 'h')
False
Zero Division Error wird in Python 3.1 nicht angezeigt. Auf den ersten Blick sieht es so aus, als hätte es Attribute, aber mit einer Ausnahme ist das Ergebnis Falsch.
Es gibt Ausnahmen in Python 3.2. Es gibt jedoch keinen AttributeError und das Ergebnis ist False.
Python3.1
>>> import math
>>> repr(math.pi)
'3.141592653589793'
>>> str(math.pi)
'3.14159265359'
Python3.2
>>> import math
>>> repr(math.pi)
'3.141592653589793'
>>> str(math.pi)
'3.141592653589793'
In 3.1 ist das Ergebnis von "str ()" etwas kurz.
Python3.2
>>> with memoryview(b'abc') as v:
... print(v.tolist())
...
[97, 98, 99]
Ressourcen werden durch Aufrufen der Methode release ()
freigegeben.
Darüber hinaus wurden auch enter () und exit () implementiert, sodass Sie die with-Anweisung verwenden können.
Python3.1
>>> def outer(x):
... def inner():
... return x
... inner()
... del x
...
SyntaxError: can not delete variable 'x' referenced in nested scope
>>>
Python3.2
>>> def outer(x):
... def inner():
... return x
... inner()
... del x
...
>>>
Was soll ich damit machen? Ich denke, es wäre hilfreich, wenn Sie mir einen Fehler geben würden. Es scheint, dass diese Art von Code in 2.6 vorerst funktioniert.
Python3.2
>>> def f():
... def print_error():
... print(e)
... try:
... pass
... except Exception as e:
... print_error()
>>>
Was ich hier gelernt habe ist, dass e implizit del ist. Sicher, ich möchte, dass das funktioniert, aber ich bin der einzige, der meint, ich sollte diese Art von Code nicht schreiben, oder?
Python3.2
>>> isinstance(sys.version_info, tuple)
True
Es scheint von os.stat ()
, time.gmtime ()
, sys.version_info
zurückgegeben zu werden.
Sie können es wie einen benannten Taple behandeln.
$ export PYTHONWARNINGS='ignore::RuntimeWarning::,once::UnicodeWarning::'
Sie kann auch mit der Option -W
angegeben werden.
Es ist standardmäßig deaktiviert und muss mit der Option -W
aktiviert werden, um es anzuzeigen.
Python3.2
$ python -q -Wdefault
>>> f = open("foo", "wb")
>>> del f
__main__:1: ResourceWarning: unclosed file <_io.BufferedWriter name='foo'>
Python3.2
>>> r=range(0,100,2)
range(0, 100, 2)
>>> r.count(10)
1
>>> r.index(10)
5
>>> r[10]
20
>>> r[0:5]
range(0, 10, 2)
Es scheint, dass es einen Wert größer als sys.maxsize haben kann.
callable ()
eingebaute Funktionen sind zurückPython3.2
>>> callable(max)
True
>>> callable(1)
False
Eine Funktion, die prüfen kann, ob sie aufgerufen werden kann.
Es scheint, dass es geworden ist.
Python3.2 -> Python3.3
Ein venv-Modul für den programmatischen Zugriff und ein pyvenv-Skript für den programmatischen Zugriff wurden hinzugefügt.
Ich habe nur virtualenv verwendet, sollte ich es verwenden? Auch wenn ich pyvenv drücke, steht venv im Gebrauch. ..
Python3.3
$ pyvenv
usage: venv [-h] [--system-site-packages] [--symlinks] [--clear] [--upgrade]
ENV_DIR [ENV_DIR ...]
venv: error: the following arguments are required: ENV_DIR
Es scheint, dass dieses Befehlsmodul von der Integration in den Interpreter-Kern profitiert, daher ist es möglicherweise besser, es hier zu verwenden.
Sie müssen \ _ \ _ init \ _ \ _. Py nicht mehr im Paketverzeichnis ablegen.
Python3.2
$ ls -R
hoge
./hoge:
fuga.py
$ python -c "import hoge.fuga"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named hoge.fuga
Python3.3
$ ls -R
hoge
./hoge:
fuga.py
$ python -c "import hoge.fuga"
$
Es scheint, dass Python 3.3 gelesen werden kann, da kein Fehler vorliegt.
Alle Ausnahmetypen sind jetzt OSError. (Andere Namen bleiben als Aliase übrig)
Außerdem ist es jetzt bereit, bestimmte Fehlerbedingungen zu ergänzen. Anstatt eine bestimmte Konstante für das errno-Attribut zu betrachten, können Sie die entsprechende von OSError abgeleitete Klasse ergänzen.
ConnectionError hat eine fein abgeleitete Klasse.
Dies ist ein offizielles Beispiel
Python3.2
from errno import ENOENT, EACCES, EPERM
try:
with open("document.txt") as f:
content = f.read()
except IOError as err:
if err.errno == ENOENT:
print("document.txt file is missing")
elif err.errno in (EACCES, EPERM):
print("You are not allowed to read document.txt")
else:
raise
Python3.3
try:
with open("document.txt") as f:
content = f.read()
except FileNotFoundError:
print("document.txt file is missing")
except PermissionError:
print("You are not allowed to read document.txt")
Ich kann jetzt schreiben. Python3.3 ist schlau! Ist Python 3.2 eine C-Sprache ...
Eine Rendite aus der Anweisung wurde hinzugefügt.
Ein Generator kann seine Verarbeitung an einen anderen Generator delegieren.
Python3.3
>>> def g():
... yield from [1,2,3]
... yield from [-1,-2,-3]
...
>>> gen = g()
>>> list(gen)
[1, 2, 3, -1, -2, -3]
Die Yield from-Anweisung kann auch den in der return-Anweisung angegebenen Endwert zurückgeben.
Python3.3
>>> def g():
... yield 1
... yield 2
... yield 3
... return 0
...
>>> def f():
... data = yield from g()
... print('return value: ' + str(data))
...
>>> gen = f()
>>> next(gen)
1
>>> next(gen)
2
>>> next(gen)
3
>>> next(gen)
return value: 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Sie können den Ausnahmekontext unterdrücken, indem Sie in der Anweisung raise from den Wert None angeben.
Python3.3
>>> def f():
... raise Exception('in function')
...
>>> def g1():
... try:
... f()
... except Exception as e:
... raise Exception('test1')
...
>>> def g2():
... try:
... f()
... except Exception as e:
... raise Exception('test2') from None
...
>>> g1()
Traceback (most recent call last):
File "<stdin>", line 3, in g1
File "<stdin>", line 2, in f
Exception: in function
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in g1
Exception: test1
>>> g2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in g2
Exception: test2
Außergewöhnlicher Kontext wird in g2 unterdrückt.
Sie können der Zeichenfolge jetzt erneut "u" voranstellen.
Python3.2
>>> u"test"
File "<stdin>", line 1
u"test"
^
SyntaxError: invalid syntax
Python3.3
>>> u"test"
'test'
Sie können den Pfad von der obersten Ebene mit dem Attribut \ _ \ _ qualname \ _ \ _ abrufen.
Python3.3
>>> class C:
... class D:
... def f():
... pass
...
>>> C.D.__name__
'D'
>>> C.D.__qualname__
'C.D'
>>> C.D.f.__qualname__
'C.D.f'
print ()
hinzugefügt. Wenn dies der Fall ist, wird der Stream zum Spülen gezwungen.object .__ hash__ ()
und PYTHON HASHSEED.Python3.3 -> Python3.4
3.3 bis 3.4 sind kurz, da es keine neuen Grammatikfunktionen gibt.
Dies würde bedeuten, dass PIP standardmäßig eingeführt wird.
Korrekt.
Sie können jedoch die folgenden Methoden verwenden, wenn Sie dies wünschen.
os.get_inheritable()
, os.set_inheritable()
os.get_handle_inheritable()
, os.set_handle_inheritable()
socket.socket.get_inheritable()
, socket.socket.set_inheritable()
--min ()
undmax ()
können den durch das Schlüsselwortargument angegebenen Wert zurückgeben, wenn keine zu iterierenden Elemente vorhanden sind.
--bytes.join ()
undbyte array.join ()
akzeptieren beliebige Pufferobjekte als Argumente.
__index__ ()
.Python3.4 -> Python3.5
Was 3.5 betrifft, habe ich es nicht so sehr angefasst, daher ist es eine flache Einführung und ich habe keine Zeit, also ist es kurz und einfach. .. ..
Verwenden Sie die Syntax "async def", um eine Collout-Funktion zu erstellen.
Python3.5
>>> async def cofunc():
... return 'test'
...
Darüber hinaus wurde die folgende Syntax hinzugefügt.
async for
async with
Diese Syntaxen können nur innerhalb der durch async def
definierten Collout-Funktion verwendet werden.
Sie können die Anweisung await
in der Koluitin-Funktion verwenden.
Die Warten-Anweisung kann die Hinrichtung der Kolu-Leute aussetzen, bis der resultierende Wert gültig ist.
Es kann verwendet werden, indem die Methode await () für jedes Objekt definiert wird.
Sie können die Matrix mit @
multiplizieren.
Es kann verwendet werden, indem __matmul__ ()
, __rmatmul__ ()
, __imatmul__ ()
im Objekt implementiert werden.
Es scheint von numpy implementiert zu werden. Aus dem offiziellen Dokument.
Python3.5
>>> import numpy
>>> x = numpy.ones(3)
>>> x
array([ 1., 1., 1.])
>>> m = numpy.eye(3)
>>> m
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
>>> x @ m
array([ 1., 1., 1.])
Sie können "*" für Iteratorobjekte und "**" für Wörterbücher verwenden.
Python3.5
>>> print(*[1,2], 3, *[4])
1 2 3 4
>>> def f(a, b, c, d):
... print(a,b,c,d)
...
>>> f(**{'a': 1, 'd': 4}, **{'c': 3}, **{'b': 2})
1 2 3 4
>>> *range(4), 4
(0, 1, 2, 3, 4)
>>> [*range(4), 4]
[0, 1, 2, 3, 4]
>>> {*range(4), 4}
{0, 1, 2, 3, 4}
>>> {**{'x': 3}, 'y': 4}
{'x': 3, 'y': 4}
Python3.5
>>> b'test: %d' % 1
b'test: 1'
% b unterstützt Unicode nicht. Sie können jedoch "% a" verwenden.
Python3.5
>>> b'Hello %b!' % b'World'
b'Hello World!'
>>> b'Hello %b!' % 'World'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %b requires bytes, or an object that implements __bytes__, not 'str'
>>> b'Hello %a!' % 'World'
b"Hello 'World'!"
>>> b'price: %a' % '10€'
b"price: '10\\u20ac'"
Type Hints
Type Hints wurde eingeführt. Ich werde zu einem späteren Zeitpunkt ausführlich in einem anderen Artikel schreiben. ..
Geben Sie mithilfe der Funktionsanmerkung an.
Python3.5
>>> def f(num: int) -> int:
... return num+1
...
Eine Funktion, die den Inhalt eines Verzeichnisses iteriert. Es scheint früh zu sein. Lass es uns benutzen.
ls -a
. .. .hidefile empty hoge
Python3.5
>>> import os
>>> for entry in os.scandir('.'):
... if not entry.name.startswith('.') and entry.is_file():
... print(entry.name)
...
empty
Zuvor war es in Python erforderlich, entweder "InterruptedError" zu ignorieren oder einen Mechanismus zum Neustart nach dem Abfangen bereitzustellen.
Ab Python 3.5 werden Systemaufrufe in EINTR automatisch erneut ausgeführt.
Zuvor wurde das Auftreten von Stopp-Iteration im Generator unverändert ausgelöst.
Python3.4
>>> def gen():
... next(iter([]))
... yield
...
>>> next(gen())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in gen
StopIteration
Beim Importieren des generator_stop
von __future__
wird eine Ausnahme als RuntimeError
ausgelöst.
Python3.5
>>> from __future__ import generator_stop
>>> def gen():
... next(iter([]))
... yield
...
>>> next(gen())
Traceback (most recent call last):
File "<stdin>", line 2, in gen
StopIteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: generator raised StopIteration
math.isclose ()
wurde hinzugefügt.
Python3.5
>>> import math
>>> a = 5.
>>> b = 4.99998
>>> math.isclose(a, b, rel_tol=1e-5)
True
>>> math.isclose(a, b, rel_tol=1e-6)
False
>>> math.isclose(a, b, abs_tol=0.00003)
True
>>> math.isclose(a, b, abs_tol=0.00001)
False
3.4 und 3.5 sind ziemlich rau. .. ..
Da es sich um ein kleines Update handelt, gibt es nur wenige grammatikalische Updates. Wenn Sie Fehlerbehebungen, Verbesserungen und Modulzusätze hinzufügen, wird der Betrag wie ein Dämon sein, also habe ich ihn diesmal weggelassen. Ich bin jedoch neugierig auf das in 3.4 hinzugefügte Asyncio-Modul und das in 3.5 hinzugefügte Tippmodul, sodass ich später einen Artikel schreiben werde.
Ich habe Python 3.3 berührt und die neuen Funktionen späterer Versionen nicht angesprochen, daher entschuldige ich mich für die vage Erklärung (´ ・ ω ・ `)
Wenn Sie interessiert sind, lesen Sie bitte Offizielles Dokument! !! (Wir sehen uns wieder
Morgen ist @ fx-kirin.
Lass uns ein gutes Python3-Leben haben! !!
Recommended Posts