Re: Re: Preferred style
RF <[email protected]> Thu, 22 Apr 2021 07:21:38 -0700 (PDT)
| Newsgroups | gmane.comp.python.wxpython |
|---|---|
| Message-ID | <[email protected]> |
Thank you Steve. I installed pylint into my PyCharm IDE. On Wednesday, April 21, 2021 at 10:44:58 PM UTC-7 Gadget Steve wrote: > Hi, > > > > Just a little bit of background knowledge. > > > > Python functions and class member functions can be defined and called > with: > > - No arguments def fn(): or for a class member functions def fn(self): > - in this case calling fn *or c.fn *with arguments is an error. > - One or more arguments with no defaults: i.e.: def fn(a, b, c): or *def > fn(self, a, b, c):* - in this case they must always be called with the > exact number of arguments but these arguments can be given by position or > name, e.g. fn(1, 2, 3) or fn(c=3, a=1, b=2) or a mix fn(1, c=3, b=2) are > all equivalent. > - With some or all of the arguments given default values, e.g. def > fn(a, b, c=0): or def fn(a=0, b=0, c=0): *(but once you start giving > default values you have to continue so def fn(a=0, b=0, c): is an error)* > in this case any missing parameters will be given the default value. > - Hopefully by now you are picking up that there are 2 types of > arguments (positional and keyword) - fundamentally when you call the > function *or any function* these are passed to the function call as a > list of positional arguments and a dictionary of keyword arguments. So > sometimes functions with a lot of arguments are defined as def fn(*argc, > **argv): which can be called as fn(1, 2, 3, x=17, y=22) - note that since > the function definition doesn't specify names for the individual positional > and keyword arguments it is down to the code in the function to validate > the parameters and legal calls can include any number of positional > arguments including none and any number of any names of keyword arguments. > - Python 3 introduces (PEP-3102) the idea of Keyword only arguments - > these are arguments must be supplied, *(no defaults),* and cannot be > given by position. > - Python 3.8 introduces (PEP-570) Position only arguments - these must > be supplied (unless they have defaults) and cannot be called with a name. > - There is also a sneaky trick that you can unpack a list of values > (of the same length as the positional arguments) by using the * operator > and a dictionary with keys the same as your keyword arguments using the ** > operator. So you could see def fn(a, b, c=0): called with > fn(*list_of_2_or_3_values) or fn(**dict_of_abc) or anything in between. > - In addition there is the option of adding type hinting to your > functions - this is used to tell the developer (and certain checking tools) > the expected type(s) of input parameters and returned value(s). > > > > I hope that the above (short and not 100% comprehensive but hopefully > accurate helps to make things at least a little clearer, > > > > I would encourage you to use pylint <https://www.pylint.org/> and > possibly black <https://black.readthedocs.io/en/stable/> these will help > to keep your style consistent and valid but there are a number of other > tools. > > > > Steve Barnes. > > > > *From:* [email protected] <[email protected]> *On > Behalf Of *RF > *Sent:* 21 April 2021 20:51 > *To:* wxPython-users <[email protected]> > *Subject:* [wxPython-users] Re: Preferred style > > > > Hi Phil, > > > > As a new Python coder, I'm struggling with coding format and structure > also. When I look at coding examples, I see all kinds of formatting styles. > I even see the same functions called with different number of arguments. > Depends on what syntax you use. For a newbie it's extremely confusing. I'm > sticking with using OOP format. It's a steep mountain to get over while > learning Python but I think in the end, it will be worth the effort. A few > light bulbs have gone off in my head as I work on my project and I'm slowly > getting the big structural picture of how an OOP Python file works. > Obviously, I have a long ways to go but I'm retired and have no time > constraints so that is good. > > > > On Wednesday, April 7, 2021 at 11:17:06 PM UTC-7 Phil wrote: > > Thank you for reading this. > > It's been quite some time since I've done anything with WxPython and > while looking through some of my old code for ideas I see that I have > copied many different styles over the years and now I'm wondering which > is preferred: > > wx.Frame.__init__(self, None, wx.ID_ANY, "Pointer Test", size=(300,300)) > > or > > super(Mywin, self).__init__(parent, title=title, size=(500, 400)) > > The WxPython books that I have are quite dated and I suppose super is > the more recent and the preferred method. > > And what about this with the window name here instead of in the line > beginning with "super"? > > app = wx.App() > Mywin(None, 'Name_of_window') > app.MainLoop() > > -- > > Regards, > Phil > > -- > You received this message because you are subscribed to the Google Groups > "wxPython-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/wxpython-users/811e41b1-b82b-4d8d-91ad-d20e7e4d6d98n%40googlegroups.com > <https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fwxpython-users%2F811e41b1-b82b-4d8d-91ad-d20e7e4d6d98n%2540googlegroups.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7C%7Cc7fa6cab7c364c99843708d904fecd03%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637546314664179371%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=lP4fAPJwFz7Lx5ruI6fmnNlaVewVh%2FJELn7wxGLy%2FYk%3D&reserved=0> > . > -- You received this message because you are subscribed to the Google Groups "wxPython-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/wxpython-users/127ba567-fe19-4df5-8b41-f49dacae4760n%40googlegroups.com.