Проверка на существование переменной python
В функции не передаётся никакого значения, но, по сути, для их взаимодействия я должен ввести какую-то общую переменную Я так и сделал, создав строковую переменную, и возвращая её как результат Но осталась проблема — при первом вызове функции мне нужно создать эту строковую переменную. Могу ли я реализовать её создание таким образом:(дальше псевдокод)
if not variable.exist(): string = ''
Как это можно описать в коде?
Отслеживать
задан 6 окт 2019 в 13:01
Artyom Lazovikov Artyom Lazovikov
559 1 1 золотой знак 7 7 серебряных знаков 18 18 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Вообще не понял задачи 🙂 но псевдокод переводится в код вот так. Локальная переменная:
if 'variable' not in locals(): variable = ''
if 'variable' not in globals(): variable = ''
Отслеживать
ответ дан 6 окт 2019 в 13:09
25.9k 7 7 золотых знаков 31 31 серебряный знак 48 48 бронзовых знаков
Глобальные переменные — вообще очень скользкий инструмент, а в вашем случае можно легко обойтись без них:
def five(val=None): if val is None: return 5 # Если функция вызвана с пустыми скобками - просто возвращает 5 else: # А если в скобках что-то было # То здесь выполняется какая-то другая логика с этим значением
Отслеживать
ответ дан 6 окт 2019 в 14:01
20.4k 4 4 золотых знака 25 25 серебряных знаков 52 52 бронзовых знака
import inspect class ArithmeticFunc: def __init__(self, val): self._val = val def __add__(self, other): return type(self)(self._val + other._val) def __mul__(self, other): return type(self)(self._val * other._val) def __call__(self, func=None): if func is None: return self return func(self) @classmethod def lookup(cls, name): mapping = < 'four': 4, 'five': 5, 'seven': 7, 'nine': 9, >try: num = mapping[name] except KeyError as ex: raise LookupError(ex) return cls(num) def __repr__(self): return str(self) def __str__(self): return str(self._val) def operator(func): def binded_to_first(first): def binded_to_second(second): return func(first, second) return binded_to_second return binded_to_first def set_up(): importer = inspect.currentframe().f_back importer.f_globals.update(< 'times': operator(lambda first, second: second * first), 'plus': operator(lambda first, second: first + second) >) for name in importer.f_code.co_names: if ( (name in importer.f_globals) or (name in importer.f_locals) or (name in dir(__builtins__)) ): continue try: importer.f_globals[name] = ArithmeticFunc.lookup(name) except LookupError: pass def main(): set_up() print(seven(times(five()))) # 35 print(four(plus(nine()))) # 15 if __name__ == '__main__': main()
Отслеживать
ответ дан 6 окт 2019 в 16:35
Andrio Skur Andrio Skur
2,883 3 3 золотых знака 14 14 серебряных знаков 27 27 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Проверка на существование переменных
Создание файла и проверка папки на существование
Здравствуйте. Возникла необходимость чтобы python программа могла сама создавать файлы с заданным.
Проверка переменной на существование
Как в python’е проверить переменную на существование? Мне нужно записать вот такой код на python’е.
Проверка email адреса на существование
Доброго времени суток. Есть надобность в небольшой программе. Суть в том что после ввода email.
Проверка на существование нескольких переменных
<?php error_reporting(-1); header(‘Content-Type: text/html; charset=utf-8’); if (isset($_POST).
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от CyberGame 
потому что переменная уже объявлена
Где? В Python переменные не объявляются. Они сразу инициализируются.
201 / 88 / 15
Регистрация: 27.07.2018
Сообщений: 323
Garry Galler,
Тут проверка не существование переменной. Python выдает ошибку на то, что неверное имя переменной, мой except перехватывает ошибку, и инициализирует переменную, но прикол в том, что теперь каждый раз работает функция print. Не понимаю, в чём ошибка.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Ну если это так, то у меня все работает и ошибка происходит ровно один раз:
1 2 3 4 5 6 7 8
n = 0 while n 10: try: lvl_player += 0 except NameError: lvl_player = 1 print(lvl_player) n +=1
201 / 88 / 15
Регистрация: 27.07.2018
Сообщений: 323
Garry Galler, кхм, и как мне разбираться, отладчик работать не собирается, ибо я пишу телеграмм бота.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
А какой смысл городить подобную конструкцию из try except, вместо нормальной инициализации переменной в правильном месте?
201 / 88 / 15
Регистрация: 27.07.2018
Сообщений: 323
Garry Galler, более креативного решения своей задачи не придумал.
В начале функции, объявляются переменные, а хотелось бы, чтобы они инициализировались один раз, но у меня вечный цикл, а пользоваться глобальными переменными плохо, можно ли как-то по другому решить эту задачу?
Добавлено через 6 минут
Garry Galler, конечно, я могу иницилизировать переменные вне функции, и передавать их в качестве аргумента, еще не факт, что будет работать. Может так нужно?
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от CyberGame 
но у меня вечный цикл
А какая разница? Переменная lvl_player в каком scope используется? В локальном?
И в чем тогда будет разница, если ее там же и инициализировать?
Я все равно не понимаю смысла использования try except.
Добавлено через 54 секунды
Если делать все нормальному — нужно просто использовать ООП.
201 / 88 / 15
Регистрация: 27.07.2018
Сообщений: 323
Garry Galler, смысл в том, что если ее там же использовать, то она в вечном цикле, всё время обновляет значение. А хотелось бы один раз, если ООП решит данную проблему, я думаю перепишу 1к строчек)
Добавлено через 1 минуту
Просто я немного не представляю, как использовать ООП в python-telegram-api, ибо учился по туторам без ООП, плюс мало практики, ибо занимаюсь программированием 1 неделю.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Где в telegrambotapi вечный цикл? Он в bot.polling(). Но он спрятан от пользователя.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
import telebot API_TOKEN = '' bot = telebot.TeleBot(API_TOKEN) # Handle '/start' and '/help' @bot.message_handler(commands=['help', 'start']) def send_welcome(message): bot.reply_to(message, """\ Hi there, I am EchoBot. I am here to echo your kind words back to you. Just say anything nice and I'll say the exact same thing to you!\ """) # Handle all other messages with content_type 'text' (content_types defaults to ['text']) @bot.message_handler(func=lambda message: True) def echo_message(message): bot.reply_to(message, message.text) bot.polling()
Добавлено через 2 минуты
В python-telegram-api его тоже нет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
#!/usr/bin/env python # -*- coding: utf-8 -*- # This program is dedicated to the public domain under the CC0 license. """ Simple Bot to reply to Telegram messages. First, a few handler functions are defined. Then, those functions are passed to the Dispatcher and registered at their respective places. Then, the bot is started and runs until we press Ctrl-C on the command line. Usage: Basic Echobot example, repeats messages. Press Ctrl-C on the command line or send a signal to the process to stop the bot. """ import logging from telegram.ext import Updater, CommandHandler, MessageHandler, Filters # Enable logging logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) # Define a few command handlers. These usually take the two arguments update and # context. Error handlers also receive the raised TelegramError object in error. def start(update, context): """Send a message when the command /start is issued.""" update.message.reply_text('Hi!') def help(update, context): """Send a message when the command /help is issued.""" update.message.reply_text('Help!') def echo(update, context): """Echo the user message.""" update.message.reply_text(update.message.text) def error(update, context): """Log Errors caused by Updates.""" logger.warning('Update "%s" caused error "%s"', update, context.error) def main(): """Start the bot.""" # Create the Updater and pass it your bot's token. # Make sure to set use_context=True to use the new context based callbacks # Post version 12 this will no longer be necessary updater = Updater("TOKEN", use_context=True) # Get the dispatcher to register handlers dp = updater.dispatcher # on different commands - answer in Telegram dp.add_handler(CommandHandler("start", start)) dp.add_handler(CommandHandler("help", help)) # on noncommand i.e message - echo the message on Telegram dp.add_handler(MessageHandler(Filters.text, echo)) # log all errors dp.add_error_handler(error) # Start the Bot updater.start_polling() # Run the bot until you press Ctrl-C or the process receives SIGINT, # SIGTERM or SIGABRT. This should be used most of the time, since # start_polling() is non-blocking and will stop the bot gracefully. updater.idle() if __name__ == '__main__': main()
Проверка переменной на существование
Проверка email адреса на существование
Доброго времени суток. Есть надобность в небольшой программе. Суть в том что после ввода email.
Проверка на существование переменных
Здравствуйте, код: try: lvl_player += 0 except NameError: lvl_player.
Создание файла и проверка папки на существование
Здравствуйте. Возникла необходимость чтобы python программа могла сама создавать файлы с заданным.
Проверка на существование переменной
Как лучше проверять существует ли переменная или не пустая ли она? Вот так if(isset($a) &&.
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
1 2 3 4 5 6
try: a except NameError: a = '' else: a = a + ' '
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Для глобальных переменных:
1 2 3 4 5 6 7
a = "test" if 'a' in globals(): a+=' ' else: a='' print(a)
PS: Первого ответа не видел — но как вариант пускай будет и мой пост. Если так не делают — то можете поправить.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Rayzor92, эм, а зачем тебе это?
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
Сообщение от alex925 
Rayzor92, эм, а зачем тебе это?
Очевидно, говнокод с PHP переписывается в говнокод на Python’е.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Сообщение от smlprog 
Очевидно, говнокод с PHP переписывается в говнокод на Python’е.
Задача «проверять существование переменной» мягко говоря ОООЧЕНЬ не очевидная.
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
Например, так можно реализовать значение аргумента по умолчанию. В php готовых языковых конструкций для этого нет.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
Примерно так любители ml’ей смотрят на adt и pattern matching в python’е.
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
Сообщение от smlprog 
Примерно так любители ml’ей смотрят на adt и pattern matching в python’е
есть же православный elif =)
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
Сообщение от cyber-satyr 
есть же православный elif =)
Тогда уж эксепшены и словари из лямбд.
Регистрация: 01.03.2016
Сообщений: 1
1 2 3 4
if 'a' in locals(): #Для локальных a += ' ' else: a = ' '
Как то так еще.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от Arct 
Как то так еще.
В python это не требуется.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Проверка на существование переменной
Всем доброго времени суток! Подскажи существует ли в JS аналог проверки на существование.
Проверка на существование $_GET переменной
Допустим есть адрес: site.ru/index.php?module=user&id=12&action=edit§ion=tel Как проверить.
Проверка на существование
есть таблица Client со столбцами (Name,LastName,MobilePhoneNumber,Email) и нужно проверить на.
Проверка на существование
Есть один txt-файл. В нем построчно написаны файлы и их вес в байтах. Пример: files.rar 12345678.
Как определить существование переменной?
Допустим, объявляется переменная int x = 2. Как удалить эту переменную и как проверить существует.
Проверка записи на существование в БД
Нужна помощь:wall: Есть форма сотрудники, через которую можно добавлять/обновлять/удалять записи.
Jenkins — Проверка существования переменной
Если в Jenkins Pipeline используется переменная, которая создается на основе Webhook‘а или т.п., то при ручном запуске задача завершится ошибкой. Чтобы это избежать, можно добавить проверку существования переменной и задать ей значение.
pipeline < agent any stage('Check ENV') < when < expression < env.GIT_COMMIT_ID == null >> steps < script < echo "COMMIT ID IS NOT SET" env.GIT_COMMIT_ID = sh(script: 'git log --format="%H" -n 1', returnStdout: true).trim() >> > > >
В данном примере проверяется наличие переменной «GIT_COMMIT_ID«, и при ее отсутствии выполняется скрипт, который задает данную переменную со значением последнего HASH коммита для данной ветки. Данная проверка должна выполнятся только после «checkout» стейджа.
Похожие записи
- FIX ERROR — Centos: Public key for jenkins-2.289.3-1.1.noarch.rpm is not installed
- Jenkins — Python VirtualEnv с выбором версий
- Jenkins — Active Choice: SSH — Вернуть значения удаленной команды
- Jenkins — Active Choice: S3 — Вернуть нужное значение ключа с JSON файла
