Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Python
Перезагрузить страницу Год Питона, говорят)))
Ответ
 
Опции темы Опции просмотра
  (#46 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 09.01.2012, 02:15

ОК.
Еще одна базовая структура - сет или множество. Внутреннее представление - всё тот же словарь, просто имеет значение только ключ. Есть ключ - элемент присутствует в сете, нет - отсутствует. Конструктор сетов позволяет делать их из списков.

python Код:
>>> s1=set([1,2,3,3,3,4,5])
>>> s1
set([1, 2, 3, 4, 5])
>>> s2=set([5,6,7,7,7,3,4])
>>> s2
set([3, 4, 5, 6, 7])
>>> s1|s2
set([1, 2, 3, 4, 5, 6, 7])
>>> s1&s2
set([3,4,5])
Примеры использования остальных операторов приводить не буду. Множества они и в Африке множества, "|" - объединение, "&" - пересечение, "-" - разница, "^" - симметричная разница, "in" - принадлежность, "<" - строгое вхождение, "<=" - нестрогое вхождение. Кажется ничего не забыл. добавить элемент - add, удалить элемент - remove, может через dir ещё что-нибудь интересное всплывёт, наизусть всего не помню

Последний раз редактировалось gromozeka; 09.01.2012 в 02:57
Ответить с цитированием
  (#47 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 09.01.2012, 02:47

Обработка исключений довольно большая тема, потом я еще много расскажу, но вот для начала самая базовая конструкция:
python Код:
while(True):
    try:
        t=type(input("Input something: "))
    except:
        t="XPEHb"
    print "You entered value which type is: %s"%t

Цитата:
>>>

Input something: 123
You entered value which type is: <type 'int'>
Input something: "hello"
You entered value which type is: <type 'str'>
Input something: lambda x,y:x+y
You entered value which type is: <type 'function'>
Input something: xrange(10)
You entered value which type is: <type 'xrange'>
Input something: "asdfasdf}
You entered value which type is: XPEHb
Если бы ввели что-то некоректное без перехвата исключения, программа бы просто вылетела с ошибкой:
Цитата:
>>> input("Input something: ")
Input something: "asdasd

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
input("Input something: ")
File "<string>", line 1
"asdasd
^
SyntaxError: EOL while scanning string literal
>>>
Ответить с цитированием
  (#48 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 13:23

Функции и их сигнатуры.

python Код:
>>> def f(a,b): print "a - %s, b - %s"%(a,b)

>>> f(1,2)
a - 1, b - 2
>>> f(b=1,a=2)
a - 2, b - 1
>>> def f(a,b=5): print "a - %s, b - %s"%(a,b)

>>> f(1,2)
a - 1, b - 2
>>> f(1)
a - 1, b - 5
>>> def f(*lst):
    print "%s arguments"%len(lst)
    print "first argument - %s"%lst[0]
    print "last argument - %s"%lst[-1]

   
>>> f(1,2,3,4,5,"hello")
6 arguments
first argument - 1
last argument - hello
>>> def f(**dic):
    print "%s arguments"%len(dic)
    print "values of arguments - %s"%dic.items()

   
>>> f(a=5,b=[1,2,3],message_text="hello")
3 arguments
values of arguments - [('a', 5), ('message_text', 'hello'), ('b', [1, 2, 3])]

Порядок элементов в сигнатуре важен. Сначала - обычные аргументы, затем аргументы со значением по умолчанию, затем списочные аргументы, затем словарные.
python Код:
>>> def f(a=5,b):print a,b
SyntaxError: non-default argument follows default argument
>>>
>>> def f(**dic,*lst):print "kuku"
SyntaxError: invalid syntax

Последний раз редактировалось gromozeka; 10.01.2012 в 13:27
Ответить с цитированием
Ads
  (#49 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 13:35

все функции выше просто выводили что-то на экран. они ничего не возвращали, точнее возвращали None. Для возврата значения используется инструкция return:

python Код:
>>> def f(num):
    if type(num)!=int: return "wrong argument type"
    if num%2==0: return "even"
    return "odd"

>>> f("hello")
'wrong argument type'
>>> f(1)
'odd'
>>> f(6)
'even'
Ответить с цитированием
  (#50 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 13:41

лямбды:
python Код:
>>> f=lambda a,b:a+b
>>> f(1,2)
3
>>> f=lambda a,b=5:a+b
>>> f(1)
6
>>> f=lambda *lst:';'.join([str(i) for i in lst])
>>> f(1,2,3,4,5)
'1;2;3;4;5'
>>> (lambda **dic:dic.items())(a=5,b=7,c="hello")
[('a', 5), ('c', 'hello'), ('b', 7)]
>>> f=lambda:"hello"
>>> f()
'hello'
Ответить с цитированием
Ads.
  (#51 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 10.01.2012, 13:49

Гм...
Python Код:
>>> d={}
>>> d[1]=2
>>> d[2]=3
>>> d[3]=4
>>> d
{1: 2, 2: 3, 3: 4}
>>> def f(a=5,b=10): print "a - %s, b - %s"%(a,b)
>>> f(10,20)
a - 10, b - 20
>>> f()
a - 5, b - 10
>>> f(_,_)
a - {1: 2, 2: 3, 3: 4}, b - {1: 2, 2: 3, 3: 4}
>>>
Ответить с цитированием
  (#52 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 13:52

Всё правильно, "_" в питоне - краткое обозначение последнего вычисленного значения. None вычисленным значением не считается.
Ходил анекдот когда-то, что (_*_) - это не задница, а квадрат последнего вычисленного выражения в Питоне.
Ответить с цитированием
  (#53 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 10.01.2012, 13:55

Цитата:
Сообщение от gromozeka Посмотреть сообщение
Всё правильно, "_" в питоне - краткое обозначение последнего вычисленного значения. None вычисленным значением не считается.
Ходил анекдот когда-то, что (_*_) - это не задница, а квадрат последнего вычисленного выражения в Питоне.
)))

Python Код:
>>> 100+300
400
>>> _
400
>>>
Ясьненько...
Ответить с цитированием
  (#54 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 10.01.2012, 14:28

Цитата:
Сообщение от gromozeka Посмотреть сообщение
Ага, они называются - слайсы. Я бы их тоже включил в "новый язык".
А чего им в языке делать? Может лучше в библиотеке?


импортирован с progz.ru
Ответить с цитированием
  (#55 (permalink)) Старый
AD AD вне форума
Member
 
Сообщений: 575
Сказал(а) спасибо: 7
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 15.07.2009
По умолчанию 10.01.2012, 14:28

Почитал тему. Ээээ... А можно присоединиться к изучению? И можно не так быстро? ))) Чуток помедленнее. Все же я не так быстро все осваиваю, к сожалению. Gromozeka, у меня такой вопрос. А как сделать следующее. Создал файл .py. Он не является исполняемым. Как заставить тот же IDLE или другой интерпретатор встроенный (сейчас в Linux сижу и там у меня есть консоль python от редактора medit) подключать эти файлы? Ну что-то наподобие С/С++ инклюдов?

Например, есть файл global.h. В С/С++ он подлючается:
cpp Код:
#include "global.h"
Ответить с цитированием
  (#56 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 10.01.2012, 14:32

gromozeka, у Вас очень хорошо получается
Кратко, ясно, по существу.


импортирован с progz.ru
Ответить с цитированием
  (#57 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 10.01.2012, 14:33

Цитата:
Сообщение от AD_ Посмотреть сообщение
Ну что-то наподобие С/С++ инклюдов?
import. Но ты бы лучше не спешил. ИМХО, gromozeka все в правильном порядке рассказывает


импортирован с progz.ru
Ответить с цитированием
  (#58 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 14:52

D_K, AD_, приветствую! Рад вас видеть
На всякий случай хочу обратить внимание, что в форуме по Прологу, Винитарх ведёт подобный ликбез по ВИП 7.3 .
Сегодня смогу продолжить только вечером.
AD_, это про импорты, но там еще нужно будет рассказать про файлы __init__.py для полного раскрытия темы.
python Код:
from some_module import *
вывалить всё что определено в модуле в глобальное пространство имён. очень не рекомендуется.
python Код:
from some_module import thing1, thing2, thing3
вытащить из модуля только нужные вещи (переменные, функции, классы, объекты и т.д.)
python Код:
import some_module1,some_module2,some_module3
импортировать модули, к их внутренностям обращаться через точку:
python Код:
some_module.thing
python Код:
import some_module as some_module_nickname
from some_module import thing as thing_nickname
импортируем под другими именами

Последний раз редактировалось gromozeka; 10.01.2012 в 14:56
Ответить с цитированием
Пользователь сказал cпасибо:
AD (10.01.2012)
  (#59 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 15:05

Цитата:
А чего им в языке делать? Может лучше в библиотеке?
Да это всё размыто по-моему. В Скале мультитрединг - это библиотека, в Лиспе ООП - это библиотека. Мне просто хочется составить список вещей (не каких-то узкоспециализированных функций, а именно всяких "фишек", вот вроде этих самых слайсов) которые облегчают жизнь программистов на разных языках и острую нехватку которых испытываешь при переходе на другой язык.
Ответить с цитированием
  (#60 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 10.01.2012, 15:51

Цитата:
Сообщение от gromozeka Посмотреть сообщение
Да это всё размыто по-моему. В Скале мультитрединг - это библиотека, в Лиспе ООП - это библиотека. Мне просто хочется составить список вещей (не каких-то узкоспециализированных функций, а именно всяких "фишек", вот вроде этих самых слайсов) которые облегчают жизнь программистов на разных языках и острую нехватку которых испытываешь при переходе на другой язык.
Ок, понятно


импортирован с progz.ru
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку(и) - говорят, что должно работать... wampu Prolog 7 02.08.2007 09:32
О нашем форуме говорят... Винитарх Prolog 6 29.05.2006 20:02



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов