Python Decorators in 15 Minutes

  Рет қаралды 455,640

Kite

Kite

Күн бұрын

Пікірлер: 454
@lawrencedoliveiro9104
@lawrencedoliveiro9104 3 жыл бұрын
Just to recap: * Every value in Python is an object. * Functions and classes are objects. * Function definitions and class definitions are best thought of as special kinds of assignment statements, not as declarations; there are no declarations as such in Python. Decorators work with classes as well, not just functions. Also worth adding: * Every object is an instance of a class. Note this also applies to classes, since they are objects.
@theobellash6440
@theobellash6440 3 жыл бұрын
Python Fonctions and Classes are C classes... Python is an alphabet soup of C classes and objets and slowly interpreted🍝 spaghetti codes but somehow compréhensive
@riosdellacueva6482
@riosdellacueva6482 3 жыл бұрын
use yield
@Artaxerxes.
@Artaxerxes. 3 жыл бұрын
It's just a function pointer lmao. You sound really naïve when you call everything an object
@arpit743
@arpit743 3 жыл бұрын
@@Artaxerxes. what's a function pointer
@vertigo390
@vertigo390 2 жыл бұрын
Every object is an instance of a class, even classes since they are objects. According to this statement, classes are objects, instances of a class which is itself an object, instance of a class which is also itself an object, instance of a class... You see where I'm going. What's the highest point? There must be a class that isn't an instance of a higher-order class, or it'll repeat infinitely.
@willemvdk4886
@willemvdk4886 3 жыл бұрын
I've read about decorators a dozen times. In books, tutorials, documentation of frameworks, etc. This is honestly the first time I actually understand the concept. Best explenation ever. Thanks Tim!
@rkausale
@rkausale 3 жыл бұрын
Same here...
@glebgardner7233
@glebgardner7233 2 жыл бұрын
++ amazing explanation
@jathebest2835
@jathebest2835 2 жыл бұрын
Same here.
@renanjrocha
@renanjrocha Жыл бұрын
exactly, same to me.
@BenMorgan-om1jj
@BenMorgan-om1jj 11 күн бұрын
ditto!!!!!
@SumanPokhrel0
@SumanPokhrel0 4 жыл бұрын
I looked so many videos, all of them were confusing. But this one just the perfect content I wanted. Thanks for this awesome video
@KiteHQ
@KiteHQ 4 жыл бұрын
So glad you found it helpful! Hope you are able to benefit from our other tutorials as well :)
@mranonymous7766
@mranonymous7766 3 жыл бұрын
@@KiteHQ Yeah i bought a python course still here watching your videos.
@ultimatejy9393
@ultimatejy9393 3 жыл бұрын
Agree!
@nicholasziglio
@nicholasziglio 3 жыл бұрын
Same here! So well explained.
@mehregankbi
@mehregankbi 3 жыл бұрын
the best ad for kites. have been seeing the ad everywhere but never wanted it. now i'm liking it
@MichielDeSnuyter
@MichielDeSnuyter 4 жыл бұрын
Wow this Kite AI thingy is really advanced, it does a darn good impersonation of that Tim fellow.
@ultimatejy9393
@ultimatejy9393 3 жыл бұрын
So the man voice in this video is generated by AI with impersonating Tim??
@garrenmiller9434
@garrenmiller9434 2 жыл бұрын
Great explanation. I really appreciated that you gave a few concrete examples where decorators are useful instead of cutting off after explaining the functionality.
@kristiantorres1080
@kristiantorres1080 4 жыл бұрын
The best explanation of decorators I've seen so far on youtube!
@SovsemNeProstoy
@SovsemNeProstoy Жыл бұрын
When I saw function decorators first time I thoght that it's the easiest theme that I've ever seen, but then I understood how useful and complicated they are. And now, I can say that this tutorial gave me the concept of decorators.
@Dtomper
@Dtomper 3 жыл бұрын
That log decorator is so powerful omg. Thank you for this amazing explanation
@soyaleye
@soyaleye 4 жыл бұрын
This is by far the most explanatory video for decorators I have seen on KZbin. It does not have the view count to match up to how helpful and insightful this video is.
@longLivejay1
@longLivejay1 4 жыл бұрын
true but have you been able to apply it in a project?
@joekerr5418
@joekerr5418 4 жыл бұрын
hey, it's tech with tim!!
@furiousfellow1583
@furiousfellow1583 4 жыл бұрын
my first reaction at reading your comment was like, "duhh yes it is", then I read the channel name and was like WHAT??...
@damonchase1922
@damonchase1922 3 жыл бұрын
Kite sponsors his videos
@pawjast
@pawjast Жыл бұрын
Hands down the best explanation of Python decorators in the whole YT!
@peetk5993
@peetk5993 2 жыл бұрын
I watched this video a year ago, created some decorator functions as snippets that I can use later. Now after a year I needed them so I used the snippets but honestly I forgot how they actually work but saved a link to your video. Watched this again and after 15 mins I understand everythingI need. I really appreciate your work Tim, I honestly think that there is absoutely nothing I could add or remove from your content like they go concisely from zero to a decent level of understanding in really short time.
@mathiasnagy5976
@mathiasnagy5976 3 ай бұрын
This is what education used to be like, even the most complex topics, found in the books I own about physics etc. published in the 1950's and before. Start with small chunks of the preliminary concepts. Then put them together slowly, simply and clearly, demonstrating along the way. Then build and finally explain a complex idea. Well done Tim and thank you!
@Ayoutubeaccount3
@Ayoutubeaccount3 3 жыл бұрын
this is the first video I watched on the topic and understood it straight away, I think I was lucky as the other comments say they've read lots of documents and watched other videos without understanding it, but seriously dude your explanation and the way you speak makes it easy to follow along
@mikemace2860
@mikemace2860 Жыл бұрын
Absolutely the best , most concise tutorial on decorators - thank you!
@gavintantleff
@gavintantleff 3 жыл бұрын
I love how to the point this video is to the point. No fluff, you just start explaining. Reminds me of Miziziziz tutorials.
@samszotkowski
@samszotkowski 3 жыл бұрын
There's literally a minute of intro+ad
@MiguelAngel-fw4sk
@MiguelAngel-fw4sk 3 жыл бұрын
Nope Mizziziziz doesn't put a minute of intro and ad at the beggining of his videos.
@gavintantleff
@gavintantleff 3 жыл бұрын
@@MiguelAngel-fw4sk you're right
@srikanthsukhavasi4860
@srikanthsukhavasi4860 3 жыл бұрын
I tried to understand Decorators from watching different videos. But trust me I used to be very confused after finishing the video. But, You made me understand Decorators very easily...Thank you.
@nonoobott8602
@nonoobott8602 Жыл бұрын
This is by far the clearest and most intuitive explanation of the concept of decorators I've seen. Thanks for sharing
@thomasdr08
@thomasdr08 2 жыл бұрын
Been trying to understand decorators, args, and kwargs for years. No clue how you were able to make this work so quickly and easily but I REALLY appreciate you!
@Sciencedoneright
@Sciencedoneright 3 жыл бұрын
hey, it's Tech With Tim :O I was legit surprised
@denysivanov3364
@denysivanov3364 3 жыл бұрын
probably this guy copied tech with tim content....
@dl662
@dl662 3 жыл бұрын
This company has a shady history. They hijacked an autocomplete plug-in n defaulted users to upload their code to their servers in the backend. I ended up uninstalled autocomplete python n moved away from atom altogether. I bet they r pulling a similar trick here. So thanks but no thanks, I’m happy with Jedi n if I ever need an intelligent autocomplete tool I’ll build my own.
@jhonshephard921
@jhonshephard921 3 жыл бұрын
@@denysivanov3364 "this guy" is a kind-of well known code-completion company. Can be used as a plugin for VSCode.
@denysivanov3364
@denysivanov3364 3 жыл бұрын
@@jhonshephard921 I doubt that plugin copied Tech with Tim video =)
@emeraldthunder
@emeraldthunder 3 жыл бұрын
I thought the voice sounded familiar.
@ramonsantiago4573
@ramonsantiago4573 3 жыл бұрын
Tim explains things so well. If he made an advanced python course i would literally "shut up and take my money".
@DelverGames
@DelverGames Жыл бұрын
this has to be the best explanation to decorators that I have seen. Amazing.
@radhika6212
@radhika6212 8 ай бұрын
What an explanation, being a technical lead and doing automation in python for years..I would say my fundamentals are stronger now after going through this video..amazing work :)
@bluefrog-wl2cu
@bluefrog-wl2cu 10 ай бұрын
I have seen lots of videos about Decorators. But Honestly It's the only video which helps me to understand the topic
@edwin5907
@edwin5907 3 жыл бұрын
This is what I wanted to see, someone who can explain Decorators in a easy and logic way.. Thank you
@Adel-pn2up
@Adel-pn2up 4 ай бұрын
I've had problems with decorators for a long time. This video finally solved it. Thanks ;)
@zakariaabderrahmanesadelao3048
@zakariaabderrahmanesadelao3048 2 жыл бұрын
Very grateful for your explanation. Decorators always confused me but through your detailed explanation and three very well described examples, I am more confident about decorators, thank you.
@christian37ism
@christian37ism 3 жыл бұрын
Best part of the video. Tim: ‘if you’ve understood this, you’re definitely well on your way to becoming an expert in python.’
@daenbermudez3740
@daenbermudez3740 2 жыл бұрын
That was the worst part for me. I didn't understand
@afjalkasim5249
@afjalkasim5249 2 жыл бұрын
I see so many videos.but not clear how the function works .This is life changing.Krishna bless u sir
@Tetrick25
@Tetrick25 4 жыл бұрын
thanks for the perfect quality. Content, Voice, Speed, ...Just everything perfect
@KiteHQ
@KiteHQ 4 жыл бұрын
So glad to hear that!
@pianopianist5709
@pianopianist5709 3 жыл бұрын
Tech With Tim on KZbin is explaining this!
@naveenpemmana
@naveenpemmana 5 жыл бұрын
I really loved the way you explained about the decorators. 😊
@vikalpnarayan6243
@vikalpnarayan6243 11 ай бұрын
Watched many videos on decorators but this is where my search ended.Excellent explanation!
@LuvxJacqu4li8e
@LuvxJacqu4li8e 2 жыл бұрын
Nicely done. This is the first time I really paid attention to decorators
@elninolol
@elninolol 9 ай бұрын
I like the way the video starts with passing function as argument and print function address, very detailed and well explained for a beginner in Python like me. Thank you very much
@jakeambrose4294
@jakeambrose4294 2 жыл бұрын
Explained and described on a deeper level that i would think we all want to grasp to truly understand how the codes are working. Great vid. This is my first finding of your vids, now ill be looking for the rest of your stuff. Greatly appreciate anyone who adds quality contributions to education.
@ShahinRzayevNergiz
@ShahinRzayevNergiz 4 жыл бұрын
As of yet the best and readable explanation of the decorators in the net. Keep going, Tim, you do it best.
@mohammadissa5958
@mohammadissa5958 5 ай бұрын
thank you so much because after i spend hours of watching tutorials and reading websites i found your video and from the first time i watched your video this consept flew into my mind
@robertschmidt8624
@robertschmidt8624 Жыл бұрын
I still have some work to do with Decorators, but largely thanks to You I finally think I've got it.
@Kenshin9977
@Kenshin9977 2 жыл бұрын
14:10 isn't it only logging args and not taking kwargs?
@deepayansarkar4258
@deepayansarkar4258 2 жыл бұрын
This is the best explanation I found over internet
@orlanino
@orlanino 3 жыл бұрын
Explanation of how to use it and inner working, business as usual. The explanation of when and why to use it, brilliant!
@kusocm
@kusocm 3 жыл бұрын
Regarding the 'weird behaviour' and the example of f1(f)() @6:15, if this was the goal without the funny brackets syntax, why wouldn't you redefine the definition of f1, such that it returns a called wrapper function, i.e. wrapper() instead of wrapper? That certainly eliminates the need to write f1(f)(). If someone could clarify... Besides that, very nice explanation.
@ashutoshmahapatra537
@ashutoshmahapatra537 3 жыл бұрын
Don't know if you are still interested, but here's the reason I found. The reason is arguments passed to a function. Let's say you want to pass f(2,3), If you call wrapper() then you have to provide those arguments as well but if you write wrapper(*args) it'll give error as arguments aren't passed inside the function f1. That's the reason we use that syntax so that we can pass arguments later.
@anAlokDubey
@anAlokDubey 2 жыл бұрын
Finally I understood the meaning of Decorators, thank you Kite :-) :-)
@nejinii1353
@nejinii1353 2 жыл бұрын
Bro, Ive never seen a video tutorial where every second was clean and very precise such as yours!! Not to mention u updated my knowledghe on functions and decorators on to a whole new lelvel. The examples are not only great but usefull for anybody, also great tricks for our codes.. Love you bro GREAT JOB!!!!
@pitchrollyawyeet
@pitchrollyawyeet 2 жыл бұрын
Go check out the maker of this videos own channel for more by him @ TechWithTim
@Stefadin
@Stefadin 2 жыл бұрын
Thank you for this easy to follow tutorial. For me it just clicked when you showed us the examples.
@shane6009
@shane6009 3 ай бұрын
AMAZING!!! You also explained so well why *args and **kwargs are so useful and important, thank you so much!
@ISHIOYMO1
@ISHIOYMO1 2 жыл бұрын
You are awesome. Took me so many videos to get to this video. Now I finally understand Decorators. You make it so easy ! Thank you so much !
@amanullah5858
@amanullah5858 4 жыл бұрын
was confused earlier before watching it but you covered it in the best way... really loved your video
@kilovolt2494
@kilovolt2494 3 жыл бұрын
Let me add a remark here. Decorators are truly awesome because they allow modifying the function(s) on the go without rewriting them. However, what if you have a loop where the function is called, and the decorator is set to print out value every time. You will end up with a hundred printed results? To save yourself from it, do a little trick: inside the wrapper, before the return statement, declare wrapper.original = func. If you just call the function, it will come out decorated. If you need the original function, call func.original(), and the wrapper will return it untouched.
@ricardohincapie1537
@ricardohincapie1537 Жыл бұрын
thanks. Nice trick
@lawrencedoliveiro9104
@lawrencedoliveiro9104 3 жыл бұрын
7:51 No, f1 only gets executed once, when f is defined, not every time it is called. Every time you call the result, it is the wrapper that is called.
@swansyboy8512
@swansyboy8512 3 жыл бұрын
I noticed that too, this should definitely be fixed We're already 2 months later though...
@jinettew.3192
@jinettew.3192 2 жыл бұрын
Bravo! This was REALLY well done. You nailed it.
@michaelsvoboda1024
@michaelsvoboda1024 4 жыл бұрын
You made me begin using Kite. Thanks!
@justinlua4848
@justinlua4848 2 жыл бұрын
I've never seen that before. I knew functions were objects but I never thought to use them like that. Very well explained.
@floweast
@floweast 2 жыл бұрын
you are the only one explained the decorator clearly!!!
@lmg88.80
@lmg88.80 2 ай бұрын
Thank you for all the examples. I was struggling with this but now its more clear.
@Levendo
@Levendo Жыл бұрын
I only had to pause at the start and look at your code for a few seconds to figure out where I was messing up. Thanks!
@yaqubadesola1839
@yaqubadesola1839 3 жыл бұрын
You actually deserve Nobel prize... Explanation to details
@jamescarroll489
@jamescarroll489 2 жыл бұрын
Very concise with good examples. Thanks for the brown bag!
@Wolfram69756D
@Wolfram69756D 3 жыл бұрын
Finally a clear explanation of decorators! Many Thanks! :))
@CraftyOldGit
@CraftyOldGit 3 жыл бұрын
This is the best explanation of decorators I have seen, thank you. Kite is an interesting idea & I will try it out, but the 'Pro' version is far too expensive.
@rakeshankireddy7659
@rakeshankireddy7659 3 жыл бұрын
Perfect explanation. Looked at other articles and videos before but still had the confusion. This video taught the concept very clear.
@rzwnhmd
@rzwnhmd 4 жыл бұрын
@11:30 wouldn't decorated function return the sum of x and y anyways. I mean without return inside the wrapper function??
@mohdaadilf
@mohdaadilf 3 жыл бұрын
Yeah that's what I was wondering too. Got question on whether the last return statement will work now too
@AshwinLokkur
@AshwinLokkur 4 жыл бұрын
Loved it. Quick, easy and accurate!
@siddharthupadhyay4246
@siddharthupadhyay4246 3 жыл бұрын
This is sooo goood. I was watching a udemy course on Python and couldnt understand the concept of decorators after multiple replays 😂 I am glad i watched this video. Thank You So Much:)
@HeavenComet
@HeavenComet Жыл бұрын
This is a really good decorator tutorial, understood it perfectly and helped me understand other concepts. Thank you!
@wonkim7951
@wonkim7951 11 ай бұрын
this the best explanation about python decorator ever
@strawberryyogurt0
@strawberryyogurt0 4 жыл бұрын
Maybe it's just me, but the presenter using variables 'f, f1, f2' makes things visually look like a blur and took me quite a while to even grasp what he was doing. I had to use more distinct words to make things easier such as ... first_function, second_function, pass_any_function def first_function(): print('from inside FIRST ') def second_function(pass_any_function): print('inside SECOND ######') pass_any_function() pass_any_function() pass_any_function() print('inside SECOND =========') first_function() print('inside SECOND =========') second_function(first_function) def third_function(): print('inside THIRD @@@@') first_function() first_function() first_function() third_function()
@g2nd
@g2nd 4 жыл бұрын
IKR, almost all of the tutorials I watch use similar names ex. Tire, Tires. They need to be more creative with those instead of adding to the confusion.
@miyalys
@miyalys 4 жыл бұрын
Best decorator video I've seen so far. Thanks!
@ahsenalimohammed7989
@ahsenalimohammed7989 4 жыл бұрын
Best video to understand Decorators. Really awesome explanation.
@thebuggser2752
@thebuggser2752 3 жыл бұрын
Very clear, precise and thorough presentation on decorators. Possibly the clearest I’ve seen online or in written form. I don’t think the concept of a decorator is a particularly intuitive one, even though Python bills itself, and usually is an intuitive programming language.. Seems to me that the Python team manufactured a construct that allows one to modify the behavior of a function without modifying the function itself. I’m still not sure that a decorator gives us something we couldn’t just as easily accomplished with just a few additional lines of code. However, still an excellent presentation. Thanks!
@69k_gold
@69k_gold 9 ай бұрын
Visualization really helps here. The f1(f) was what sparked my brain there
@Ben-kz2km
@Ben-kz2km 2 жыл бұрын
Loved the examples at the end. I'm trying to figure out some best practices and cool use cases for decorators and it's really hard to find good information on when to use decorators and potential anti-patterns.
@robertschmidt8624
@robertschmidt8624 Жыл бұрын
At 12:49 little confused as to what lines 18 & 19 do. t = Test() would call class Test, but t.decorated_method()?
@temik26
@temik26 3 жыл бұрын
This videos was so helpful to me. I have watched lots of videos before I got to this detailed explanation. Thank you so much!
@RedexTwo
@RedexTwo Жыл бұрын
Thank you so much! I was struggling to understand this concept by reading resources online.
@therzook
@therzook 3 жыл бұрын
The minute I started Kite I knew I'd better switch it off. Not a very good thing when you forget syntax (still learning). Decorators are so confusing - trying hard to understand this stuff, watching this video every evening ;) (best video on decorators on yt, me too dumb to catch it)
@heretolevitateme
@heretolevitateme 4 жыл бұрын
Was looking for interior design tips for my new snake and ended up here.
@rangdipkin6826
@rangdipkin6826 2 жыл бұрын
Awesome video! At 5:38, you would expect f1(f)() to just be equal to wrapper itself (without memory of the origin f passed into f1). The fact that f is remembered as an argument is a really important nuance called closure. That probably would have taken up more than the 15 minutes though
@weneverforgetwearelegion
@weneverforgetwearelegion 2 жыл бұрын
took me a full day to grasp this, thanks.
@huonglarne
@huonglarne 2 жыл бұрын
thanks. I love your examples, the ones that show how decorators might be used in real world situations. Very helpful
@rawats6751
@rawats6751 Жыл бұрын
Thanks for your video, Now I got confidence on decorator never before. really appreciate well explained
@lawrencedoliveiro9104
@lawrencedoliveiro9104 3 жыл бұрын
2:34 If you used a Jupyter notebook, you could put each stanza of your code in a separate cell, and the output would appear immediately below the relevant cell. Just a bit easier to see, I think.
@philiperiskallaleal6010
@philiperiskallaleal6010 2 жыл бұрын
Dear all, thank for the amazing video. Really well explained. I would like to ask you a specificity regarding decorator functions. In some use cases I have come across, I noticed that the __init__ method (of some user defined classes) is used as a decorator. Nevertheless, I couldn't figure out why or under which circumstance one should use it. Would you be so kind as to shed some light on this regard? Sincerely,
@threejeffs
@threejeffs 2 жыл бұрын
Dude, you really know how break concepts down so that idiots like me can understand them. Amazing video
@brettloo7588
@brettloo7588 2 жыл бұрын
Excellent explanation of the topic with good pace, clarity, and concise.
@response4322
@response4322 3 жыл бұрын
How would you define decorator annotations for the wrapper if functions return different types of values? As in: def wrapper(*args, **kwargs) -> type
@facts_region
@facts_region 3 жыл бұрын
Clean, Clear and Precise. Thanks
@nursultankasym8417
@nursultankasym8417 2 жыл бұрын
thank you man, this video helped a lot to understand the decorators
@babygerbil
@babygerbil 3 жыл бұрын
superb explanation. topic was kinda confusing but not anymore :)
@ollie_the_wandererli7523
@ollie_the_wandererli7523 2 жыл бұрын
nice! i like all the things Kite does. keep going!
@haneulkim4902
@haneulkim4902 2 жыл бұрын
Thanks, is there a way to conditionally run decorated function? I guess we could define one function w/o decorator and one function with decorator separated by if-else statement however I'm wondering if there is more simpler way that does not involve defining two of the same function.
@kumarkumar-db3ms
@kumarkumar-db3ms 2 ай бұрын
best lecture on decorators👍👍👍👍👍
@talk9415
@talk9415 Ай бұрын
perfectly explained, simple, easy and awesome, thank you!
@TheRealStevenGlen
@TheRealStevenGlen 3 жыл бұрын
What's happening at @14:35 are default passed parameters not count as arguments?
@vincenthbrennsteiner845
@vincenthbrennsteiner845 Жыл бұрын
This is really great, the only thing I'm not quite understanding is, how to use the function itself as well. in the timing example, what if I just want the normal function as well - do I have to copy and paste the entire function definition and change the name?
@Deevil992
@Deevil992 3 жыл бұрын
So clear. One of the best explanation on Python decorator 👍
@baseballMMAgames
@baseballMMAgames Жыл бұрын
I know this is an old video but does anyone know what theme that is?? Those colors are the perfect combo!
@sjwang3892
@sjwang3892 3 жыл бұрын
I thank the world for having this video. God bless you
@fallenstar358
@fallenstar358 3 жыл бұрын
I am grateful thank to you I can understand and use decorators in Python!
Python Generators
15:32
mCoding
Рет қаралды 143 М.
5 Good Python Habits
17:35
Indently
Рет қаралды 665 М.
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН
Tuna 🍣 ​⁠@patrickzeinali ​⁠@ChefRush
00:48
albert_cancook
Рет қаралды 148 МЛН
Python Decorators: The Complete Guide
27:59
ArjanCodes
Рет қаралды 161 М.
All Top 40 Python Libraries EXPLAINED in 20 minutes
22:04
10 Important Python Concepts In 20 Minutes
18:49
Indently
Рет қаралды 387 М.
PLEASE Use These 5 Python Decorators
20:12
Tech With Tim
Рет қаралды 126 М.
Coding Was HARD Until I Learned These 5 Things...
8:34
Elsa Scola
Рет қаралды 812 М.
25 nooby Python habits you need to ditch
9:12
mCoding
Рет қаралды 1,8 МЛН
Every F-String Trick In Python Explained
19:43
Indently
Рет қаралды 30 М.
This Is Why Python Data Classes Are Awesome
22:19
ArjanCodes
Рет қаралды 819 М.
Заставила парня продать зажигалки
0:52
Жизнь Барахольщика
Рет қаралды 3,3 МЛН
Satisfying Vend 😦 Ep.5 #shorts #satisfying #vendingmachine
0:23
TYE Arcade
Рет қаралды 17 МЛН
КАК ЖИВЕТ КВАНТУМ? РУМ ТУР КВАНТУМА!!!
13:51
(✋❌)kageihina VS siajiwoo VS meosimmyyt VS oxzung#tiktok #shorts
0:12
SH - Anh trai & Em gái || Brother & Sister #shorts
0:58
Su Hao
Рет қаралды 48 МЛН
В Европе заставят Apple сделать в айфонах USB Type-C
0:18
Короче, новости
Рет қаралды 1,1 МЛН