2016-08-07 9 views
-1

私はpythonで初心者です。
私は'123' が、どのような場合、我々は、私がstr関数を呼び出すことができますどのようにstrという名前の変数を、持っている価値123の文字列形式を返しますstr(123)、学んだように?str()関数を変数名として使用

In[2]: str(123) 
Out[2]: '123' 
In[3]: str='hello world' 
In[4]: str(123) 
Traceback (most recent call last): 
    File "/Users/x625/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2885, in run_code 
    exec(code_obj, self.user_global_ns, self.user_ns) 
    File "<ipython-input-4-6d97c31da288>", line 1, in <module> 
    str(123) 
TypeError: 'str' object is not callable 

str()を再度呼び出すにはどうすればいいですか?

+0

変数として 'str'を使用しないでください。しかし、 'import builtins'を使い、' builtins.str'を使ってそれを得ることができます。 –

答えて

1

変数をstrと呼んではいけません。

インタラクティブモードで間違いを犯し、あなたが悪い名前を選んだ変数を取り除く必要がある場合は、del strを実行できますが、実際のプログラムでは実行しないでください。

+0

アドバイスをいただきありがとうございます。つまり、functionを変数名として使用すると、変数ではなく実際の関数名を呼び出す方法がありません。 – user3375740

+0

@ user3375740:これはC#ではありません。関数と変数は別々の名前空間に存在しません。変数をシャドーイングするときにビルトインを呼び出すための技術的な回避策がありますが、別の名前を選択するよりもはるかに不器用です。 – user2357112

+0

'globals()'や[builtins](https://docs.python.org/3/library/builtins.html)を使って組み込み関数にアクセスする方法があります –

1

変数名str='hello world'は、関数strと衝突します。

変数に別の名前を指定するだけです。

2

あなたはまだそれにアクセスすることができます。

import builtins 
builtins.str(123) 

は、それがキーワードである、変数名としてstrを使用しないでください。

+0

これは対話モードや'__main__'。組み込みの名前がす​​べて入っているモジュールを本当に使いたいのであれば、Python 2では 'import __builtin__'(no s)、Python 3では' import builtins'です。 – user2357112

+0

私の答えを編集してください。 –

関連する問題