Python Forum
How do you make functions that take a variable that is not defined?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How do you make functions that take a variable that is not defined?
#1
I don't know exactly what this is called

toolbar.pack(side=TOP, fill=X)
Here above, you can see that TOP, X was passed as a value. (not "TOP", "X")
And those are, I assume, predefined by the library that produced that function.

How do you make functions that take that kind of value?
Reply
#2
It's called Default Argument
Example:
def foo(x, y=5):
    print(f'The sum is: {sum((x, y))}')
Now if i use this function i only need to give argument for x parameter.
y will always be 5 until give two arguments,then default value get overwritten.
>>> foo(4)
The sum is: 9
>>> foo(10)
The sum is: 15
>>> 
>>> foo(7, 7)
The sum is: 14
>>> foo(100, 599)
The sum is: 699
Reply
#3
(Sep-23-2018, 03:14 AM)snippsat Wrote: It's called Default Argument
Example:
def foo(x, y=5):
    print(f'The sum is: {sum((x, y))}')
Now if i use this function i only need to give argument for x parameter.
y will always be 5 until give two arguments,then default value get overwritten.
>>> foo(4)
The sum is: 9
>>> foo(10)
The sum is: 15
>>> 
>>> foo(7, 7)
The sum is: 14
>>> foo(100, 599)
The sum is: 699


That's not default argument. I know what default argument is.
Those variables were never defined but passed down into the function in capital letters.
Angry
Reply
#4
Or do you mean the fact that unquoted TOP and X are available as values? These have been defined somewhere. The convention is that any variable in all capitals is a global constant. So somewhere in the library it might define
TOP, BOTTOM, LEFT, RIGHT = 1, 2, 3, 4
X, Y = 1, 2
or any other convenient values for them.

If the code uses expressions like TOP+BOTTOM then they're probably defined as distinct powers of 2, so that all such sums are different values:
TOP, BOTTOM, LEFT, RIGHT = 1, 2, 4, 8
cross-posted as you were answering
Reply
#5
It sounds like you need to preface the variable identifier with the package name. Does this work:

toolbar.pack(side=toolbar.TOP, fill=toolbar.X)
Reply
#6
(Sep-24-2018, 09:42 AM)magic Wrote: That's not default argument. I know what default argument is.
Those variables were never defined but passed down into the function in capital letters.
This how Tkinter dos it,you should mention where code comes from to get better answers.
>>> from tkinter import LEFT, TOP, X, FLAT, RAISED
>>> TOP
'top'
>>> LEFT
'left'
>>> FLAT
'flat'
>>> X
'x'
So toolbar.pack(side=TOP, fill=X) is the same as toolbar.pack(side='top', fill='x')
So it could work fine as default argument to a function.

With toolbar.pack() they are passed in as key word arguments(**kwargs).
If look at method parameters in Tkinter code.
def pack_configure(self, cnf={}, **kw):
Example:
>>> def my_function(**kw):
...     print(kwargs)  
...     
>>> my_function(a=123, b="hello")
{'a': 123, 'b': 'hello'}
Reply
#7
Uppercase is typically used to indicate constants that have been set elsewhere.

When you call a function, you can specify the names of the parameters (i.e. the names in the function definition), for clarity (and to ignore ordering of arguments).

Arguments can be either actual values or variables (or constants, which are just variables).

def func(paramx, paramy, paramz=defaultz, ...):

func(paramx=valuex, paramy=valuey, paramz=valuez, ...)

Note. Sometimes actual values will not give you desired outcomes such as when a reference to a mutable object is required by the function that is intended to mutate the object. Using an actual value (e.g. an in-situ list) in such a case will mean there is no reference to the mutated object after the call is completed.
I am trying to help you, really, even if it doesn't always seem that way
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Question Variable not defined even though it is CoderMerv 3 248 Mar-28-2024, 02:13 PM
Last Post: Larz60+
  Variable is not defined error when trying to use my custom function code fnafgamer239 4 571 Nov-23-2023, 02:53 PM
Last Post: rob101
  Calling functions by making part of their name with variable crouzilles 4 814 Nov-02-2023, 12:25 PM
Last Post: noisefloor
  Printing the variable from defined function jws 7 1,276 Sep-03-2023, 03:22 PM
Last Post: deanhystad
  Whys is asterisk and random variable necessary in these functions? rrowhe4d 5 1,508 Aug-05-2022, 07:53 AM
Last Post: Gribouillis
  [variable] is not defined error arises despite variable being defined TheTypicalDoge 4 2,123 Apr-05-2022, 04:55 AM
Last Post: deanhystad
  Why built in functions are defined as class? quazirfan 5 2,773 Oct-23-2021, 01:20 PM
Last Post: Gribouillis
  How to make general functions for ecuations Mondata 6 2,754 Mar-11-2021, 09:15 PM
Last Post: Mondata
  Running scripts and location of saved interpreted user-defined classes and functions leodavinci1990 3 2,511 Aug-25-2020, 03:43 AM
Last Post: micseydel
  Function will not return variable that I think is defined Oldman45 6 3,501 Aug-18-2020, 08:50 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020