from __future__ import print_function
を使用して新しいPython関数をインポートした後、その関数を使ってフラッシュすることができないことに気付きました。なぜ私が発見したのか発見する私の旅で、私はどの引数/パラメータが必要かを調べることさえできません。それはなぜです?今後インポートされる印刷機能の引数が表示されないのはなぜですか?
- まず、検査機能が機能していることを確認しました。
- 次に、印刷機能が確かに機能であることを確認しました。
- これらの2つ(パスした/確認したように見える)の後、私はそれを検査しようとしましたが、これは失敗し、奇妙なエラーを返しました。ここ
は私がやったことです:なぜ起こっていることを
ArgSpec(args=['a', 'b'], varargs=None, keywords=None, defaults=(1,))
what is print? <built-in function print>
what is g=print? <built-in function print>
Traceback (most recent call last):
File "print_future.py", line 16, in <module>
print(inspect.getargspec(g))
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/inspect.py", line 816, in getargspec
raise TypeError('{!r} is not a Python function'.format(func))
TypeError: <built-in function print> is not a Python function
:印刷検査以外
from __future__ import print_function
import inspect
def f(a, b=1):
pass
#print(print_function)
print(inspect.getargspec(f))
g = print
print('what is print: ', print)
print('what is g=print: ', g)
print(inspect.getargspec(g))
#print(inspect.getargspec(print))
#print('Hello', flush=True)
、すべてを通過しましたか?
これは私のpython、システムのいくつかの情報です:
signatureから抽出Python 2.7.11 (default, Jun 24 2016, 21:50:11)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
私が何か役に立つ見つけるようだ:私はそれを読むが、Cの関数は、引数*と* kwargsからようなものを扱うために自由である理由を私は理解していないhttp://bugs.python.org/issue6905 –
を: 'これは、問題ではありませんが、getargspec() の基本的な制限があります。いずれか デフFUNC(*引数) 又は デフFUNC(*引数、** kwargsから) として定義さに自由であるように、基本的に 毎C関数を考えることができるので、C関数シグネチャは、イントロスペクションではありませんargsとkwargsでそれが望むことをやりなさい。' –
docsが言うように、' inspect'は純粋なPythonコードでのみ動作しますが、多くの組み込み関数はC言語で実装されています。また、不明確なフォローアップの質問をコメントとして尋ねるのは、おそらく素晴らしい考えではありません。 – jonrsharpe