5 Useful F-String Tricks In Python

Поділитися
Вставка
  • Опубліковано 10 лют 2024
  • Here are my top 5 most useful f-string formatting tricks that I use everyday in Python.
    ▶ Valentine's Day SALE on indently.io:
    www.indently.io
    ▶ Follow me on Instagram:
    / indentlyreels

КОМЕНТАРІ • 311

  • @chyldstudios
    @chyldstudios 3 місяці тому +300

    the "=" trick in the f-string is fire.

    • @m-zurowski
      @m-zurowski 2 місяці тому +5

      It made my day - I'm gonna test run it in a loop with some random dictionary to see how many cool tricks it can do (like reading current settings) :)

    • @m-zurowski
      @m-zurowski 2 місяці тому +12

      ok, my idea didn't work as expected 😅

    • @dark_brownie
      @dark_brownie 22 дні тому +1

      Yeah, completely agree it is amazing

  • @sunwukong6268
    @sunwukong6268 3 місяці тому +99

    Ever since I learned f-strings...I love them.

    • @GentleMannOfHats
      @GentleMannOfHats 3 місяці тому

      I wish I had known sooner!!

    • @rickymort135
      @rickymort135 3 місяці тому +1

      And I love you....
      Sorry if I made things awkward... 😬
      Oof this awkward isn't it?

  • @andymitchell2146
    @andymitchell2146 3 місяці тому +47

    I've been using python for about 10 years, and f strings extensively, but never knew that last tip! Game changer!

    • @yash1152
      @yash1152 2 місяці тому +3

      well, thats cause its only a very recent one (afaik)

    • @eyehear10
      @eyehear10 2 місяці тому

      @@yash1152it was introduced in 3.8, so a while back

  • @_Loki__Odinson_
    @_Loki__Odinson_ 3 місяці тому +200

    This is the first time I have seen someone specify datatype for variables in python, and I honestly loved it.
    Great tips btw.

    • @Indently
      @Indently  3 місяці тому +36

      That's the hype for type annotations that I love to see!

    • @Naej7
      @Naej7 3 місяці тому +11

      Not using type annotations should be banned by law

    • @_Loki__Odinson_
      @_Loki__Odinson_ 3 місяці тому +24

      @Naej7 I don't think so, many people choose Python for its simplicity, with the absence of type annotations being one of the key factors. Removing this feature might deter beginners from trying it out. However, as you become more proficient in programming, you may choose to utilize type annotations or when exploring other languages.

    • @Naej7
      @Naej7 3 місяці тому +6

      @@_Loki__Odinson_ Type Annotations help a lot, and if adding 5 characters (: int) is too hard at the beginning, then one should give up on programming lmao

    • @edwardcullen1739
      @edwardcullen1739 3 місяці тому +14

      ​@@Naej7 Except people don't understand how to use them, so you end up with unnecessarily hard to use APIs.
      If that's how you feel, why not just use C? 🤦‍♂️

  • @Zenivo
    @Zenivo 3 місяці тому +24

    About the fourth trick: the f in ".2f" tells it to format as float. You can also do for example ".2e"" which will format the number in scientific format.

  • @utarasama
    @utarasama 3 місяці тому +34

    The last one is super duper cool!

    • @dcx45
      @dcx45 3 місяці тому

      RIP the maintainer

    • @utarasama
      @utarasama 3 місяці тому

      ​@@dcx45 he should then watch this video

  • @krzysiekkrzysiek9059
    @krzysiekkrzysiek9059 3 місяці тому +3

    This kind of tips are awesone. We need more 👍

  • @TheMcSebi
    @TheMcSebi 3 місяці тому +4

    Great video! Didn't know about the datetime and debug print ones. Definitely going to use them in the future, though.

  • @SergioYT2052
    @SergioYT2052 3 місяці тому +2

    "Simple y bello como un anillo", como diría Neruda; pero además, muy funcional. ¡Muchas gracias!

  • @rolandsz8831
    @rolandsz8831 2 місяці тому +3

    Great video! I missed the bonus tip where you explain that format string calls __format__ on the object being formatted, so you can do your own formatting, like this:
    class MyData:
    def __init__(self, a: int, b: int, c: int):
    self.a = a
    self.b = b
    self.c = c
    def __format__(self, spec):
    if spec[0] not in self.__dict__:
    sep = spec[0]
    l = list(spec[1:])
    else:
    sep = ','
    l = list(spec)
    return sep.join(str(self.__dict__[key]) for key in l)
    my_var = MyData(a=1, b=2, c=3)
    assert f"{my_var:cba}" == "3,2,1"
    assert f"{my_var:-abc}" == "1-2-3"

  • @jaa928
    @jaa928 2 місяці тому

    Thank you for the instructive tips!

  • @timegor844
    @timegor844 3 місяці тому

    Wow, so many simple things I didn't about... Thank you

  • @bashar9200
    @bashar9200 3 місяці тому

    This is amazing!! thank you for this tutorial!!

  • @richsadowsky8580
    @richsadowsky8580 3 місяці тому

    Absolutely fantastic and useful video!

  • @TheJaguar1983
    @TheJaguar1983 3 місяці тому +10

    Didn't know about the date/time and equals formatting. Looks like the first one forwards to strftime. Makes things so much more concise and readable.

  • @mjhaynavarro
    @mjhaynavarro Місяць тому

    So cool.. thanks for sharing it. very informative

  • @dipeshsamrawat7957
    @dipeshsamrawat7957 3 місяці тому +1

    Nice collection! 💯

  • @mattshu
    @mattshu 3 місяці тому +3

    F strings are soo chef kiss

  • @flashtrack101
    @flashtrack101 3 місяці тому +1

    Love your vids man! would love to see a tutorial on cython from you!

  • @UndyingEDM
    @UndyingEDM Місяць тому +1

    For those who didn't know, the last one is called self-documenting expression and was released in Python 3.8

  • @BohumirZamecnik
    @BohumirZamecnik Місяць тому +1

    Very nice. Another useful is formatting float as percent: f"{foo:.2%}".

  • @kychemclass5850
    @kychemclass5850 3 місяці тому

    Love #5. Thank you.

  • @TheKahunas2722000
    @TheKahunas2722000 3 місяці тому

    Love the video I knew some of those but the last one is epic I will be using that from now on .

  • @viniciomonge3960
    @viniciomonge3960 Місяць тому

    Loved the last trick!!!

  • @rahulCoding
    @rahulCoding 3 місяці тому

    Great video....
    Thanks a lot😍👍

  • @LittleGnawer
    @LittleGnawer 3 місяці тому

    Nice and useful tricks for every day programming. I also prefer specifying types of variables, since it makes code better understandable.

  • @Angelinajolieshorts
    @Angelinajolieshorts 3 місяці тому

    Great work sir❤

  • @ChrisHalden007
    @ChrisHalden007 3 місяці тому

    Great video. Thanks

  • @karthikkarthik100
    @karthikkarthik100 3 місяці тому +2

    Last trick was super cool...

  • @MahdiImeni
    @MahdiImeni 3 місяці тому

    Loved it ❤

  • @alisajjad2478
    @alisajjad2478 15 годин тому

    Thanks for the tips. The last trick is amazing

  • @catastrophicblues13
    @catastrophicblues13 3 місяці тому

    That last one is sooo useful!

  • @sidjay7644
    @sidjay7644 3 місяці тому

    Very nice
    Thanks

  • @griffgruff1
    @griffgruff1 3 місяці тому

    Great video!

  • @SaveCount-bh8tp
    @SaveCount-bh8tp 3 місяці тому

    Thanks very much

  • @mrjamesflores
    @mrjamesflores 3 місяці тому

    The last one was good!

  • @Pawlo370
    @Pawlo370 3 місяці тому

    Finaly! All fstring variations in one film

  • @Anzeljaeg
    @Anzeljaeg 3 місяці тому

    This is pure gold 🥇

  • @dark-ghost4132
    @dark-ghost4132 3 місяці тому

    Thank for nice tricks 😘

  • @Krullfath
    @Krullfath 3 місяці тому

    This is super cool, I sadly can't think of any usecases in my current project

  • @cmcdougle
    @cmcdougle 3 місяці тому +4

    Thank you, this went STRAIGHT into my current project. Commas in numbers was one of the next things I was going to look up.

  • @aguy9836
    @aguy9836 3 місяці тому

    nice examples

  • @kinngrimm
    @kinngrimm 3 місяці тому

    thanks for the showcases

  • @daveys
    @daveys 3 місяці тому +1

    I like that print(f’{a + b = }’) one at the end. I can think of a few times when I’d use that.

    • @Indently
      @Indently  3 місяці тому +1

      Earlier I didn't know it worked on whole expressions, I think it's super cool as well!

  • @Little-bird-told-me
    @Little-bird-told-me 19 днів тому

    Good Job

  • @artistpw
    @artistpw Місяць тому

    Very nice.

  • @mad_vegan
    @mad_vegan 3 місяці тому +5

    To use scientific notation with integers, you can either do int(2e9) or 2*10**9.

  • @Al_Miqdad_
    @Al_Miqdad_ 3 місяці тому

    thanks for your time
    please make videos about data structure

  • @ErLakhan
    @ErLakhan Місяць тому

    Superb

  • @yash1152
    @yash1152 2 місяці тому

    i knew last one already, but seeing it again made me realise i should try to do this in java too, would have shortened a whole lot of cruft in one program i made.

  • @Sailesh_Bhoite
    @Sailesh_Bhoite 2 місяці тому

    Nice Tricks!

  • @oldschoolsoldier1634
    @oldschoolsoldier1634 3 місяці тому

    Trick #2 is neat

  • @Andrey_Fedorov
    @Andrey_Fedorov 3 місяці тому

    Круто! Спасибо!

  • @MechanicusOfficial
    @MechanicusOfficial Місяць тому

    I always use pyformat. Very easy to understand and pretty nice too. Var = 15
    print(“this is my var: {}”.format(var))

  • @aliwalil4160
    @aliwalil4160 3 місяці тому

    the last fstring was dope

  • @quekki3666
    @quekki3666 3 місяці тому +14

    i love f strings
    also this is like the 3rd time i come across the = specifier but i keep forgetting its existence and type in the whole thing

    • @Indently
      @Indently  3 місяці тому +1

      It's a cool trick for sure!

  • @adeptusmortem
    @adeptusmortem 2 місяці тому

    Thank you

  • @chrisogonas
    @chrisogonas 2 місяці тому

    Awesome! I love the '=' and >

  • @kinngrimm
    @kinngrimm 3 місяці тому

    Does datetime have a formating depending on nation?
    Like we would have already through a login or a whois access to a users current or defined whereabouts or nationality and we would want to have their specific way of reading time provided for them.

  • @meghanelizondo774
    @meghanelizondo774 3 місяці тому

    I was so stoked when f'{ var = }' was added to Python!! Might be abusing it a bit lol

  • @cheesy_boya
    @cheesy_boya 3 місяці тому +4

    Yep, I'm saving this video

  • @swolekhine
    @swolekhine 3 місяці тому +2

    These will be useful to me for sure. Here's a comment for the algorithm gods!

  • @noir66146
    @noir66146 2 місяці тому

    ooh i like these videos
    logic magic !

  • @gopal.
    @gopal. Місяць тому

    thanks

  • @kinngrimm
    @kinngrimm 3 місяці тому

    9:30 that approach though had the single quotation marks removed, which from a formating pov is cleaner, isn't there a version of the first shorter approach without the quotation marks then printed? (edit: while still being flexible in terms of variable names as mentioned)

  • @casperghst42
    @casperghst42 Місяць тому

    Intersting, a large part of the world is using . (period) as a 1000 separator and , (comma) as a decimal point.

  • @acherongoon
    @acherongoon 3 місяці тому

    My preference is th .format(...) method fo a couple o reasons. I use Micropython a lot and f""" is not or has not been available, for format supports all the styles I like. i8n the string being formatted is not known at development time. Scope, the names using inside the string can be assigned at use time, i.e. in a function the value may be in a variable gmt_time but the string uses a standard name 'time'.

  • @NC700xLover
    @NC700xLover 2 місяці тому

    Which editor is that? Looks fresh

  • @anon_y_mousse
    @anon_y_mousse 3 місяці тому

    I wish more languages would copy this feature, and that Python would allow you to use variables inside the strings to select formatting options. For my own language, I made all strings f-strings and just have a shorthand where "$var" will stringify the value of `var`, and "${ expr }" will stringify the value of any valid expression. I made it so that format specifiers could use a variable instead of a numeric constant in the string. That way you could pad the output to the terminal dependent on the actual terminal attributes without using a loop. I'm hoping that this methodology negates the need for *printf() functions in my language, because separating the variable from any formatting options on it is error prone, and most of the time people just want to print as is.

  • @archiemarqx
    @archiemarqx 3 місяці тому

    3:24 this tip will literally improve my code quality

  • @user-hd3pz2ow1b
    @user-hd3pz2ow1b 2 місяці тому

    rounding in python .. cool

  • @richardnicholas2957
    @richardnicholas2957 2 місяці тому

    Gold!

  • @sayantanguha1934
    @sayantanguha1934 2 місяці тому

    The last one blew my mind

  • @fg786
    @fg786 3 місяці тому

    What can you do with print(f'{var: >+{x}}') ?
    The additional + get's printed in front of var but a - doesn't, you can put a # instead of the + and it's not throwing an error, yet doesn't seem to do anything. Letters and other symbols give an error.

  • @-george-1153
    @-george-1153 2 місяці тому

    You're cool! 👍

  • @murphygreen8484
    @murphygreen8484 3 місяці тому +1

    Don't forget in newer python you can add multiple lines of text by stringing together f strings

  • @veeratheking8375
    @veeratheking8375 3 місяці тому

    big fan bro
    from india

  • @iscatafan2959
    @iscatafan2959 3 місяці тому

    You make the code easier to read, so you better use the functions of the str class! 🐳

  • @xKiiyoshiix
    @xKiiyoshiix 3 місяці тому +1

    Hello @Indently,
    Can you please explain me, why you use ":" after a variable for ex. n:?
    Regards.

    • @matthewbay1978
      @matthewbay1978 3 місяці тому

      It allows him to specify what type of variable it is. "n: int = " tells anyone reading that it's an integer. I'm glad you asked that though, because I'm an amateur and I'm curious, @Indently is that common practice?

  • @tudaer
    @tudaer 3 місяці тому

    May I ask which IDE and development env are you using? Looks so great

    • @meowsqueak
      @meowsqueak 3 місяці тому +1

      It’s PyCharm

    • @tudaer
      @tudaer 3 місяці тому

      @@meowsqueak thanks!

  • @GW-nh9qc
    @GW-nh9qc Місяць тому

    Klasse 😃👍

  • @0MVR_0
    @0MVR_0 3 місяці тому

    the thumbnail to this video inspired an idea to use format strings in dictionaries
    so that a dynamic series of texts can undergo a linear list of mutations.
    Honestly, I actually need to refine my idea though.

  • @Lord2225
    @Lord2225 3 місяці тому +1

    Fact: You can define custom logic for f'string on your classes and get string after : as argument to __format__

  • @Mor3Lif3
    @Mor3Lif3 Місяць тому

    That last one goes wild

  • @ArtyomKatsap
    @ArtyomKatsap 3 місяці тому

    Hi! Thanks! Great video! Worth mentioning that the last one does not work on older versions of python3 (I tried it on 3.7.17 and it gives a syntax error).

    • @UndyingEDM
      @UndyingEDM Місяць тому +1

      Probably added in a later version. I'd love to know which. Edit: it's called self-documenting expression released in Python 3.8

  • @NickCombs
    @NickCombs 2 місяці тому +1

    This definitely seems more convenient than it is in js.

  • @MkReman
    @MkReman 3 місяці тому

    Which code editor do you use? It appears to be pycharm. But the ui is different from what I have in windows laptop.

    • @meowsqueak
      @meowsqueak 3 місяці тому

      It’s the new UI. Perhaps you’re still using the legacy UI?

  • @shabadooshabadoo4918
    @shabadooshabadoo4918 3 місяці тому

    i dont really know anything about programming or python but im curious. when you do "var:" is the colon part of the variable name? or a requirement for specifying a variable name? if its part of its name, is it to differentiate it from something else?

    • @AnonHooman
      @AnonHooman 3 місяці тому +1

      The colon after a variable name is for typing the variable, for example:
      my_var: str = ‘Hello’
      We’re saying that my_var is of type str (string) and has the value ‘Hello’. However, the typing is not necessary and
      my_var = ‘Hello’
      would work just as well. Though, most people would recommend to use type hints

    • @PanduPoluan
      @PanduPoluan 3 місяці тому +1

      @@AnonHooman Well if assigning simple, easy-to-infer data for a variable, I usually do away with type-hinting.
      Type-hinting is a godsend to mark parameters to a function, preventing hard to trace ValueError or TypeError exceptions later on.
      I usually don't type hints my variables except when I'm doing unpacking.

  • @brycesakal3717
    @brycesakal3717 14 днів тому

    My professor who I took intro to Python called the “” ‘right justify and left justify’

  • @VypeReaper
    @VypeReaper 2 місяці тому

    Apart from learning about the f condition, I also learned you can declare the data type in python which i have not been doing lol

  • @Alchemist10241
    @Alchemist10241 Місяць тому

    1e9 was the most useful to me

  • @rutenowynidoking3593
    @rutenowynidoking3593 3 місяці тому

    For debugging, I recommend the "Icecream" library.

  • @annieshedden1245
    @annieshedden1245 13 днів тому

    i'm old but i still think everyone should know that most of the f-string stuff comes from C printf/strftime/etc.

  • @midlander8186
    @midlander8186 3 місяці тому

    In the first example, int variable n assigned a number in scientific notation returns a float number when printed, but no error occurred. In what sense must n be declared a float therefore?

    • @meowsqueak
      @meowsqueak 3 місяці тому +1

      It’s not a type declaration, it’s a type hint given as an annotation. Annotations in Python have no effect at run time so no error occurs. They are just hints to a static type checker.

    • @isodoubIet
      @isodoubIet 2 місяці тому

      Type annotations are just comments, and comments always lie.

  • @Smart_Coder7
    @Smart_Coder7 3 місяці тому +24

    This Video was sponsored by me. 💀

  • @pmenown
    @pmenown 3 місяці тому

    What does the f prefix do at the beginning of the argument? Are we inserting a blank float?

    • @mudyeet_
      @mudyeet_ 3 місяці тому

      Are you talking about the f prefix before the quotes? If yes, then that's "f strings"

    • @pmenown
      @pmenown 3 місяці тому

      @@mudyeet_ yeah, like what does an 'f string' even mean? Feel like they missed out on calling it a G string

  • @eduardolima5495
    @eduardolima5495 3 місяці тому

    Question. Why do you declare the variable with the type? I'm a beginner and I never saw that, it's a good practice?

    • @alextrebek5237
      @alextrebek5237 3 місяці тому

      Type hints or specifying types are good practice, rather than commenting what should be obvious code. It also enables easier linting and test suites. Google "why type hint" ❤

    • @PanduPoluan
      @PanduPoluan 3 місяці тому +1

      It's called type-hinting.
      In his example, it doesn't serve much.
      But in a big program, it will cause the IDE to warn you that you plan on using a variable only to store certain type(s) but you accidentally typed code that assign a different type to it.
      For instance, say you have
      result: string = ""
      Then much later on you assign:
      result = sorted(some_list)
      print(result)
      The IDE will warn you that, "hey, you originally said you're only going to store a string here, but let me warn you, you're about to store a list here."
      Other than that, Python won't actually error out there.

    • @PanduPoluan
      @PanduPoluan 3 місяці тому +1

      Another example purpose:
      You assign the result of a function that _declares_ it will return a list of floats
      def some_func() -> list[float]:
      ...
      rslt_list = some_func()
      Then you do this:
      print(", ".join(rslt_list))
      The IDE will warn you that the str.join() function requires a list of str, but you're calling it with a list of floats.
      In this case, if you don't heed the warning, your program will raise an error at that point (because of .join()'s requirement).

    • @PanduPoluan
      @PanduPoluan 3 місяці тому +1

      Again, in all case, you're only given a hint that _probably_ something is not quite right. It still won't change Python into a statically-typed language. Just another tool to help a Python Programmer prevent errors due to Type Mismatch.

    • @eduardolima5495
      @eduardolima5495 3 місяці тому +1

      @@PanduPoluan bro! Thanks for the answer!! Super detailed!!

  • @kamurashev
    @kamurashev 3 місяці тому +1

    Yep, f string is a great feature. At least something Python gives us 😅

  • @semenivanoff8615
    @semenivanoff8615 Місяць тому

    Useful. Thanks

  • @hlubradio2318
    @hlubradio2318 Місяць тому

    Wow