在过去的两年里,我一直使用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[&&&]
回答问题 4
[2, 3, 4]对于一些了解范围和任务的人来说,这似乎是一个非常简单的问题。对于那些不知道的人,python 将变量内存保存为引用,因此在这种情况下, arr 将指向内存中的引用 -> 函数将更改值(但仍然是相同的引用) -> arr2 将获取arr的参考地址,但值被修改后。
回到问题4
感谢您阅读本文。我希望你喜欢并学到新东西。如果您有任何疑问或建议,请留言。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3