Closing Messages - PyCon 2015
16:22
9 жыл бұрын
Keynote - Van Lindberg - Pycon 2015
29:42
Пікірлер
@edgeeffect
@edgeeffect 19 күн бұрын
It sounds like it's about time somebody at Google employed some more Never Nesters!
@RosanaRuFer
@RosanaRuFer 2 ай бұрын
This is really good 😮Great content, structure and delivery. Who can talk so clearly for three hours about the Django ORM internals?
@southpole76
@southpole76 2 ай бұрын
is it still worth watching this in the black / ruff era?
@RoamingAdhocrat
@RoamingAdhocrat Ай бұрын
Less relevant now I think. He talks about how slavishly PEP8ifying your codebase by hand is a distraction... but who does that today? But it's still entertaining and applicable in a more abstract way
@thisrandomdude_
@thisrandomdude_ 3 ай бұрын
this is so cool. informative and an absolute breeze to follow. tysm
@MrQsam
@MrQsam 4 ай бұрын
watching this after 10years... still relevant knowledge!!!
@mintusen2518
@mintusen2518 4 ай бұрын
How can I build brain using python course.give me advice.I have to this courses with python.
@isodoubIet
@isodoubIet 5 ай бұрын
I cannot imagine how much brain matter must be lost before one calls super() "well-designed".
@isodoubIet
@isodoubIet 5 ай бұрын
Already in the first 5 minutes we have a glaring error. Multiple inheritance in python _never_ works, because there's no such thing as "classes without overlapping methods", because __init__ always overlaps, which means it's impossible to call __init__ correctly, which means it's flatly impossible to use multiple inheritance correctly in python. The author of super considered harmful understood this. You don't. Drop the smug and try to learn something.
@isodoubIet
@isodoubIet 5 ай бұрын
Second glaring error, C3 linearization is not a "best and optimum solution to this problem", because it's not a solution to this problem in any sense. Turning multiple inheritance into single inheritance means there's no multiple inheritance at all, so you didn't solve the problem, so the thing doesn't. fricking. work. Funnily enough, multiple inheritance in C++ works just fine. You can use it. It works. You don't have to make all the classes aware of one another and demolish encapsulation to make it work. The author of super considered harmful understood this. You don't. Drop the smug and try to learn something.
@isodoubIet
@isodoubIet 5 ай бұрын
More glaring errors I didn't bother to mention, but Pizza inheriting from DoughFactory? Come on.
@isodoubIet
@isodoubIet 5 ай бұрын
No, it's not awesome that you can change the parent from the child, actually. It's insane, brittle, and impossible to use correctly. "is this fragile? no, it's deterministic" so is everything in programming. It's _extremely_ brittle. That's all the incompetence I can stomach, I'm afraid.
@bethfiore
@bethfiore 5 ай бұрын
How did he figure this all out!?
@lrebollo
@lrebollo 5 ай бұрын
27:56 LOL
@Caelghoul
@Caelghoul 5 ай бұрын
Why PySide6 doesn't adhere to PEP 8 rules
@GodefroyClair
@GodefroyClair 6 ай бұрын
Someone understands why he says ""the load is essentially offloaded somewhere else, you're not fighting with the GIL or anything like that..." 15:48 ? kzbin.info/www/bejne/g3TWZoKsnbtsiZY The GIL is still limiting the task that are sent to the pool of threads right? Where are those task submitted otherwise ?
@mutyaluamballa
@mutyaluamballa 7 ай бұрын
9 years in and still golden.
@FunkyELF
@FunkyELF 7 ай бұрын
Don't know why this was promoted to me just now but I don't like that this video says it's 9 years old and from PyCon 2015. It adds up, but seems like it shouldn't.
@thebrightestsun4685
@thebrightestsun4685 8 ай бұрын
The hilarious part of all of it is that unless your code won't change, none of these niceties will be maintainable within half of year.
@luqmansen
@luqmansen 8 ай бұрын
Watching this in 2024, amazing talk 🫡👏👏
@RicardoSuarezdelValle
@RicardoSuarezdelValle 8 ай бұрын
camelCaseIsSuperior
@RicardoSuarezdelValle
@RicardoSuarezdelValle 8 ай бұрын
I guess I never thought anyone would have to remember imports since I do them all with pycharm
@patriotir
@patriotir 8 ай бұрын
19:28 he recommends to create a new list every time but isn't that counter-intuitive? creating a new list means consuming more memory space while we can easily mutate the list. to me the first function is more efficient.
@fireh3211
@fireh3211 9 ай бұрын
You can't exclude that specific line from pep8?
@jesusmgw
@jesusmgw 10 ай бұрын
This talk: Looks like it's from 1995. It's actually from 2015. Is still useful in 2025.
@X3n0n36
@X3n0n36 10 ай бұрын
This has to be one of the best videos introductions to Pandas out there, the simple structure of a dataset of movies provided the well thought exercises to test knowledge and to easily see the power of the library. My applause to Brandon I unlocked a new awesome tool to use.
@X3n0n36
@X3n0n36 10 ай бұрын
I'm going to do a silly comment please don't take it seriously but I did a most casted actor as 'Himself' and the top result came to be 'Adolf Hitler', where is his IMDb page?
@Silvertestrun
@Silvertestrun 10 ай бұрын
Thank you
@michaw7408
@michaw7408 Жыл бұрын
"Do not learn to code from Google" - but why??
@daronieogarniaro
@daronieogarniaro Жыл бұрын
AUTOMATE THE BORING STUFF
@плеерок.ком
@плеерок.ком Жыл бұрын
Hi from 2023😊
@work_account_
@work_account_ Жыл бұрын
what an awesome talk!
@pulkitagrawalCFA
@pulkitagrawalCFA Жыл бұрын
found thew talk to be useful even in 2023
@infomoreandmore
@infomoreandmore Жыл бұрын
I was looking for this exact explanation. Enjoyed the talk throughout.
@kukas1043
@kukas1043 Жыл бұрын
Would it be bad practice (or helpful?) to write fib() as C module which releases the GIL? How much would that add overhead?
@ttrss
@ttrss Жыл бұрын
goodbye GIL <3
@Mindoza94
@Mindoza94 Жыл бұрын
This speech is actual even for today! The best explanation of async programming it Python I've ever seen
@calebparks8318
@calebparks8318 Жыл бұрын
No offense, but C++ saw this coming from before.
@Simon-kc4ml
@Simon-kc4ml Жыл бұрын
1:37:46 my respect for the man elevated immensely... 1:49:14 even more respect....
@grawss
@grawss Жыл бұрын
Wow this is amazing, and this logic can be applied to all of society and human nature. People will do as they're told, on average, but this psychology isn't a 1 or a 0 -- on or off --, it's a spectrum, and the tendency to start "fixing" problems while ignoring the underlying issues is a big part of that. When the "bosses" or creators of the code bases and big industry want more integration between code bases and code that's easier to read and update, intuitively it's a good idea to focus on prettying it up, but coders are engineers, and engineers should always always always be focused on making the simplest version of the task at hand. Look at any old invention that still works today and you'll see things people would scoff at were it not 100% fact that it works flawlessly. That's old code. The engineers and creators of today may follow more standards, and may be more organized, but we're all human, and the gorilla in the room is all the things beyond the famous quote: "Perfection is Achieved Not When There Is Nothing More to Add, But When There Is Nothing Left to Take Away" -Antoine de Saint-Exupery
@_elkd
@_elkd Жыл бұрын
PEP8 unto thyself, not unto others😂 (Well unless you MUST leave a comment in a code review)
@VCR47527
@VCR47527 Жыл бұрын
Few questions about DI in this style. 1. How do you handle injecting a class that itself needs dependencies injected? Does the entire app become one class eventually? 2. How do you track down everything that can be injected and what method signatures are expected for each? 3. What happens if an interface is implemented wrongly and has a wrong return type? 4. What happens if two different dependencies that are both required happen to have the same method names? 5. Looks like you choose concrete implementations at the time of class declaration instead of within a configuration file (which governs class instantiation later on) like the DI libraries that I'm used to. What if I don't know some of the concrete dependencies at the time of class declaration of the base class and I only know that it will follow a certain interface? DI is usually a tool for class composition. In other words it deals with "has-a" relationships rather than "is-a" relationships. So it's really strange to see a language feature that facilitates class-based inheritance being suggested as a tool for DI. The result seems to be similar to a mixin pattern for sharing functionality (with all its criticisms) with extra attention to the MRO navigate the confusing nature of this language feature.
@andreienache6290
@andreienache6290 9 ай бұрын
1. The same, just inject previously into the class you need. No, the entire app does not become 1 class. 2. Not sure what you mean by 'track down'? Don't overcomplicate things, ptyhon design is different. Don't bring here fancy terms like 'method signatures', they don't make sense in this context. 3. Change your code. 4. Good point. The method resolution order will resolve to the first one encountered if you use super with no arguments. Super can be used with arguments that direct its resolution. So, without arguments, it resolves with the c3 algorithm. With arguments you can call 1 or both in the order you need ( In that specific case you do introduce a little redundancy, but you have no choice). 5. Again, python is more abstract. An interface is just a contract or a declaration of behavior. You could just class Interface: def act(self): pass class Imp(Interface): pass You could use the ABC (Abstract Base Class) module to decorate and express and force the interpreter to put some restrictions, like, not implementing Interface.act method. Don't let them confuse you with fancy words 'implements' 'extends' and 'injection', behind the scenes there are just objects and pointers. In Python, I don't care if put my dependency inside the parenthesis of a class declaration if I'm given the dependency at the instance creation level or if I fucking give a framework a yaml file that declares my dependencies and makes the symbols available at the necessary scope. It's a matter of understanding the best approach for you. Again, in this case, is trivial, discussing the 'is-a' or 'has-a' thing is a waste of time and is inherited by old paradigms. The difference is just this: class Dependant(Dependency): # what you call 'is-a' pass or class Dependant: # what you call 'has-a' def __init__(self, dependency): self.dependency = dependency or, if you want a framework: dependencies.yaml Dependant Dependency -- Then in your code: Dependant().dependency.method_on_dependency() Do you see how dumb it is to waste time discussing this? It's nice as a learning exercise but at the end of the day, why the hell i would go and create a file and install a framework if I can just write class A(B): pass? What is the advantage of expressing this particular case in a file instead of in the code file itself? If you find dependencies later, just go and add a new dependency to your class Instantiation (Yes, classes in Python are first-class citizens). You are too biased. If your dependency is against an interface, and you know it, then add the interface. If you don't know it, it is not a problem with the language. That's it. When you call the method it will just do nothing, or again, you can decorate to enforce classic oo behavior like raising a NotImplemented error and stuff like that, or even raise a not implemented error. Python is very abstract and that is why it gives you so much flexibility. These ideas become clear to you when you become older. You need to work in too many different areas and technologies to understand all is reduced to a matter of convenience and automation. Some principles should guide you, but these are not dependent on the technologies. Behind the scenes, all is reduced to objects and pointers. How do you think a class Inheritance is resolved inside the compiler? So, for example, they say "Favor composition over inheritance". Ok. That may be good for Java | C# | C++ but, what if I have a language that has a method resolution and leaves me to declare my dependencies at class Instantiation level, I mean here: class A(B, C). Then what is the difference between receiving the dependency from a config file, or 'injected' at the instance instantiation level? I can test and refactor at any time. Convenience, Man. Hope you undersand.
@gametimewitharyan6665
@gametimewitharyan6665 Жыл бұрын
Came here from "Beyond the basic stuff with python" :)
@datpham31415
@datpham31415 Жыл бұрын
Love it!!! Miguel's own style of teaching is great. That reminds me the other great teachers are David J. Malan, Brian Yu and many others at the CS50.
@bvedantcodes
@bvedantcodes 4 ай бұрын
Corey Schafer is also great.
@PRS-0317
@PRS-0317 Жыл бұрын
AHA! For the old asm/C programmers out there, the money shot is 20:15. Names/variables have scope, whereas all (allocated) values are on the heap and only 'leave scope' when the last reference to them leaves scope.
@paulzupan3732
@paulzupan3732 Жыл бұрын
Raymond Hettinger is the best public speaker I think I've ever seen
@FirstNameLastName-fv4eu
@FirstNameLastName-fv4eu Жыл бұрын
This is called "intellectually"
@thanhtan030t
@thanhtan030t Жыл бұрын
I learn how to use fake over mocking via Robot's example. Amazing!
@netneutrality2024
@netneutrality2024 Жыл бұрын
These 3-hour D. Beazley talks are awesome.
@GeorgeZoto
@GeorgeZoto Жыл бұрын
Excellent tutorial even if this was back in 2015 😃
@_elkd
@_elkd Жыл бұрын
For the 2D list in the last slide, here is Amy's talk section covering that kzbin.info/www/bejne/qXmXiXlspbB-o80
@aaron41
@aaron41 Жыл бұрын
I've been programming in python for almost 10 years, and I still learned something new today!!!
@sabertoothwallaby2937
@sabertoothwallaby2937 2 жыл бұрын
College is such garbage
@Whatthetrash
@Whatthetrash 2 жыл бұрын
Excellent talk! Thank you! :)
@dinethdewmina3530
@dinethdewmina3530 2 жыл бұрын
epic explanation completely shock my understanding of variables and lists