Python: использовать пробелы в имени функции? - PullRequest
4 голосов
/ 04 октября 2011

Я пишу скрипты Python для вызова функции.

Обычно вызываются функции:

def myCall():
    print "Hello World"

Но я хотел бы назвать / использовать функцию как:

def my Call():
    print "I did it!"

Я знал, что мир начнет думать, почему программист так называет функцию.Просто замените «пробел» на «под партитурой» или что-то еще!Хм ... но я не хочу, чтобы скрипт работал.

Любое предложение вызвать функцию с пробелом?

-------------------------------------------ДОБАВИТЬ----------------------------------------

Хорошо, ребята!Я собираюсь объяснить, как работает мой сценарий.В частности, почему я использую пробел в имени функции.На этой странице много любопытства, поэтому я размещаю это дополнение, чтобы объяснить, почему я это сделал.

Надеюсь, это поможет всем понять, почему я это сделал :)

Cheerс уважением!

Например

===============
Welcome Menu
===============
1. Option 1
2. Option 2
3. Option 3
4. Option 4

У меня есть главное меню пользователя, и главное будет постоянно обновляться каждый раз, чтобы проверять, прежде чем отобразятся параметры выше

array = ["Option 1", "Option 2", "Option 3", "Option 4"]

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

Например,

for x in range(a) 
    print "Menu Option

Я помещаю свое меню в цикл (Значениепечатать только один раз), подсчет числа в меню отделяется от строкового параметра, и каждый раз в массиве для распечатки подсчета выполняется автоматическое приращение.Переменная Option размещается в массиве.

Пользователь выбирает то, что он / она хочет в опциях.Пусть указанный пользователь выберет «Вариант 1», он перейдет в массив (array = [«Вариант 1», «Вариант 2», «Вариант 3», «Вариант 4»]), чтобы проверить, какая позиция.

Помните, что массив НЕ ИСПРАВЛЕНО !!!Это изменение зависит от объявления переменной в начале скрипта.

Все vaildation сделаны для предотвращения ошибок, сбоев и т. Д.

Наконец, я должен написать функцию (спробел)

И в цикле он вызовет функцию (с пробелом).Для изменения функции потребуется ссылка на массив.

-------------------------------------------ДОБАВИТЬ----------------------------------------

Ответы [ 5 ]

49 голосов
/ 04 октября 2011

Вам нужно вызвать его обычным способом?

Вот имя функции с пробелами (и пунктуацией!)

>>> def _func():
    print "YOOOO"


>>> globals()['Da func name!!1'] = _func

>>> globals()['Da func name!!1']()
YOOOO
5 голосов
/ 04 октября 2011

За исключением изменения интерпретатора Python, вы не можете (по крайней мере, не с вашим примерным синтаксисом)

Пробелы используются для разграничения токенов не только в Python, но и в английском (и некоторых других языках). Таким образом, даже если вы найдете способ сделать это, ваш код будет гораздо менее читабельным, поскольку вам, возможно, придется прочитать целую фразу, чтобы выяснить, какая функция используется в любой заданной строке.

Это было бы сродни снятию всех пробелов с обстановкой; вам придется прочитать все это и потратить значительно больше времени на его мысленный анализ , просто чтобы узнать, что говорит код (не говоря уже о том, что он делает!).

4 голосов
/ 04 октября 2011

В Python 3 вы можете использовать идентификаторы, содержащие символы, но не знаки препинания. Попробуйте символ, который почти невидим, например, средняя точка (U + 00B7).

# coding: utf-8

def my·Call():
    print("Hello World")

my·Call()
1 голос
/ 28 июля 2017

Я довольно поздно на вечеринку, но здесь это идет.Я обычно пытался бы использовать что-то вроде dict для этого.Но если вам действительно нужна функция, вы можете попробовать:

import test  # Name of the module

def hello():
    print('Hello World')

setattr(test, 'Hello World', hello)

# This can be in the calling module
getattr(test, 'Hello World')()
1 голос
/ 04 октября 2011

Если это утешает, язык программирования Tcl подчеркивает, что «Все является строкой», и что строки - это последовательности любых символов Юникода.В частности, Tcl "proc" -s (ближайший канонический корреспондент к функциям Python) может быть назван с помощью строк, которые содержат пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...