web-dev-qa-db-ja.com

コードでpython Word "type"を使用しても安全ですか?

自分のコードでWordの「タイプ」を使用できますか、それとも予約されていますか?私の関数ヘッダー:

def get(
    self,
    region='Delhi',
    city='Delhi',
    category='Apartments',
    type='For sale',
limit = 60,
    PAGESIZE=5,
    year=2012,
    month=1,
    day=1,
    next_page=None,
threetapspage=0,
    ):

ありがとうございました

34
Niklas

関数のキーワード引数としてtypeを使用すると、関数のスコープ内で 組み込み関数 "type" がマスクされます。したがって、そうすることでSyntaxErrorが発生することはありませんが、それは良い習慣とは見なされず、そうすることは避けます。

43
modocache

どちらでもない。これは予約語ではありません(そのリストは http://docs.python.org/reference/lexical_analysis.html#keywords にあります)が、一般的に組み込みのシャドウを作成することはお勧めしません。

11
Wooble

pythonビルトインをシャドウするのは悪い形だと他の人が指摘していますが、これは、関数または関数パラメーターにtypeと名前を付けた場合にのみ当てはまりますが、

クラス属性にtypeと名前を付けた場合、python組み込みtypeはシャドウされないことに注意してください。

クラス属性を参照する場合でも、クラスインスタンスselfまたはカスタムインスタンス変数が常にプレフィックスとして付けられ、python組み込みが妨げられることはありません。

例えば:

はい:

>>> class SomeClass():
...     type = 'foobar'
...
...     def someFunction(self):
...         return self.type

良くない:

>>> def type(): # Overrides python built-in in global scope
...     pass
...
>>> def foobar(type):
...     return type # Overrides python built-in within func
0
Harsha Goli

typeは予約語と見なしてください。このWordをデータベースフィールドに使用するのは魅力的ですが、type()はオブジェクトのclassを通知するため、最も重要なデバッグ/テスト関数の1つであると考えてください。

$ python

>>> x = 5
>>> s = "rockets"
>>> y = [1,2,3] 

>>> print(type(x)) 
class 'int'

>>> print(type(s))
class 'str'

>>> print(type(y)) 
class 'list'

アトラスは本の一種に分類されますが、代わりに単語「カテゴリ」の使用を検討してください。

0