In reading other Python modules, I've seen that many people often include __version__
and __author__
global variables in their source files (its even mentioned in PEP3001). I'd like to document my code with a reasonable set of these variables. What is a list of global variables that might be commonly included?
How to declare a global variable in Python? What is a global variable? A global variable is a variable that is declared outside the function but we need to use it inside the function. Here, variable a is global. As it is declared outside the function and can be used inside the function as well. Hence the scope of variable a is global.
If you don’t use global within a function, Python uses the local namespace and the variable is local. It goes away after the function completes. So to modify a global variable in a function’s block, you must use a global statement to declare that the variable is defined in the global scope:
The global keyword defines a variable as global in the context of the module it is in, not between modules. Also, from the official Python FAQ: How do I share global variables across modules? Show activity on this post.
Identifiers defined outside any function (or class) have global scope, these may include functions, variables and classes. Variables with global scope are known as global variables. Identifiers with global scope can be used in a .py file or interactive session anywhere after they’re defined.
There isn't a specific standard for those global variables - as noted in the PEP you linked, they were attempts to achieve a standard but haven't become universally accepted in any singular form.
The real standard is the PyPI metadata, which is specified in the setup.py
file for your module, using distutils
(or a compatible interface). Here's the example from the packaging tutorial:
from distutils.core import setup
setup(
name='TowelStuff',
version='0.1.0',
author='J. Random Hacker',
author_email='[email protected]',
packages=['towelstuff', 'towelstuff.test'],
scripts=['bin/stowe-towels.py','bin/wash-towels.py'],
url='http://pypi.python.org/pypi/TowelStuff/',
license='LICENSE.txt',
description='Useful towel-related stuff.',
long_description=open('README.txt').read(),
install_requires=[
"Django >= 1.1.1",
"caldav == 0.1.4",
],
)
http://guide.python-distribute.org/creation.html
Use distutils
(or the superset setuptools
) instead to provide metadata about your project.
Especially when using setuptools
, that metadata is then discoverable and reusable through the pkg_resources
module.
There is no standard for global variables such as __version__
, not even for the Python stdlib, which is why the effort to provide this metadata in the stdlib for Python 3 has not amounted to anything.
I can recommend the Python Packaging User Guide as a primer on how to package your project properly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With