40

I am deciphering someone else's code and I see the following:

def get_set_string(set_):
     if PY3:
         return str(set_)
     else:
         return str(set_)

Does the underscore AFTER the variable mean anything or is this just a part of the variable's name and means nothing?

Dimitris Fasarakis Hilliard
  • 150,925
  • 31
  • 268
  • 253
nanachan
  • 1,051
  • 1
  • 15
  • 26
  • It's just part of the name. You'll need to ask the author. – Morgan Thrapp Aug 23 '16 at 19:38
  • 15
    It's to distinguish it from `set`, the built-in set type, to avoid shadowing the name - [*"`single_trailing_underscore_ `: used by convention to avoid conflicts with Python keyword"*](https://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles). – jonrsharpe Aug 23 '16 at 19:40
  • thank you for clarifying this – nanachan Aug 23 '16 at 19:47

2 Answers2

64

No semantics are associated with a trailing underscore. According to PEP 8, the style guide for Python, users are urged to use trailing underscores in order to not conflict with Python keywords and/or Python built-ins:

single_trailing_underscore_ : used by convention to avoid conflicts with Python keyword, e.g.

Tkinter.Toplevel(master, class_='ClassName')

Using set_ means that the built-in name for sets, i.e set, won't get shadowed and lose its known reference during the function call.

Community
  • 1
  • 1
Dimitris Fasarakis Hilliard
  • 150,925
  • 31
  • 268
  • 253
12

It means nothing. I believe the one who wrote this wanted a variable name designating a set, but set is a type in Python (which creates a set), so he added the underscore.

Israel Unterman
  • 13,158
  • 4
  • 28
  • 35