2/2/2021 Python for O&G Lecture 63: **kwargs operator - Colaboratory
Python for Oil and Gas
Website - https://petroleumfromscratchin.wordpress.com/
LinkedIn - https://www.linkedin.com/company/petroleum-from-scratch
YouTube - https://www.youtube.com/channel/UC_lT10npISN5V32HDLAklsw
# double start operator
# keyword argument
def func(**kwargs):
return kwargs
func(one = 1, two = 2, three = 3)
{'one': 1, 'three': 3, 'two': 2}
type(func(one = 1, two = 2, three = 3))
dict
/
2/2/2021 Python for O&G Lecture 63: **kwargs operator - Colaboratory
# just give positional argument here and see the results
func(1, 2, 3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-e0aac76a4982> in <module>()
1 # just give positional argument here and see the results
2
----> 3 func(1, 2, 3)
TypeError: func() takes 0 positional arguments but 3 were given
SEARCH STACK OVERFLOW
# make a dictionary using **kwargs which takes porosity, permeability and depth as keys
def func_2(**kwargs):
return kwargs
Code Text
func_2(por = 0.15, perm = 35, depth = 3500)
{'depth': 3500, 'perm': 35, 'por': 0.15}
# create a function which will loop in kwargs
def func_3(**abc):
for i, j in abc.items():
print(f'{i} is: {j}')
func_3(por = 0.15, perm = 35, depth = 3500)
/
2/2/2021 Python for O&G Lecture 63: **kwargs operator - Colaboratory
por is: 0.15
perm is: 35
depth is: 3500
# **kwargs with normal parameter
def func_4(a, b, **kwargs):
print(a)
print(b)
print(kwargs)
func_4(165, 465, por = 0.15, perm = 35, depth = 3500)
165
465
{'por': 0.15, 'perm': 35, 'depth': 3500}
# this time take normal parameter after the **kwargs
def func_5(**kwargs, a):
print(a)
print(kwargs)
func_4(165, por = 0.15, perm = 35, depth = 3500)
# In coming video, we will use *args, **kwargs, normal arguments all in one function and there we'll see the proper order of their positioning
/
2/2/2021 Python for O&G Lecture 63: **kwargs operator - Colaboratory
File "<ipython-input-14-34100b69241e>", line 5
def func_5(**kwargs, a):
^
SyntaxError: invalid syntax
SEARCH STACK OVERFLOW
Dictionary Unpacking
dict_1 = {
'por' : 0.14,
'perm': '40 md',
'depth': '2500 ft'
}
def func_6(**kwargs):
return kwargs
func_6(**dict_1)
{'depth': '2500 ft', 'perm': '40 md', 'por': 0.14}
/
2/2/2021 Python for O&G Lecture 63: **kwargs operator - Colaboratory