Aktywne Wpisy

Aokx +20
Jak chcecie dowiedzieć sie czy kobieta jest dziewicą spytajcie się jej co sądzi o tym że niektórzy meżczyźni wolą dziewice, jak poleci atak to wiadomo. Można też zadać pytanie kontrolne "co to znaczy być dziewicą?" bo lubią naginać definicje dziewictwa.
#logikarozowychpaskow
#logikarozowychpaskow

saakaszi +183
źródło: Bez tytułu
Pobierz




chciałbym uprościć rozbudowaną konstrukcję
if elif (...) elif else- w obecnym rozwiązaniu w zależności od kombinacji warunków sprawdzanych na dwóch zmiennych wykonywana jest inna funkcjachciałbym więc utworzyć słownik - lookup dla tych zmiennych i funcji, coś w tym stylu
function_lookup(wykop niestety zjada spacje): https://pastebin.com/mm1h6NPDimport inspectdef funkcja_a_1():print(f'hello world z funkcji {inspect.currentframe().f_code.co_name}')def funkcja_a_2():print(f'hello world z funkcji {inspect.currentframe().f_code.co_name}')function_lookup = {('a', 1) : funkcja_a_1,('a', 2) : funkcja_a_2}configs = [('a', 1),('a', 2),('b', 1),]for config in configs:print(config)function_lookup.get(config, lambda: print('no action specified'))()ale to nie pozwoli mi zmapować np. takiego kryterium: *pierwsza zmienna wynosi 'a', a druga nie równa się ani 1 ani 2* - potrzebuję informacji, jak efektywnie podejść do tego tematu - czy ktoś byłby w stanie mnie pokierować?
docelowo te kryteria mają być generowane dynamicznie z jakiegoś pliku albo bazy
@janek_: zamiast ('a', 1) lub ('a', 2) możesz użyć funkcję, np.:
matchz pythona 3.10: https://replit.com/@MichalBielawski/DefiantGrizzledLoopfission#main.pydef x(key):.. func_ptr = { ('a', 1): funa1, ('a', 2): funa2, ('b', 1): funb1 }
.. try:
.... func_ptr[key]()
.. except KeyError:
.... print("no action")
albo jeśli faktycznie już taki hardcore że musisz nazwę funkcji z tego składać to rzeczywiście eval, ale zastanowiłbym się nad zmianą takiej architektury.
def x(a, b):.. try:
.... eval(f"funkcja{a}_{b}")()
.. except:
.... print("no
nawet przeszło mi przez głowę wcześniej, żeby może pomyśleć o "structural pattern matching" w kontekście mojego problemu (czyli jestem na etapie, że mam dobrą intuicję), ale zerknąłem na PEP622 i się trochę przestraszyłem...
tym bardziej dzięki, bo teraz przy okazji, z twojego kodu zrozumiałem jak działa structural pattern matching :)