X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Несколько слов о Python для новичков
alexdrob
alexdrob
Topic Starter сообщение 16.8.2011, 16:35; Ответить: alexdrob
Сообщение #1


Так как тут что то совсем глухо по питону, хотел бы показать основы синтаксиса для совсем не знакомых с питоном людей.
ну и так как тут наверное все знакомы с php то буду отталкиваться от него.

синтаксис оператора if
[PHP]php
if (условие) {
действия если истина
}
else {
действия если лож
}[/PHP]

python
[PHP]if условие:
дейтсвия если истина
else:
действия если лож[/PHP]

в php используют скобки {} для группировки каких либо действий
в python используют отступы

то есть в python отступы важны, не важно на сколько вы отступили на пробел или 4 или на знак табуляции, нужно писать все действия обдного блока на одинаковом уровне отступов.


например функция в php
[PHP]function func($a) {
$a .= '!';
echo $a;
}
func('Привет');[/PHP]

такая запись правильная в питоне
[PHP]
def func(a):
a += '!'
print a

func('Привет')[/PHP]

а такая не правильная
[PHP]
def func(a):
a += '!'
print a

func('Привет')[/PHP]

в питоне есть такие понятия, как списки, кортежи и словари.
списки записываются в []
кортежи в ()
словари в {}

список можно менять, это нечто похожее на массив
[PHP]s = [1, 2, 3][/PHP]
что бы добавить элемент в список
[PHP]s.append(5)[/PHP]
мы получим [1, 2, 3, 5]

кортежи не изменяемые, то есть если вы объявили кортеж
[PHP]c = (1, 2, 3)[/PHP]
то в дальнейшем изменить его нельзя
[PHP]c.append(5)[/PHP]
вызовет ошибку

словари, что то типа ассоциативных массивов
[PHP]a = {'name':'alex', 'email':'alex...'}[/PHP]


ну например обход списка:

[PHP]links = ['http://google.com', 'http://html.by', 'http://vk.com']
for link in links:
print link
[/PHP]
аналог в php
[PHP]$links = array('http://google.com', 'http://html.by', 'http://vk.com');
foreach($links as $link) {
echo $link;
}[/PHP]

ps подсветка синтаксиса не работает питона, юзаю php :)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 16.8.2011, 17:15; Ответить: alexdrob
Сообщение #2


например у нас есть кортеж
[PHP]nums = (1, 2, 3)[/PHP]
если мы хотим получить список новый в котором каждый элемент кортежа умножен на 2, то можно написать так
[PHP]nums = (1, 2, 3)

new_nums = []
for num in nums:
new_nums .append(num * 2)
[/PHP]

а можно так

[PHP]nums = (1, 2, 3)

new_nums = [num * 2 for num in nums]
[/PHP]

что бы получить список где элементы умножены на 3 и элементы больше 1
[PHP]nums = (1, 2, 3)

new_nums = [num * 3 for num in nums if num > 1]
[/PHP]
результат
[6, 9]



рассмотрим пример с ссылками, с кортежа с адресами создадим список ссылок
[PHP]urls = ('http://google.com', 'http://html.by', 'http://vk.com')
links = ['<a href="%s">%s</a>' % (url, url) for url in urls][/PHP]
links будет содержать
[PHP]['<a href="http://google.com">http://google.com</a>', '<a href="http://html.by">http://html.by</a>', '<a href="http://vk.com">http://vk.com</a>'][/PHP]

что бы объединить список ссылок в строку разделённую например тегом br можно написать так
str = '<br>'.join(links)
после этого str будет равно
<a href="http://google.com">http://google.com</a><br><a href="http://html.by">http://html.by</a><br><a href="http://vk.com">http://vk.com</a>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 16.8.2011, 17:17; Ответить: alexdrob
Сообщение #3


например у вас есть кортеж
[PHP]urls = ('http://google.com', 'http://html.by', 'http://vk.com')[/PHP]
что бы присвоить его элементы переменным можно сделать так
[PHP]google, html, vk = urls[/PHP]
теперь у нас переменная google = http://google.com, html = http://html.by и vk = http://vk.com


присвоение нескольким переменным в цикле.
например есть такой словарь
[PHP]d = {'user': (1, 1, 5),
'redactor': (2, 5, 15),
'moderator': (3, 10, 25) }[/PHP]
тип учётной записи: id записи, сила голоса при голосовании, количество голосов в день

можно разбить сразу элементы кортежа с параметрами учётной записи в переменные
[PHP]for group, (id, power, count) in d.items():
print "Группа: %s, id: %u, сила голоса: %u, голосов в день: %u" % (group,id,power,count)[/PHP]
в результате вывод будет такой
Группа: moderator, id: 3, сила голоса: 10, голосов в день: 25
Группа: redactor, id: 2, сила голоса: 5, голосов в день: 15
Группа: user, id: 1, сила голоса: 1, голосов в день: 5


ну или просто получить параметры записи в переменные по имени учётки, например редактора
[PHP]id, power, count = d['redactor'][/PHP]
далее в коде нам доступны переменные id = 2, power = 5 и count = 15
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 18.8.2011, 18:39; Ответить: alexdrob
Сообщение #4


пример
[PHP]
#!D:/Python/python.exe
# -*- coding: UTF-8 -*-

html = '''<html>
<head>
<title>%(title)s</title>
</head>
<body>
<div id="menu">
%(menu)s
</div>
<div id="content">
%(content)s
</div>
</body>
</html>
'''

menu = {'главная':'/', 'новости':'/news/', 'форум':'/forum/'}

def application(environ, start_response):
status = '200 OK'
output = {'title':'', 'menu':'', 'content':''}
output.update(main(environ))
output = html % output
response_headers = [('Content-type', 'text/html'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]

def main(environ):
path = environ['PATH_INFO'].strip('/').split('/')
if not path[0]:
path[0] = 'index'
page_name = path[0]
action = globals()[page_name + 'Action']

res = {}
res['menu'] = '<ul>'
for name, link in menu.items():
res['menu'] += '<li><a href="%s">%s</a></li>' % (link, name)
res['menu'] += '</ul>'

res.update(action(environ, path).items())
return res

def indexAction(environ, path):
res = {}
res['title'] = 'Сайт на Python'
res['content'] = 'Привет, Мир!'
return res

def newsAction(environ, path):
res = {}
res['title'] = 'Новости сайта на Python'
res['content'] = 'Тут новости'
return res

def forumAction(environ, path):
res = {}
res['title'] = 'Форум сайта на Python'
res['content'] = 'Тут форум'
return res
[/PHP]
при использовании wsgi сразу вызывается application
далее вызываем вспомогательную функцию main, которая формирует менюшку и парсит адрес страницы, от которого вызываем одну из функций

это просто демонстрация небольшая, вообще в реальном сайте шаблон вынести лучше, и так же страницы можно вынести отдельно ну или по модулям группировать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 4.9.2011, 15:55; Ответить: SEVI
Сообщение #5


alexdrob, спасибо огрмное! очень много для себя подчеркнул и понял.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 6.1.2012, 15:10; Ответить: Mulder_hb
Сообщение #6


Начал изучать python 3. Кто знает, можно ли зная ветку 3.х, успешно работать на django? Или нужно бросать 3 и начать изучать вторую ветку?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 6.1.2012, 22:59; Ответить: alexdrob
Сообщение #7


Ну... джанго то на 3 не станет работать, если именно для данного фв, то толку от 3+ питона не будет, так писать придётся максимум под 2.7 на данный момент.
А вообще, когда мне нужно было написать маленький скриптик на питоне 3, если выскакивала ошибка, я смотрел в доку, что там поменяли) для быстрого исправления хватало инфы, а для более глобального изучения новшеств в питоне 3 пока не как не дойду :)
А если не для django, то однозначно питон 3+, говорят он намного быстрей стал и удобней :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 7.1.2012, 1:13; Ответить: Mulder_hb
Сообщение #8


(alexdrob @ 7.1.2012, 01:59) *
Ну... джанго то на 3 не станет работать

Сама версия языка не проблема. На оси стоят две одновременно. Предполагается само изучение языка. Т.е. изучаю я 3 ветку. Достаточно ли будет изучить 3 ветку + изменения между ветками, чтобы не учить саму вторую ветку?

ЗЫ. Джанго сообщество планирует постепенный переход начиная уже с марта сего года.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 7.1.2012, 1:42; Ответить: alexdrob
Сообщение #9


Ну лично я 3 ветку не учил, со знанием 2.7 мануал по 3 не проблема :)
Но опять же, я не углу***лся.

(Mulder_hb @ 7.1.2012, 04:13) *
Сама версия языка не проблема. На оси стоят две одновременно.

Ну я немного не о том, я имел ввиду, что если вы писать будите с использованием jango, то вам нужен синтаксис под 2.7. С другой стороны, раз уж начинать, тем более раз планируют и django на 3 переходить, то лучше наверное всё же учить 3+ версию.

Если учить 2 то при переходе на третью, вы напишите
print "Hello!"
а вам ошибка, вы посмотрите, нужно в 3+ так
print ("Hello!")
и поправите.

а выучите 3, напишите с использованием jango
print ("Hello!")
вам ошибка, вы посмотрите мануал 2.7 а там
print "Hello"
и опять же исправите.

то есть как не крути, одно и тоже получается, но питон 3 вышел уже давно, а значит питон 2 всё таки будет устаревать, хоть как ие 6 совсем он не пропадёт, но питон 3 будет по любому нужнее :)
имхо питон 3 учить

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Партнерская программа для Эзотерики, Магии, Таро
партнерка для эзотерики
0 LiveExpert 342 Вчера, 15:13
автор: LiveExpert
Открытая тема (нет новых ответов) Партнерская программа для Эзотерики, Магии, Таро
партнерка для эзотерики
0 LiveExpert 317 Вчера, 15:13
автор: LiveExpert
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыAzinomoney.com - гемблинг-партнерка с 65%RS для каждого
Гарантированный заработок на гемблинг-трафике
65 AzinoMoney 29182 27.3.2024, 19:10
автор: AzinoMoney
Горячая тема (нет новых ответов) Делаю полностью уникальный дизайн для сайтов!
46 AlexDIZ 93484 26.3.2024, 20:03
автор: AlexDIZ
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
2 rownong27 1120 26.3.2024, 14:13
автор: knezevolk


 



RSS Текстовая версия Сейчас: 29.3.2024, 2:04
Дизайн