current position:Home>Parameter passing of Python function

Parameter passing of Python function

2022-01-30 19:12:30 Blind brother Python

Positional arguments

Positional parameters are the most common python How to pass the parameters of a function . According to the order defined by the parameters , Just use it in sequence .

def f(a, b, c, d):
	print(" Parameters a:", a)
	print(" Parameters b:", b)
	print(" Parameters c:", c)
	print(" Parameters d:", d)
 
#  According to the location , Pass parameters 
#  The first corresponds to the first , The last one corresponds to the last one 
f("a", "b", "c", "d")
 Copy code 

Default parameters

sometimes , We hope that some parameters can not be passed , It should have a default value , If we pass this parameter in the function call , Then use the parameters we passed , If the function is called , This parameter was not passed , Just use the default values .

def f(a, b, c="c", d="d"):
	print(" Parameters a:", a)
	print(" Parameters b:", b)
	print(" Parameters c:", c)
	print(" Parameters d:", d)
 
#  These three situations are the same 
f("a", "b")
f("a", "b", "c")
f("a", "b", "c", "d")
 
#  Use the parameters we passed 
f("a1", "b1", "c1", "d1")
 Copy code 

Be careful : After default parameters , You can no longer define location parameters . Because if the location parameter appears after the default parameter , There will be no way to know if the default parameter was passed

Variable parameters

Sometimes we don't know how many parameters we need , At this time, we can set it as a variable parameter . adopt * Set the variable name , Variable parameters can accept multiple position parameters , And form them into a tuple, using .

def f(*a):
	print(a)
 
f("a", "b") #  The result is ('a', 'b')
f("a", "b", "c") #  The result is ('a', 'b', 'c')
f("a", "b", "c", "d") #  The result is ('a', 'b', 'c', 'd')
 Copy code 

Be careful : When defining functions , Position parameter... Cannot appear after variable parameter , The following variable parameters are regarded as keyword parameters .

Key parameters

Variable parameter the parameter passed in has no name , therefore , If we need a parameter with a name , Can pass ** Variable names accept keyword parameters . Keyword parameters can be through key=value In the form of , Final , Will automatically form a dictionary .

def f(**a):
	print(a)
 
f(a=1, b=2, c=3) #  The result is {'a': 1, 'b': 2, 'c': 3}
 Copy code 

Parameter qualification

Common position parameters , Both can be used as position parameters , It can also be used as a keyword parameter . therefore ,python Parameter limiting method is added ,/ The previous parameter must be a positional parameter ,* The following parameters must be keyword parameters .

def f(a, /, b, c, *, d, e):
	print(a)
	print(b)
	print(c)
	print(d)
	print(e)
 
#  This is not allowed , because d and e Must be a keyword parameter 
# f("a", "b", "c", "d", "e") 
 
#  It is also not allowed , because a Must be a positional parameter 
# f(a="a", b="b", c="c", d="d", e="e")
 
#  The following methods are OK , And the effect is the same 
f("a", "b", "c", d="d", e="e")
f("a", "b", c="c", d="d", e="e")
f("a", b="b", c="c", d="d", e="e")
 
#  in addition , Because the keyword parameters are in no order , It's fine too 
f("a", e="e", b="b", d="d", c="c")
 Copy code 

summary

1, Positional parameters cannot be placed after default parameters , Cannot be placed after keyword parameters .

2, Ordinary parameters without restrictions can be used as location parameters or keyword parameters at the same time .

3, Use variable parameters * Variable name , Use unlimited number of keyword parameters ** Variable name .

4,/ The previous parameter must be a positional parameter ,/ To * The parameters between are both positional parameters , It is also a keyword parameter ,* Subsequent parameters must be keyword parameters .

5, Location parameters must be passed by location , Keyword parameters do not need to be passed by location , But you need to point out the name .

copyright notice
author[Blind brother Python],Please bring the original link to reprint, thank you.
https://en.pythonmana.com/2022/01/202201301912267659.html

Random recommended