#python #function
#python #функция
Вопрос:
Я пишу скрипты на python для вызова функции.
Обычно вызываются функции:
def myCall():
print "Hello World"
Но я хотел бы назвать / использовать функцию как:
def my Call():
print "I did it!"
Я знал, что мир начнет думать, почему программист называет функцию таким образом. Просто замените «пробел» на «under score» или что-то еще! Хм … но я не хочу, чтобы скрипт работал так.
Есть предложения вызвать функцию с помощью «пробела»?
——————————————-ДОПОЛНЕНИЕ—————————————-
Хорошо, ребята! Я собираюсь объяснить, как работает мой скрипт. В частности, почему я использую пробел в имени функции. На этой странице много ошибок, поэтому я размещаю это дополнение, чтобы объяснить, почему я это сделал.
Я надеюсь, это поможет всем понять, почему я это сделал 🙂
Приветствую с уважением!
Например.
===============
Welcome Menu
===============
1. Option 1
2. Option 2
3. Option 3
4. Option 4
У меня есть главное меню пользователя, и главное будет постоянно обновлять каждое, чтобы проверить, прежде чем отображать указанные выше параметры
array = ["Option 1", "Option 2", "Option 3", "Option 4"]
Проверка выполняется, потому что, когда какая-либо переменная (объявленная перед сценарием) отсутствует, конкретная опция confirm не будет работать.
Например.
for x in range(a)
print "Menu Option
Я помещаю свое меню в цикл (что означает печать только один раз), подсчет числа в меню отделен от параметра string, который автоматически увеличивается каждый раз, когда в массиве есть еще 1 элемент для печати подсчета.
Переменная Option помещается в массив.
Пользователь выберет то, что он / она хочет в настройках. Пусть пользователь выберет «Вариант 1», он перейдет к массиву (array = [«Вариант 1», «Вариант 2», «Вариант 3», «Вариант 4»]), чтобы проверить, какая позиция.
Помните, что массив не является ФИКСИРОВАННЫМ!!! Это зависит от переменной, объявленной в начале скрипта.
Все изменения выполняются для предотвращения ошибок, сбоев и т. Д.!
Наконец, я написал функцию (с пробелом)
И в цикле он вызовет функцию (с пробелом). Для изменения функции потребуется обратная ссылка на массив.
——————————————-ДОПОЛНЕНИЕ—————————————-
Комментарии:
1. Почему программист назвал функцию таким образом? Просто замените пробел на недооцененный или что-то еще! — Мир
2. Просто напишите свой собственный язык и назовите его как-нибудь иначе, чем Python…
3. 1 @JBernado. Может быть, python?
4. Пожалуйста, приведите минимальный пример, чтобы мы поняли, почему вы хотите это сделать.
5. Я отвечаю на то, что Ezylryb назвал «ДОПОЛНЕНИЕМ»: тактика ошибочна. НЕ создавайте коллекцию функций, каждая из которых называется выбором меню; создайте одну функцию (имя которой не содержит пробелов!) и передайте ей соответствующую строку выбора меню. То, что я описываю, гораздо более питоническое, чем подход с расширением функций, который, по-видимому, предпочитает Ezylryb.
Ответ №1:
Вам нужно вызывать его обычным способом?
Вот имя функции с пробелами (и пунктуацией!)
>>> def _func():
print "YOOOO"
>>> globals()['Da func name!!1'] = _func
>>> globals()['Da func name!!1']()
YOOOO
Комментарии:
1. Ezylryb … серьезно? Вы бы предпочли вызвать функцию, выполнив
globals()['Da func name!!1']
вместо my_call() ? 1 за ответ2. Мне специально сказали не трогать основной код (написанный предыдущим программистом) и продолжать писать сценарии. Я просто ищу лучший способ упростить свою жизнь, вызывая функции
3. @Ezylryb мне все еще любопытно, чего вы пытаетесь достичь с помощью пробела?
4. Привет, ребята, я разместил раздел дополнений, чтобы объяснить, почему мне нужно использовать функцию с <пробелом> . Спасибо!
5. видел это через 6 лет после публикации, и это меня развлекает. приближается один нерелевантный голос.
Ответ №2:
Если не изменять интерпретатор Python, вы не можете (по крайней мере, не с вашим примером синтаксиса)
Пробелы используются для разделения токенов не только в Python, но и в английском (и нескольких других языках). Итак, даже если вы найдете способ сделать это, ваш код будет гораздо менее читабельным, поскольку вам, возможно, придется прочитать целую фразу, чтобы выяснить, какая функция используется в любой заданной строке.
Это было бы сродни удалению всех пространств без указания; вам пришлось бы прочитать все целиком и потратить значительно больше времени на мысленный анализ, просто чтобы узнать, что говорит код (не говоря уже о том, что он делает!).
Комментарии:
1.
"When a user uploads a file, a metadata entry is created and stored in mongo"{ //test goes here. }
Пробелы имеют значение.2. Привет, ребята, я разместил раздел дополнений, чтобы объяснить, почему мне нужно использовать функцию с <пробелом> . Спасибо!
Ответ №3:
В Python 3 вы можете использовать идентификаторы, содержащие символы, но не знаки препинания. Попробуйте использовать символ, который почти невидим, например, среднюю точку (U 00B7).
# coding: utf-8
def my·Call():
print("Hello World")
my·Call()
Комментарии:
1. Привет, ребята, я разместил раздел дополнений, чтобы объяснить, почему мне нужно использовать функцию с <пробелом> . Спасибо!
2. Да, это почти незаметно.
Ответ №4:
Если вас это утешит, язык программирования Tcl подчеркивает, что «Все является строкой», и что строки представляют собой последовательности любых символов Юникода. В частности, Tcl «proc»-s (ближайший канонический корреспондент функций Python) может быть назван строками, в которые вставлены пробелы.
Комментарии:
1. Привет, ребята, я разместил раздел дополнений, чтобы объяснить, почему мне нужно использовать функцию с <пробелом> . Спасибо!
Ответ №5:
Я довольно опаздываю на вечеринку, но вот она начинается. Обычно я бы попытался использовать что-то вроде a 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')()