タグ付けされた質問 「python-3.5」

2015年9月13日にリリースされたPythonプログラミング言語のバージョン。Python3.5に固有の問題の場合。可能であれば、より一般的な[python]および[python-3.x]タグを使用します。

4
メソッドの戻り値の型がクラス自体と同じであることをどのように指定しますか?
私はPython 3に次のコードを持っています: class Position: def __init__(self, x: int, y: int): self.x = x self.y = y def __add__(self, other: Position) -> Position: return Position(self.x + other.x, self.y + other.y) しかし、私のエディター(PyCharm)は、参照の位置を(__add__メソッド内で)解決できないと言っています。戻り値の型が型であることを期待するように指定するにはどうすればよいPositionですか? 編集:これは実際にはPyCharmの問題だと思います。警告の情報とコード補完を実際に使用します しかし、私が間違っていて、他の構文を使用する必要がある場合は修正してください。


5
Python 3.5の型ヒントとは何ですか?
Python 3.5で最も話題になっている機能の1つは型ヒントです。 型ヒントの例はこの記事とこの記事で説明されていますが、責任を持って型ヒントを使用することについても言及されています。誰かがそれらについて、それらをいつ使用すべきか、いつ使用すべきかについて説明できますか?




9
ImportError: 'django.core.urlresolvers'という名前のモジュールはありません
入力用のフォームを作成する必要があるDjangoプロジェクトに取り組んでいます。からインポートしようとしreverseましたdjango.core.urlresolvers。エラーが発生しました: line 2, in from django.core.urlresolvers import reverse ImportError: No module named 'django.core.urlresolvers' Python 3.5.2、Django 2.0、MySQLを使用しています。

3
Python 3でx ** 4.0がx ** 4より速いのはなぜですか?
なぜx**4.0より速いのですx**4か?CPython 3.5.2を使用しています。 $ python -m timeit "for x in range(100):" " x**4.0" 10000 loops, best of 3: 24.2 usec per loop $ python -m timeit "for x in range(100):" " x**4" 10000 loops, best of 3: 30.6 usec per loop 上げた力を変更してその動作を確認しようとしました。たとえば、xを10または16の累乗にすると、30から35にジャンプしますが、フロートとして10.0だけ上げると、動いています。約24.1〜4。 float変換と2のべき乗と関係があるのではないかと思いますが、実際にはわかりません。 どちらの場合も2の累乗の方が速いことに気づきました。これらの計算は、インタプリタ/コンピュータにとってよりネイティブ/簡単だからです。しかし、それでも、フロートではほとんど動きません。2.0 => 24.1~4 & 128.0 => 24.1~4 だが …

2
型ヒントで関数の型を指定するにはどうすればよいですか?
現在のPython 3.5プロジェクトで型ヒントを使用したい。私の関数は関数をパラメーターとして受け取る必要があります。 型ヒントで型関数を指定するにはどうすればよいですか? import typing def my_function(name:typing.AnyStr, func: typing.Function) -> None: # However, typing.Function does not exist. # How can I specify the type function for the parameter `func`? # do some processing pass PEP 483を確認しましたが、関数タイプのヒントが見つかりませんでした。

6
numpy dot()とPython 3.5+行列乗算の違い@
私は最近Python 3.5に移動し、新しい行列乗算演算子(@)がnumpyドット演算子とは異なる動作をする場合があることに気付きました。たとえば、3D配列の場合: import numpy as np a = np.random.rand(8,13,13) b = np.random.rand(8,13,13) c = a @ b # Python 3.5+ d = np.dot(a, b) @オペレータは、形状の配列を返します。 c.shape (8, 13, 13) しばらくnp.dot()関数が返します: d.shape (8, 13, 8, 13) どうすれば同じ結果をnumpy dotで再現できますか?他に大きな違いはありますか?

1
Python 3.5ではPython 3.4と比較してstr.translateがはるかに高速なのはなぜですか?
text.translate()Python 3.4 を使用して、指定された文字列から不要な文字を削除しようとしました。 最小限のコードは次のとおりです。 import sys s = 'abcde12345@#@$#%$' mapper = dict.fromkeys(i for i in range(sys.maxunicode) if chr(i) in '@#$') print(s.translate(mapper)) 期待どおりに動作します。ただし、Python 3.4とPython 3.5で同じプログラムを実行すると、大きな違いが生じます。 タイミングを計算するコードは python3 -m timeit -s "import sys;s = 'abcde12345@#@$#%$'*1000 ; mapper = dict.fromkeys(i for i in range(sys.maxunicode) if chr(i) in '@#$'); " "s.translate(mapper)" Python 3.4プログラムは1.3msかかりますが、Python 3.5の同じプログラムは26.4μsしかかかりません。 …

4
「ファイアアンドフォーゲット」python async / await
ときどき、重要でない非同期操作が発生することがありますが、それが完了するのを待ちたくありません。トルネードのコルーチンの実装では、yieldキーワードを省略するだけで非同期関数を「起動して忘れる」ことができます。 私は、Python 3.5でリリースされた新しいasync/ await構文を使用して「起動して忘れる」方法を理解しようと努めてきました。たとえば、簡略化されたコードスニペット: async def async_foo(): print("Do some stuff asynchronously here...") def bar(): async_foo() # fire and forget "async_foo()" bar() 何が起こるかというと、bar()決して実行されず、代わりにランタイム警告が表示されます。 RuntimeWarning: coroutine 'async_foo' was never awaited async_foo() # fire and forget "async_foo()"

1
複数の戻り値のタイプに注釈を付ける方法は?
型ヒントを使用してIterable、常に2つの値aboolとaを生成するを返す関数に注釈を付けるにはどうすればよいstrですか?ヒントTuple[bool, str]は、戻り値の型をジェネレーターや他のタイプの反復可能オブジェクトではなくタプルに制限することを除いて、近いです。 次のようにfoo()複数の値を返すために使用される関数に注釈を付けたいので、私は主に興味があります。 always_a_bool, always_a_str = foo() 通常は(タプルを返す)のfoo()ような関数を実行return a, bしますが、返されるタプルをジェネレーターやリストなどに置き換えるのに十分な柔軟性を備えたタイプヒントが必要です。

5
循環インポートなしのPython型ヒント
私は私の巨大なクラスを2つに分割しようとしています。ええと、基本的には「メイン」クラスと、次のような追加機能を備えたミックスインに入れます。 main.py ファイル: import mymixin.py class Main(object, MyMixin): def func1(self, xxx): ... mymixin.py ファイル: class MyMixin(object): def func2(self: Main, xxx): # <--- note the type hint ... さて、これMyMixin.func2は問題なく機能しますが、タイプヒントはもちろん機能しません。インポートできません。main.py循環インポートが行われ、ヒントがないため、エディター(PyCharm)は何を認識できませんself。 私はPython 3.4を使用していますが、そこでソリューションが利用可能な場合は喜んで3.5に移行します。 クラスを2つのファイルに分割し、すべての「接続」を保持して、IDEが自動補完と、タイプを知っていることから来る他のすべての便利な機能を提供できる方法はありますか?

4
Python 3.5のコルーチンとフューチャー/タスクの違いは?
ダミー関数があるとしましょう: async def foo(arg): result = await some_remote_call(arg) return result.upper() 違いは何ですか: coros = [] for i in range(5): coros.append(foo(i)) loop = get_event_loop() loop.run_until_complete(wait(coros)) そして: from asyncio import ensure_future futures = [] for i in range(5): futures.append(ensure_future(foo(i))) loop = get_event_loop() loop.run_until_complete(wait(futures)) 注:この例では結果が返されますが、これは質問の焦点では​​ありません。戻り値が重要な場合は、のgather()代わりに使用してくださいwait()。 戻り値に関係なく、私は明快さを探していensure_future()ます。wait(coros)そして、wait(futures)コルーチンを実行し、そのとき、なぜコルーチンはに包まれるべき両方ensure_future? 基本的に、Python 3.5を使用して一連の非ブロッキング操作を実行する正しい方法(tm)はasync何ですか? 追加のクレジットについて、コールをバッチ処理する場合はどうなりますか?たとえば、some_remote_call(...)1000回呼び出す必要がありますが、同時接続数が1000のWebサーバー/データベースなどを壊したくありません。これはスレッドまたはプロセスプールで実行できますが、これを行う方法はありasyncioますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.