![Zdjęcie w tle](https://cdn.hejto.pl/uploads/communities/images/backgrounds/1200x900/1d07303b2c4de618923899dbb7d12995.jpg)
![Python](https://cdn.hejto.pl/uploads/communities/images/avatars/250x250/8fc39691f807c2a693e69e574ed66027.jpg)
Społeczność
Python
Dla programistów Python
# Oczywiście warto używać modułów natywnie asynchronicznych od razu jeśli jest to możliwe: https://github.com/timofurrer/awesome-asyncio
import asyncio
import urllib.request
def get_page(url):
with urllib.request.urlopen(url) as f:
return f.read(100).decode('utf-8') # Zwraca jedynie 100 pierwszych znaków dla zobrazowania jako przykład
async def main():
urls = [' https://www.google.pl' for _ in range(10)] # Ta sama strona 10 razy jako przykład - ale tu należy podać swoją listę stron
tasks =[asyncio.to_thread(get_page, url) for url in urls]
return await asyncio.gather(*tasks)
results = asyncio.run(main())
[print(result) for result in results]
Kod działa jedynie z Pythonem 3.9 lub wyższym.
Dla starszych wersji Pythona można użyć staroszkolnego podejścia z ThreadPoolExecutor lub metody run_in_executor dla loop z modułu asyncio.
#technologia #komputery #programowanie #python
Brakuje tutaj kolorowania składni :d
@hejto - @rayros mówi, że brakuje tutaj kolorowania składni
A brakuje przede wszystkim możliwość umieszczania bloków kodu.
Zaloguj się aby komentować
potrzebuję pomocy z jedną rzeczą w #python . Nie jestem programistą, a robię to właściwie w celach edukacyjnych i utknąłem.
Robię webscraping za pomocą biblioteki BeautifulSoup dla kilkuset stacji Infopasazer, ktore znajdują się na różnych adresach URL. Kwestia dotyczy tego, że czasami strony tych stacji działają, a czasami nie i w momencie, gdy skrypt napotka problem zatrzymuje się i nie robi webscrapingu kolejnych stron. Próbowałem dodać
try:
except (AttributeError, requests.exceptions.Timeout):
pass
natomiast to sprawia, że po prostu nie wywala mi błędów w konsoli, a nie kontynuuje pracę.
Czy ktoś ma pomysł jak można sobie z tym poradzić? Jak będzie trzeba więcej kodu to udostępnię.
Dzięki
@kolorado mam nadzieję, że dostaniesz odpowiedź, ja natomiast mam pytanko. Korzystasz z jakiegoś vpna przy scrapowaniu czy yolo bomba na swoim ip? chciałbym zesrapować parę stron, ale boję się, że dostanę bana na ip xD
@wonsz doszedłem do tego, zamiast dla każdego URL dodać osobny try except zrobiłem jeden na cały kod. Dodałem na szybko brakujące dla każdej podstrony i działa.
@Bolec39 myślałem o tym, ale wydaje mi się, że 450 zapytań na godzinę to nie jest chyba jakaś tragedia, dodatkowo to są osobne mikroserwisy więc może się tam nie obrażą
@kolorado no bo tak to mniej więcej z tego zdawkowego opisu wynikało że tu będzie problem.
Zaloguj się aby komentować
![Zostań patronem Hejto](/_next/image?url=%2Finfo-dialogs%2Finfo-dialog-1.png&w=640&q=75)
Zostań Patronem Hejto i tylko dla Patronów
- Włączona możliwość zarabiania na swoich treściach
- Całkowity brak reklam na każdym urządzeniu
- Oznaczenie w postaci rogala , który świadczy o Twoim wsparciu
- Wcześniejszy dostęp, do wybranych funkcji na Hejto
początkujący level. - PROŚBA O POMOC w wyjaśnieniu dziwnego działania programu...
Tworzę dla treningu grę tekstową typu MUD, ćwiczę sobie tworzenie klas, funkcji i innych takich.
https://github.com/yourij/MUD_GAME
Etap rozgrzebanego kodu więc prosze o zrozumienie. Chwilowo repozytorium jest publiczne na potrzeby tego posta.
W dużym skrócie (wprowadzenie).
Jesteśmy na planszy 3x3 pola (współrzędne pól x=0, 1 lub 2 i y=0, 1 lub 2). Zaczynamy na środku.
Możemy po planszy chodzić, gadać z NPCami, w karczmie zjeść obiad, uratować księżniczkę itp...
Żeby to zrobić, trzeba pójść do wiedźmy, rozwiązać zadanie, otrzymać od niej klucz i z kluczem udać się na pole, gdzie jest księżniczka, otworzyć kluczem bramkę i koniec...
______PROBLEM______:
Początkowo teksty postaci trzymałem w pliku talking.py ale chciałem zaznajomić się z JSONem i stąd modyfikacja, gdzie wiedźma swoje teksty (częściowo) bierze z pliku talking.json
Od czasu tej modyfikacji pseudo-gra zawiesza się po otrzymaniu poleceń od gracza. Tzn żeby przejść dalej trzeba wcisnąć ekstra enter.
Dla przykładowego karczmarza czy też księżniczki (gdzie teksty są jeszcze po staremu) problem nie występuje.
plik talking.py
przykładowy fragment kodu, który dziwnie działa:
if (u_inp=='T' or u_inp=='t'): # T = gadaj z wiedzmą
for phrase in my_json["phrases"]:
u_inp=input(phrase["witch_gives_apple"]) # przyjmij input drukując tekst mówiony przez wiedżmę
kod, który działa poprawnie:
elif (playerPos == innKeeperPos): # podobny fragment rozmowy z innym NPCem bez udziału JSONa
u_inp=input(inn_hello)
if (u_inp=='P' or u_inp=='p'):
print(inn_dish1)
(screen z gry... nie śmiać się, proszę)
![788784f0-3123-4f50-ae71-e29186328878](https://cdn.hejto.pl/uploads/posts/images/1200x900/94198700155a588cb6fac829dad12b98.png)
@yourij Trochę spekuluję, ale pewnie dzieje się tak dlatego, że używasz funkcji input()
niezbyt zgodnie z przeznaczeniem: argumentem tej funkcji jest prompt czyli tekst, który jest wyświetlany zanim user wpisze z konsoli jakąś wartość. Dlatego potrzebujesz wciskać ENTER - bo zatwierdzasz pusty ciąg znaków.
@vrkr ok ma to sens... input jest bo odczytuję czasem T/N i inne odpowiedzi gracza. Sprawdzę kod, czy się wiesza w tekstach bez oczekiwanej odpowiedzi ale fajny trop, dzięki...
@vrkr dziękuję... działa.
Gdy zmieniałem kod po przeniesieniu dialogów wiedźmy do pliku json pierwszy fragment (gdzie jest input potrzebny) skopiowałem dalej i zapomniałem zamienić w niektórych miejscach u_inp=input(dialog) na print(dialog).
Zaloguj się aby komentować
#naukaprogramowania
Python ma być prosty i czytelny, dzięki takiemu zapisowi możesz użyj tej samej składni do inkrementacji o dowolną liczbę.
https://stackoverflow.com/questions/3654830/why-are-there-no-and-operators-in-python
@trojkat a co trudnego jest w uzyciu x++? Jest to i proste i czytelne i co najwazniejsze szybsze niz x += 1
Zaloguj się aby komentować
Cały Internet huczy od tego, że do funkcji przekazuje się tylko wartości a nie referencję. A ja po raz kolejny nadziewam się na to, że kiedy przekazuję do swojej metody nazwę innego obiektu to nic nie działa jak powinno i okazuje się, że w sumie zadziałało to jak wskaźnik.
No i to 'del' które nie usunie obiektu dopóki przechowuję go w innych miejscach, no nie wytrzymam.
( ͡° ͜ʖ ͡°)
Jak macie do polecenia jakieś książki które mi to wyjaśnią to poproszę.
Trochę #gownowpis i trochę #zalesie
@pansiano Tu masz fajnie opisane jak to działa - https://realpython.com/python-pass-by-reference/
Generalnie gorąco polecam Real Pythona, dużo ciekawych artykułów tam jest.
Co do samego zachowania argumentów funkcji to w JSie jest to tak samo zrobione zdaje się, także to nie czysto Pytonowe zjawisko
Cały Internet huczy od tego, że do funkcji przekazuje się tylko wartości a nie referencję.
@pansiano A kto tak srogo Cię oszukał?
@kazik117 Kiedyś na szybko goglowałem jak przekazać adres zamiast wartości i zapamiętałem wrażenie 'niedasie'. Cóż, człowiek się uczy na swoich błędach
Zaloguj się aby komentować
![9862475d-eb8e-42cb-b873-99700ad05f9d](https://cdn.hejto.pl/uploads/posts/images/1200x900/8c2b438827d4e67371f835c0810e7a9a.jpg)
@Jokohama W takim razie oprócz wywalenia 10 linii trzeba jeszcze podawanie najmniejszej liczby dać poza pętlę (tak jak masz w rozwiązaniu ćwiczenia nr 1). W zdjęciu rozwiązanie oparte na Twoim. Powodzenia w nauce
![4cb2ead2-613e-4516-8383-11545d86a8f9](https://cdn.hejto.pl/uploads/posts_comments/images/250x250/a994f476d71cc22057fa59e905de04c2.png)
@saqala-bilaabayso Dzięki! Właśnie potem mnie olśniło, że podanie min i max liczby musi być na końcu. Ale uważam, że robienie błędów to forma nauki. Miłej soboty!
@korpowyrobnik No fakt, powinniśmy wszyscy najpierw zapytać co on z tym kodem chce zrobić.
Zaloguj się aby komentować
@Jokohama ja osobiście uczyłem się na: https://checkio.org/ i bardzo dobrze wspominam, jak ktos pyta gdzie? to własnie mowie tam!
@kekenistan dzięki sprawdzę;)
@Jokohama hackerrank
Zaloguj się aby komentować
Siem, jak masz na imię?
Jokohama
Witaj Jokohama!
#chwalesie #XD
Program wart co najmniej 7k.
@sk4ndal dzięki mordo
@Jokohama polecam się
Zaloguj się aby komentować
Skąd najczęściej czerpaliście wiedze jako samouki (doświadczonych #programista15k po studbazie też proszę o wypowiedź może ktoś posiada fajne materialy/linki/tytuły książek)?
#python
@q4py ja uzywam/uzywalem vima/emacsa, bo nie lubie przelaczac sie miedzy mysza i klawiatura, ale co kto woli.
@q4py książka od zera do maszyn lernign python. raz po polsku, raz po angielsku. zależy jaki dzień miał koleś co ją ciągle piszę. jakiś Polak.
@q4py książka od zera do maszyn lernign python. raz po polsku, raz po angielsku. zależy jaki dzień miał koleś co ją ciągle piszę. jakiś Polak.
Zaloguj się aby komentować
#python #java #programowanie #hejjterszukapracy
@Jokohama duże środowisko na początku nauki fajnie wygląda ale nie napisze za Ciebie kodu. Weź sobie ogarnij coś lekkiego typu VS Code czy Sublime Text do Pythona czy webdev wystarczy. Skup się na pisaniu, staraj się zrozumieć jak wszystko uruchomić z linii poleceń niż wszystko klikać w edytorze (bo to z łatwością będziesz mógł zautomatyzować w przyszłości) - niech system będzie twoim IDE
@ar4s_pl wybrałem pythona do nauki. Wydaje mi się bardzo intuicyjny i łatwy. Zobaczymy co z tego będzie;)
@BananowyKoko
to zacznij się uczyć pisać w jakimś języku
wlasnie on o to pyta, odpowiedzia jest Python
Zaloguj się aby komentować
Tym razem nie tylko dla pythonowców.
Utrzymanie i rozwój aplikacji potrafi przysporzyć wielu problemów, zwłaszcza jeśli nie zadbamy o odpowiednią architekturę kodu oraz higienę pracy z kodem. Mnogość przeróżnych podejść do tworzenia aplikacji w dzisiejszych czasach też potrafi doprowadzić do bólu głowy: DDD, TDD, BDD, DRY, WET, KISS i masa innych akronimów prowadzi starcie w naszych głowach, kiedy jeszcze nie wiemy dokładnie w jaką stronę będzie zmierzał projekt.
Poniższy artykuł, a właściwie cała strona, opisuje dwanaście składników aplikacji webowych, które pozwolą nam uniknąć najbardziej fundamentalnych problemów w czasie wdrażania oraz utrzymania oprogramowania. W skrócie są to:
-
Codebase - jedno repozytorium w systemie kontroli wersji, wiele wdrożeń
-
Dependencies - jasno definiuj i izoluj zależności
-
Config - przechowuj konfigurację w środowisku zamiast w kodzie
-
Backing services - traktuj usługi zewnętrzne (np. bazy danych, storage, integracje) jako zasoby
-
Build, release, run - bezwzględnie rozdzielaj od siebie etapy budowania i uruchamiania aplikacji
-
Processes - uruchamiaj aplikację jako jeden lub więcej bezstanowych procesów
-
Port binding - udostępniaj usługi poprzez dowiązanie portów
-
Concurrency - skaluj aplikację w modelu procesowym
-
Disposability - maksymalizuj niezawodność zapewniając szybki start i łagodne zamykanie procesów
-
Dev/prod parity - środowiska lokalne, testowe oraz produkcyjne powinny być do siebie tak podobne, jak tylko możliwe
-
Logs - traktuj logi jako strumienie zdarzeń
-
Admin processes - uruchamiaj zadanie administracyjne jako jednorazowe procesy
@sebkek poprosimy! na pewno ktoś skorzysta
Zaloguj się aby komentować
Temat traktowany po macoszemu przez wielu programistów. Logowanie zdarzeń może jednak dostarczyć nieocenionej pomocy, kiedy zachodzi konieczność prześledzenia zdarzeń na środowiskach produkcyjnych, gdzie nie mamy możliwości debugowania aplikacji.
Autor omawia, wraz z przykładami, najważniejsze zagadnienia związane z modułem logging w Pythonie:
-
dobre praktyki
-
poziomy logowania
-
konfigurację formaterów, handlerów i loggerów
Lekturę polecam każdemu, niezależnie od tego, przy jak dużym projekcie pracujecie - logowanie zdarzeń jest przydatne w każdej skali, zwłaszcza jeśli je dobrze skonfigurujemy i używamy go z głową: Logging in Python like a PRO
Zaloguj się aby komentować
Poniższy artykuł pokazuje, jak samemu można zmienić sposób wyświetlania tracebacków w Pythonie, a także pokazuje kilka przykładowych paczek, które zrobią to za nas.
W dużym skrócie, wystarczy stworzyć funkcję z odpowiednimi parametrami i przypisać ją do sys.excepthook.
Creating Beautiful Tracebacks with Python's Exception Hooks
Zaloguj się aby komentować
Poniższy artykuł omawia dwie metryki złożoności kodu, które mają bezpośredni wpływ na naszą zdolność zrozumienia, co dany kod właściwie robi:
-
Złożoność cyklomatyczna - określana jest liczbą rozgałęzień i punktów decyzyjnych w funkcji
-
Złożoność poznawcza - określana jest liczbą punktów decyzyjnych oraz ilością stopni zagnieżdżenia w funkcji
Jeśli chcecie poznać te metryki lepiej, polecam krótką lekturę: Is your code too complicated?
Polecam również ten plugin zapiąć sobie do testowania złożoności https://pypi.org/project/pytest-mccabe/
najlepiej przed tym jak jeszcze jednostkowe i integracyjne testy są odpalane na CI - np jako element testowania statycznego kodu
Zaloguj się aby komentować
Informacje na ten temat znajdziemy w artykule Tips that may save you from the hell of PyYAML .
Artykuł jest krótki, na kilka minut czytania, ale w skrócie:
-
Zawsze używaj safe_load/safe_dump
-
Utrzymuj oryginalny porządek w kluczach (load/dump)
-
Zapewnij prawidłowe wcięcia (dump)
-
Używaj czytelnego UTF-8 na wyjściu (dump)
- Nie potrzebujesz default_flow_style (dump)
Zaloguj się aby komentować
![Optymalizacja Django - problem N+1](https://cdn.hejto.pl/uploads/posts/images/250x250/59e83b803fdfa2afd7d8a54d83f9e537.png)
Optymalizacja Django - problem N+1
A tak na marginesie: chciałbym trochę rozruszać tutaj społeczność wokół Pythona, więc będę od czasu do czasu wrzucał jakieś lin
Zaloguj się aby komentować