LINUX.ORG.RU

Программирование на Python: Часть 1. Возможности языка и основы синтаксиса

 


0

0

Этот цикл статей предназначен для того, чтобы помочь успешному преодолению «кривой обучения», последовательно предоставляя информацию, начиная с самых базовых принципов языка до его продвинутых возможностей в плане интеграции с другими технологиями. В первой статье речь пойдет об основных возможностях и синтаксисе Python. В дальнейшем мы рассмотрим более сложные аспекты работы с этим популярным языком, в частности объектно- ориентированное программирование на Python.

>>> Подробности

★★★

Проверено: boombick ()
Ответ на: комментарий от oami

и такое:

python –c “import time; print time.asctime()”

:-D

(заметьте что не —

python3 –c «import time; print(time.asctime())»

или не

python2 -3 –c «import time; print time.asctime()»

)

mkfifo
()

статья и правда слабовата, студент с похмелья на лабах в 10 больше практического материала усваивает:)

Syncro ★★★★★
()

кстате если уж затеяли тему Пайтона... может мне ктонить скажет из специалистов — поечему такая несправедливость:

$ python3
Python 3.1.1 (r311:74480, Jan 19 2010, 04:22:55) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help()

Welcome to Python 3.1!  This is the online help utility.

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules.  To quit this help utility and
return to the interpreter, just type "quit".

To get a list of available modules, keywords, or topics, type "modules",
"keywords", or "topics".  Each module also comes with a one-line summary
of what it does; to list the modules whose summaries contain a given word
such as "spam", type "modules spam".

help> nonlocal
no Python documentation found for 'nonlocal'

help> keywords

Here is a list of the Python keywords.  Enter any keyword to get more help.

and                 elif                import              return
as                  else                in                  try
assert              except              is                  while
break               finally             lambda              with
class               for                 not                 yield
continue            from                or                  
def                 global              pass                
del                 if                  raise               

help> 

nonlocal — это такое прям уж СЕКРЕТНОЕ ключевое слово которое нельзя документировать????

:-D

mkfifo
()
Ответ на: комментарий от mkfifo

>nonlocal — это такое прям уж СЕКРЕТНОЕ ключевое слово которое нельзя документировать????:-D

знаю такую плюшку, но ни разу не использовал. видно питоновцы решили не напрягать людям мозг. ну и чтоб они по гуглям прошвырнулись заодно :)

asket82
()
Ответ на: комментарий от asket82

> знаю такую плюшку, но ни разу не использовал. видно питоновцы решили не напрягать людям мозг. ну и чтоб они по гуглям прошвырнулись заодно :)

я так понимаю, что будут обязательно трудности с <этой-штукой> если надо использовать переменную которая ДОЛЕКО (за неколько def`ами) является не локальная...

?

mkfifo
()
Ответ на: комментарий от mkfifo

> является не локальная...

чуть не понял)

если надо использовать переменную которая ДОЛЕКО (за неколько def`ами)

имеешь ввиду несколько вложенных друг в друга def? если в основном переменная объявлена, то во вложенных она конечно будет доступна)

asket82
()
Ответ на: комментарий от eugine_kosenko

Вы гениально продемонстрировали, что миф о великой удобочитаемости Питона - не более чем миф. Не надо писать такие примеры кода, ни на чем.

Gukl ★★★
()
Ответ на: комментарий от asket82

> имеешь ввиду несколько вложенных друг в друга def?

верно

если в основном переменная объявлена, то во вложенных она конечно будет доступна)


доутепна то переменная будет — но вот nonlocal уже применить не получиться..

верно?

mkfifo
()
Ответ на: комментарий от mkfifo

Вы гениально продемонстрировали, что миф о великой удобочитаемости Питона - не более чем миф. Не надо писать такие примеры кода, ни на чем.

а что не понятно? запускает строку на выполнение, импортирует модуль времени, узнает дату и время. чуток абракадабра потому что в одну строчку и в кучу.

следует вспомнить о строчке на перле, ага)) и питон просто образец читабельности

доутепна то переменная будет — но вот nonlocal уже применить не получиться.. верно?

не эксперементировал, просто у мя локал отдельно а глобал для всех :D но http://ru.wikibooks.org/wiki/Учебник_Python_3.1 говорит что можно.

asket82
()
Ответ на: комментарий от asket82

> а что не понятно? запускает строку на выполнение, импортирует модуль времени, узнает дату и время. чуток абракадабра потому что в одну строчку и в кучу.

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

Gukl ★★★
()
Ответ на: комментарий от Gukl

>для одноразового скриптика чисто для себя - нормально, конечно.

чисто для себя такое не пишут - не удобочитабельно же, скорее экономия места;)

К тому же, в данном случае от сведения всего-всего в одну строчку вы ничего не выигрываете.

экономия места же. и только)

asket82
()
Ответ на: комментарий от yantux

Нет, мне бы сравнительный пример кода паскаля и питона, который раскрывает преимущество питона над паскалем.


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

vada ★★★★★
()
Ответ на: комментарий от VitS

>> Потому, что упал уровень знаний программиста.

это скорее твой уровень упал

kto_tama ★★★★★
()
Ответ на: комментарий от anonymous

когда это? я думал его похоронили, т.к. автор ушел в какой-то ненужный проект pypy или как его...

olegsov
()
Ответ на: комментарий от vada

>Паскаль быстро компилируется (можно в один проход) и быстро выполняется, а питон вяло интерпритируется.

Не забудь про время разработки: быстрая разработка и приемлемая производительность как правило в разы лучше для ынтырпрайза (да и для хеллоуворлдов), чем быстрая работа и годы на разработку и отладку.

Труд хорошего инженера вообще-то стоит дороже труда процессора и памяти.

anonymous
()

отлично, ждём следующих частей.

vaborg ★★★
()

Спасибо за статью.

Недавно по работе пришлось заглянуть в дебри этого чудища, чуть не двинулся.

Чего только стоит вложенность, управляемая отступом!

anonymous
()
Ответ на: комментарий от zapruder

на чернобыльской атомной видимо последователи вашей религии работали. тоже захотелось протестировать на 100%

zapruder, не тупи. атомная станция - это и есть прод. и на ней уже никаких тестов не проводится.

anonymous
()
Ответ на: комментарий от asket82

не эксперементировал, просто у мя локал отдельно а глобал для всех :D но http://ru.wikibooks.org/wiki/Учебник_Python_3.1 говорит что можно.

как раз там это умалчивают :-( (там пример без вложенных def относительно 'nonlocal') ..

но неважно... :-) :-)

меня больше беспокоит что:

почему это ключевое слово не добавили в документауию...

....ведь придумывают всё больше и больше ключевых слов (ну хорошо хоть что 'print' теперь это не ключевое слово :-)) — а на идентификаторы переменных-и-функций — лексичского пространства остаётся всё меньше и меньше :-( :-(

и вот я захожу в help() , набираю 'keywords'... , чтобы узнать какие имена переменных-и-функций я могу ещё покачто использовать (тоесть это все те кроме тех которые перечисленны в разделе 'keywords') ...но НЕТ-ЖЕ(!) оказывается что есть ещё и <нечто> что неописанно в документации!

как быть! что со всеми нами будет! :-)

mkfifo
()
Ответ на: комментарий от Gukl

самто прочитай что там написанно!

In Python3, you can do a similar thing in a nested scope using the nonlocal keyword:

>>> def foo():
...    x = 10
...    def bar():
...        nonlocal x
...        print x
...        x += 1
...    bar()
...    print x
>>> foo()
10
11

ГДЕ вложенные две функции относительно 'nonlocal' ? (а не относительно пространсва модуля)

???

(также ничего не сказанно о том почему об этом ничего не написанно в официальном help()... почему? )

наиболее наглядным примером для 'nonlocal' былбы — сдедущий:

def foo():
	x = 10
	def bar():
		y = 1000
		def baz():
			nonlocal x
			nonlocal y
			print(x)
			print(y)
			x += 1
			y += 1
		baz()
		print(y)
	bar()
	print(x)
foo()
mkfifo
()
Ответ на: комментарий от mkfifo

asket82> если в основном переменная объявлена, то во вложенных она конечно будет доступна)

mkfifo> доутепна то переменная будет — но вот nonlocal уже применить не получиться..

а не окзалось будет :-) [см. верхнее сообще]

mkfifo
()
Ответ на: комментарий от anonymous

> на чернобыльской атомной видимо последователи вашей религии работали. тоже захотелось протестировать на 100%

zapruder, не тупи. атомная станция - это и есть прод. и на ней уже никаких тестов не проводится.

если честно то проводились, немного бестолковые правда с точки зрения планируемого эффекта относительно имевшихся на станции в то время недостатков, ну да пух с ними, вовсе не они явились катализатором или причиной аварии, просто проводились :)

но вообще что бы не было инсинуаций всем кому интересно вот тут всё подробно расписано что и как

shty ★★★★★
()
Ответ на: комментарий от mkfifo

Здравый смысл подсказывает, что нужно просто в ф-ии «bar» написать «nonlocal x».

А вообще, давай покажи-ка задачу, в которой нужно замыкание в замыкании.

anonymous
()

Ну вообще ни о чём статья. Для знакомства на википедии и то получше написано.

anonymoos ★★★★★
()

Спасибо за статью - изложено коротко и ясно. Для человека осилившего лекции по Паскалю в ВУЗе (типа меня) как раз.

Alex_A_V ★★
()
Ответ на: комментарий от Gukl

>миф о великой удобочитаемости Питона

о_О какая к черту удобочитаемомость? Код на С++ или жабе гораздо понятнее. А тут еще вкуривать надо, как же оно так хитровыебнуто работает

annulen ★★★★★
()
Ответ на: комментарий от Gukl

>Представь простыню, в которой таких строк сотня

Достаточно открыть код почти любой питоновой программы

annulen ★★★★★
()

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

annulen ★★★★★
()
Ответ на: комментарий от X-Pilot

>> 2) unittesting is good :)

И какие фреймворки для юнит-тестирования в Python есть?

Погуглил бы прежде чем этот вопрос задать, что ли ...

Alesh
()
Ответ на: комментарий от Gukl

Совершенно читабельно, как мне кажется. Я же говорю - как в алгебре или матане есть то, что называется set-builder notation: {(x,y)|x<-[0,100],y<-[0,x], x+y нечётный}

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

for(int i=0;i<=100; i++){
 for(int j=0;j<=i;j++){
  if((i+j)%2==1){
...

Нифига не читабельней, как мне кажется.

yet_another_anon
()

Забавно, ни один пример их листингов про функцию не прошёл!

anonymous
()
Ответ на: комментарий от annulen

покажи этот код тому кто первый раз слышит про язык такой C++ - думаю ему тоже ничего не будет понятно. разумеется имеется в виду читаемость кода тем, кто язык знает. а обфускацией заниматься можно на чем угодно

olegsov
()
Ответ на: комментарий от ubuntulover

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

А можно узнать, чем была вызвана необходимость писать бота на Питоне, если вы прекрасно знаете чистый Си?

Alesh
()
Ответ на: комментарий от annulen

какая к черту удобочитаемомость? Код на С++ [..] гораздо понятнее.

ололо, просто Вы к нему больше привыкли, а насчёт большей удобочитаемости не скажите, порой «kewl h@c|(erz» так понапишут - чёрт ногу сломит :)

shty ★★★★★
()
Ответ на: комментарий от ubuntulover

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

Ага, хеллоуворды такие как ютуб )))

Alesh
()
Ответ на: комментарий от annulen

Я, собственно, к тому, что удобочитаемость завист не от языка, а от изначальной удобонаписанности.

Gukl ★★★
()
Ответ на: комментарий от yet_another_anon

Зато можно нормальные имена дать переменным, чтобы было понятно, что с чем тут делают. Для числодробилки, конечно, некритично, можно и место поэкономить ;)

Gukl ★★★
()
Ответ на: комментарий от Gukl

>Вы гениально продемонстрировали, что миф о великой удобочитаемости Питона - не более чем миф.

Так функциональщики же постоянно орут о лямбдах и генераторах, не? Причем вещи то и вправду хорошие и я их введение только одобряю, но мифическая «читабельность кода» (которая мифична не только в случае питона, но и для всех ЯП вообще) таки падает, это да.

YogSagot ★★☆
()

Статья так себе, на троечку, не больше.

Я писал на Паскале, на Фортране (6 лет). После всего этого Питон просто прекрасный язык. Что же касается ошибок и опечаток, они, конечно, досаддны, но всё-таки лучше думать, что пишешь. Питон оставляет вам массу времени на думание вместо быдлокодерства, вот потому на нём логику и разрабатывают.

Что касается вычислений, то есть же numpy, для графиков --- matplotlib либо Gnuplot.py, вот если мне нужно сгенерировать ряд синусоиды с шагом dt=0.01, числом точек 10000 и построить её мне достаточно написать:

from numpy import *
import pylab as pl
dt=0.01; N=10000
t=arange(0.,N*dt,dt)
x=sin(t)
pl.plot(t,x); pl.show()

И сколько я должен городить на Паскале или на Си? Не говоря уже на Фортране. Кстати, вопрос ещё, какая реализация: паскалевская или питоновская будет тормознее.

Vudod ★★★★★
()
Ответ на: комментарий от anonymous

>Чего только стоит вложенность, управляемая отступом!

Самое удачное архитектурное решение во всем языке. За одно только это Гвидо нужно памятник ставить. =)

YogSagot ★★☆
()
Ответ на: комментарий от Vudod

>И сколько я должен городить на Паскале или на Си?

Если возьмешь готовые библиотеки, аналогичные по функционалу этим numpy и matplotlib?

madcore ★★★★★
()
Ответ на: комментарий от YogSagot

>Чего только стоит вложенность, управляемая отступом!

Самое удачное архитектурное решение во всем языке. За одно только это Гвидо нужно памятник ставить. =)

Поддерживаю!

После стиля Питона все эти begin end, обязательные ";" кажутся ужасно тяжёлыми, а фигурные скобки и вовсе бессмысленными.

Vudod ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.