In the last two years, I've used Python extensively as my main programming language. Dive into these tricky Python questions, inspired by real-world issues and online challenges, to test and enhance your coding skills.
So are you ready to get your mind blow away (from Python question)?
Questions
Notice 1!: To each question, there is an answer with an explanation (link below each item).
Notice 2!: For each question think what will be the output.
Question 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
Go to answer 1
Question 2
class Json:
def __init__(self, *args, **kwargs):
import json
def print_dict_as_json(self, obj):
print(json.dumps(obj))
example_json = Json()
example_json.print_dict_as_json({"a": "string"})
Go to answer 2
Question 3
def myFun(arg1, arg3, **kwargs):
for key, value in kwargs.items():
print("%s == %s" % (key, value))
my_dict = {'arg1':1, 'arg2': 2}
myFun(**my_dict, arg3=3)
Go to answer 3
Question 4
def add_to_all_1(arr):
for i in range(len(arr)):
arr[i] +=1
def my_func():
arr = [1,2,3]
add_to_all_1(arr)
arr2 = arr
print(arr2)
my_func()
Go to answer 4
Answers
Answer To Question 1
If you said:
{"a": "string"}
unfortunately, you are wrong, the answer is:
AttributeError: 'dict' object has no attribute 'a'
If you like me and came from javascript first, the access dictionary (object in Javascript) is not by dot like in Javascript, you can access only by []
, and inside the key you want to set "a"
.
Answer To Question 2
If you said:
{"a": "string"}
You are wrong again, the answer is:
...
NameError: name 'json' is not define
You may know the differences between local and global scope in Python (if not you should read this: Python Scope). The __init__
is a function, the import is inside a local scope so it doesn't know what is json
. You can fix it by import it globally like this:
import json
class Json:
def print_dict_as_json(self, obj):
print(json.dumps(obj))
example_json = Json()
example_json.print_dict_as_json({"a": "string"})
Or in a more advanced way:
class Json:
import json as json
def print_dict_as_json(self, obj):
print(self.json.dumps(obj))
example_json = Json()
example_json.print_dict_as_json({"a": "string"})
You can see using import inside class for more details.
Answer To Question 3
If you said:
arg2 == 2
You are right! In Python, we have 3 ways to pass an argument:
- By the argument itself:
def myFun(arg1):
print(arg1)
myFun('arg1')
- By *args - list or tuples of arguments ( allows us to pass a variable number of non-keyword arguments to a Python function):
def myFun(*arg1):
print(*arg1)
my_tuple = ('arg1', 'arg2')
myFun(my_tuple)
- By kwargs can pass key=value arguments (kwargs allows us to pass a variable number of keyword arguments to a Python function) - like in the question. If you want to read more about the subject you can read here: freecodecamp - How to Use *args and **kwargs in Python
Answer To Question 4
The answer is:
[2, 3, 4]
For some people who know scopes and assignments, it can seem a pretty easy question. For those who don't know, python saves variable memory as a reference, so in this case, the arr
will point to a reference in a memory -> the function will change the values (but still the same reference) -> arr2
will get the reference address of arr
but after values were modified.
Thank you for reading this article. I hope you enjoyed and learned new things. If you have any questions or suggestions, please leave a comment.
Top comments (0)