- 6
Kto chcę zostać #python developerem?
i zrobić fajną stronę w #django aby była do portfolio, a co najważniejsze, czegoś nowego się nauczyć
i nie wie czy dobrze zaprojektował bazę danych #sql, bo chce stworzyć "klona" olx (pic rel)
---
Dzień dobry!
Napiszcie co poprawić i co dodać.
Dziękuje i Pozdrawiam!
#programowanie
i zrobić fajną stronę w #django aby była do portfolio, a co najważniejsze, czegoś nowego się nauczyć
i nie wie czy dobrze zaprojektował bazę danych #sql, bo chce stworzyć "klona" olx (pic rel)
---
Dzień dobry!
Napiszcie co poprawić i co dodać.
Dziękuje i Pozdrawiam!
#programowanie
@Zik3n: nie ograniczaj tak kolumny phone number, co z telefonami kierunkowymi lub innymi krajami. Classified powinien mieć referencje tylko do sub category (dalej jest referencja do category)
@Zik3n: wg mnie:
1. phone number do zmiany
2. zamiast charów dawałbym nvarchar (o ile w tej Twojej bazie coś takiego jest)
3. warto dodawać prefiksy do tabelek to nie będziesz musiał robić aliasów. Więc np:
Tabela Classfield:
claIdclassfield
claIdcustomer
claTitle
claPrice
itd..
Łączysz się wtedy po claIDCategory = scaIDCategory, bez aliasów dużo przyjemniej się pisze.
1. phone number do zmiany
2. zamiast charów dawałbym nvarchar (o ile w tej Twojej bazie coś takiego jest)
3. warto dodawać prefiksy do tabelek to nie będziesz musiał robić aliasów. Więc np:
Tabela Classfield:
claIdclassfield
claIdcustomer
claTitle
claPrice
itd..
Łączysz się wtedy po claIDCategory = scaIDCategory, bez aliasów dużo przyjemniej się pisze.
- 2
IF TESTS, AND, OR #python
Tutaj kod
Formatowanie tutaj to jest jakiś, motyla noga, dramat.
#zikenpython <-- jeżeli się nie podoba to jest taka afroamerykańska lista ( ͡° ͜ʖ ͡°). Jeśli popełniłem gdzieś błąd napisz w komentarzu (✌ ゚ ∀ ゚)☞
Tutaj kod
Formatowanie tutaj to jest jakiś, motyla noga, dramat.
#zikenpython <-- jeżeli się nie podoba to jest taka afroamerykańska lista ( ͡° ͜ʖ ͡°). Jeśli popełniłem gdzieś błąd napisz w komentarzu (✌ ゚ ∀ ゚)☞
- 1
Augmented Assignments (rozszerzone przypisanie? w każdym razem coś z += i listami) #python 2.X oraz 3.X
Dodawanie elementu do listy
Dodawanie elementów do listy (ten sam przypadek co wyżej)
Dodawanie elementu do listy
some_list = []
some_list = some_list + [1] # można tak ale tutaj tworzymy kopie listy przez co program jest teoretycznie wolniejszy
some_list.append(2) # tutaj już nie działamy na kopii listy tylko bezpośrednio na obiekcie przez co jest szybsze
Dodawanie elementów do listy (ten sam przypadek co wyżej)
some_list = []
some_list
- 3
Sequence assigment (python 2.X oraz 3.X) in #python
a, b, c = 1, 2, 3
[a, b, c] = (1, 2, 3)
# a = 1, b = 2, c = 3
((a, b), c) = ('py, 'th')
# a = 'p', b = 'y' c = 'th'
string = 'word'
a, b = string[0], string[1:]
# a = w, b = 'ord'`
Extended Sequence Unpacking (tylko python 3.X ale można (a
a, b, c = 1, 2, 3
[a, b, c] = (1, 2, 3)
# a = 1, b = 2, c = 3
((a, b), c) = ('py, 'th')
# a = 'p', b = 'y' c = 'th'
string = 'word'
a, b = string[0], string[1:]
# a = w, b = 'ord'`
Extended Sequence Unpacking (tylko python 3.X ale można (a
- 9
Decimal Type
Od dawna wiadomo ( ͡° ͜ʖ ͡°), że:
Jest to wynik bardzo bliski zeru (nie zero!) ale końcowy użytkownik nie takiego rezultatu by oczekiwał, więc jak to "naprawić"?
Otóż jest taki moduł jak decimal:
Ale warto zwrócić tutaj uwagę na:
Od dawna wiadomo ( ͡° ͜ʖ ͡°), że:
0.1 + 0.1 + 0.1 - 0.3 == 5.551115123125783e-17
Jest to wynik bardzo bliski zeru (nie zero!) ale końcowy użytkownik nie takiego rezultatu by oczekiwał, więc jak to "naprawić"?
Otóż jest taki moduł jak decimal:
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3'))
# 0.0
Ale warto zwrócić tutaj uwagę na:
from decimal import
- 1
@Lunatik: Ale to są rozwiązania przykładowych problemów na które mógłbyś się natknąć
@hamskloss: Ale całym clue mojej wypowiedzi był oto, że nie jest to żadna ciekawostka tylko absolutna podstawa pythona... ( ͡° ʖ̯ ͡°)
Podaję kolejne potencjalne ciekawostki:
2 * True + False
a = float(0.1)
b = float(0.1)
In [3]: a is b
Out[3]: False
In [4]: a == b
Out[4]: True
[] = () = {}
Podaję kolejne potencjalne ciekawostki:
2 * True + False
a = float(0.1)
b = float(0.1)
In [3]: a is b
Out[3]: False
In [4]: a == b
Out[4]: True
[] = () = {}
- 3
Jaka jest różnica pomiędzy repr() a str() w #python?
Obie funkcje przekształcają obiekty na reprezentację tekstową z tą różnicą, że repr() daje wynik tak jak zostało to zakodowane a str() (jak print()) zwraca jak najbardziej user-friendly wynik.
Jak macie coś do dodania to piszcie (✌ ゚ ∀ ゚)☞!
#programowanie #zikenpython
Obie funkcje przekształcają obiekty na reprezentację tekstową z tą różnicą, że repr() daje wynik tak jak zostało to zakodowane a str() (jak print()) zwraca jak najbardziej user-friendly wynik.
repr('something')
# "'something"'
str('something')
# 'something'
Jak macie coś do dodania to piszcie (✌ ゚ ∀ ゚)☞!
#programowanie #zikenpython
@Zik3n: z tego co wyczytalem w dokumentacji repr ogranicza wielkość
- 3
Operatory wyrażeń w #python (wybrane):
Ternary selection
Wynik
Division
Wynik
Jakie to jest ciekawe (。◕‿‿◕。)!!
#programowanie
Ternary selection
print('fun1') if True else print('fun2')
print('fun1') if False else print('fun2')
Wynik
Division
print(12 / 5)
print(12 // 5)
Wynik
Jakie to jest ciekawe (。◕‿‿◕。)!!
#programowanie
- 2
@Zik3n: Z dzielniem w Pythonie trzeba uważać. Działanie tych operatorów różni się pomiędzy 2 i 3 wersją języka.
Dla Pythona 3 prawdziwe będzie:
Operator
Dla Pythona 2, znaczenie operatora
Wraz z wejściem w życie PEP238, zachowanie operatorów
Dla Pythona 3 prawdziwe będzie:
Operator
/
jest operatorem dzielenia liczb zmiennoprzecinkowych, a //
operatorem dzielenia całkowitego ("podłogowego").Dla Pythona 2, znaczenie operatora
//
się nie zmienia, natomiast operator /
staje się operatorem dzielenia liczb całkowitych lub zmiennoprzecinkowych, w zależności od typu licznika lub mianownika.Wraz z wejściem w życie PEP238, zachowanie operatorów
- 1
@Zik3n: no problemo Mirku. Polecam się na przyszłość.
Python 2 na szczęście umiera (http://python3statement.org/#visualization), ale pewnie utrzyma się jeszcze długo w legacy projektach, więc jeśli wiążesz swoją przyszłość z tym językiem, do czego zachęcam, to warto poznać inne różnice, które świetnie zestawia ten art - http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html
Python 2 na szczęście umiera (http://python3statement.org/#visualization), ale pewnie utrzyma się jeszcze długo w legacy projektach, więc jeśli wiążesz swoją przyszłość z tym językiem, do czego zachęcam, to warto poznać inne różnice, które świetnie zestawia ten art - http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html
- 4
Co oznacza Frozen Binary?
Plik który będzie mógł się wykonywać na Windows, Linux lub Mac OS bez potrzeby instalowania #python. Frozen Binaries łączą razem binary code twojego programu wraz z PVM (Python Virtual Machine) w binarny wykonywalny program (np. exe). Można to zrobić za pomocą py2exe lub PyInstaller.
Warto dodać, że takie pliki zajmują trochę miejsca na dysku bo zawierają w sobie PVM ale nie jest to jakaś ogromna
Plik który będzie mógł się wykonywać na Windows, Linux lub Mac OS bez potrzeby instalowania #python. Frozen Binaries łączą razem binary code twojego programu wraz z PVM (Python Virtual Machine) w binarny wykonywalny program (np. exe). Można to zrobić za pomocą py2exe lub PyInstaller.
Warto dodać, że takie pliki zajmują trochę miejsca na dysku bo zawierają w sobie PVM ale nie jest to jakaś ogromna
- 10
Nie każdy o tym wie ale:
#programowanie
When people write software, they are not writing it for themselves. In fact, they are not even writing primarily
for the computer. Rather, good programmers know that code is written for the next
human being who has to read it in order to maintain or reuse it.
#programowanie
- 6
Co można robić za pomocą #python?
• Back-end with Django, TurboGears, web2py, Pylons, Zope, and WebWare
• GUIs with Tkinter and PMW or wxPython GUI API or Dabo
• Database Programming
• Game programming and multimedia with pygame, cgkit, pyglet, PySoy, Panda3D, and others
• Serial port communication on Windows, Linux, and more with the PySerial extension
• Image processing with PIL and its newer Pillow fork, PyOpenGL, Blender, Maya, and
Komentarz usunięty przez autora
@Zik3n: to samo co za pomocą każdego innego języka programowania ogólnego przeznaczenia
Ostatnio popełniłem prosty projekt w #python #django z użyciem #restapi z myślą o nauczeniu się tej technologii. Jeśli ktoś ma chwilę, to może spojrzeć (✌ ゚ ∀ ゚)☞.
Taktyczny link
#programowanie
1. uprawnienia sprawdzaj przez dodanie permission_classes
2. uzywaj serializerow do zwracania danych
3. jezeli uzywasz generyka i definiujesz metode post /get to zwykle znaczy, ze robisz cos zle. te metody sie definiuje w generykach tylko w szczegolnych wypadkach
4. wszystkie twoje apiviews moglyby byc generykami i byloby to lepsze
5. url login troche