Как я могу сделать Python .py файлы общими переменными и константами? - PullRequest
0 голосов
/ 02 мая 2018

Я узнал о C ++ в колледже, и одна вещь, которая меня интересует, - это возможность создать общий заголовочный файл, чтобы все файлы cpp могли получить доступ к объектам внутри. Мне было интересно, есть ли какой-нибудь способ сделать то же самое в Python с переменными и константами? Я только знаю, как импортировать и использовать функции или классы в других файлах py.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Во-первых, если вы когда-либо использовали sys.argv или os.sep, вы уже использовали переменные и константы другого модуля.

Потому что способ, которым вы делитесь переменными и константами, точно такой же, как вы делитесь функциями и классами.

На самом деле, функции, классы, переменные, константы - все это просто глобальные переменные модуля, насколько это касается Python. Они могут иметь значения разных типов, но это переменные одного типа.

Итак, допустим, вы пишете этот модуль:

# spam.py
cheese = ['Gouda', 'Edam']
def breakfast():
    print(cheese[-1])

Если вы import spam, вы можете использовать cheese, точно так же, как вы используете eggs:

import spam

# call a function
spam.eggs()

# access a variable
print(spam.cheese)

# mutate a variable's value
spam.cheese.append('Leyden')
spam.eggs() # now it prints Leyden instead of Edam

# even rebind a variable
spam.cheese = (1, 2, 3, 4)
spam.eggs() # now it prints 4

# even rebind a function
spam.eggs = lambda: print('monkeypatched')
spam.eggs()

Заголовочные файлы C ++ на самом деле являются просто модулями для бедняков. Не каждый язык так гибок, как Python, но почти каждый язык от Ruby до Rust имеет какую-то реальную модульную систему; только C ++ (и C) требует, чтобы вы имитировали его, имея код, который включается во множество разных файлов во время компиляции.

0 голосов
/ 02 мая 2018

Если вы просто хотите сделать определение функций, то этот пост может ответить на ваш вопрос:

Python: как импортировать другие файлы Python

Тогда вы можете определить функцию согласно:

https://www.tutorialspoint.com/python/python_functions.htm

Или, если вы хотите создать класс:

https://docs.python.org/3/tutorial/classes.html

Вы можете посмотреть пример 3.9.5 в предыдущей ссылке, чтобы понять, как создать общую переменную для разных экземпляров объекта.

...