在過去的兩年裡,我一直使用Python作為我的主要程式語言。我認為這也許是「深入研究」的一個很好的理由,就像我在《棘手的 JavaScript 問題》中所做的那樣。接下來的一些問題是我在目前工作中需要處理的問題,其他問題則受到網路的啟發。
那麼你準備好讓你的頭腦大吃一驚了嗎(來自Python問題)?
注意1! :每個問題都有答案和解釋(每個項目下面有連結)。
注意2! :對於每個問題,思考輸出是什麼。
問題1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
前往答案1
問題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"})
前往回答2
問題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)
前往答案3
問題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()
前往回答4
如果你說:
{"a": "string"}
不幸的是,你錯了,答案是:
AttributeError: 'dict' object has no attribute 'a'
如果你像我一樣並且首先來自javascript,訪問字典(Javascript中的對象)不像Javascript中的點那樣,你只能通過[]訪問,並且在你想要設置“a”的鍵內。
回到問題1
如果你說:
{"a": "string"}
你又錯了,答案是:
... NameError: name 'json' is not define
您可能知道 Python 中本地作用域和全域作用域之間的差異(如果不知道,您應該閱讀以下內容:Python 作用域)。 __init__ 是一個 函數 ,導入位於本地範圍內,因此它不知道什麼是 json。您可以透過像這樣全域導入來修復它:
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"})
或更高級的方式:
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"})
您可以查看在類別中使用 import 以獲取更多詳細資訊。
回到問題2
如果你說:
arg2 == 2
你是對的!在 Python 中,我們有 3 種傳遞參數的方法:
def myFun(arg1): print(arg1) myFun('arg1')
def myFun(*arg1): print(*arg1) my_tuple = ('arg1', 'arg2') myFun(my_tuple)
回到問題3
答案是:
[2, 3, 4]
對於一些了解範圍和任務的人來說,這似乎是一個非常簡單的問題。對於那些不知道的人,python 將變數記憶體保存為引用,因此在這種情況下, arr 將指向記憶體中的引用-> 函數將更改值(但仍然是相同的引用) -> arr2 將取得arr的參考地址,但值被修改後。
回到問題4
感謝您閱讀本文。我希望你喜歡並學到新東西。如果您有任何疑問或建議,請留言。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3