Python のトリッキーな質問

PHPz
リリース: 2024-07-25 01:00:52
オリジナル
852 人が閲覧しました

過去 2 年間、私は主なプログラミング言語として Python を使用してきました。トリッキーな JavaScript の質問で行ったように、これは「深く掘り下げる」良い理由かもしれないと思いました。次の質問の中には、現在の仕事で対処する必要がある問題もあれば、ウェブからインスピレーションを得たものもありました。

それで、(Python の質問から) 心を吹き飛ばす準備はできていますか?

Tricky Python Questions

質問

注意 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 に進みます

答え

質問 1 の答え

あなたがこう言ったら:

{"a": "string"}
ログイン後にコピー
ログイン後にコピー

残念ながら、あなたは間違っています。答えは次のとおりです。

AttributeError: 'dict' object has no attribute 'a'
ログイン後にコピー

私と同じように、JavaScript から来た方は、アクセス辞書 (JavaScript のオブジェクト) は Javascript のようにドット単位ではなく、[] のみでアクセスでき、キーの中に "a" を設定します。

質問 1 に戻る

質問 2 の答え

あなたがこう言ったら:

{"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"})
ログイン後にコピー

詳細については、クラス内でインポートを使用することを確認できます。

質問 2 に戻る

質問 3 の答え

あなたがこう言ったら:

arg2 == 2
ログイン後にコピー

その通りです! Python では、引数を渡す方法が 3 つあります:

  • 議論自体によると:
def myFun(arg1):
   print(arg1)

myFun('arg1')
ログイン後にコピー
  • *args による - 引数のリストまたはタプル (可変数の非キーワード引数を Python 関数に渡すことができます):
def myFun(*arg1):
   print(*arg1)

my_tuple = ('arg1', 'arg2')
myFun(my_tuple)
ログイン後にコピー
  • により、kwargs は key=value 引数を渡すことができます (kwargs を使用すると、可変数のキーワード引数を Python 関数に渡すことができます) - 質問のように。 このテーマについてさらに詳しく知りたい場合は、ここで読むことができます: freecodecamp - Python で *args と **kwargs を使用する方法

質問 3 に戻る

質問 4 の答え

答えは次のとおりです:

[2, 3, 4]
ログイン後にコピー

スコープと割り当てを知っている人にとっては、これは非常に簡単な質問に思えるかもしれません。知らない人のために説明すると、Python は変数メモリを参照として保存するため、この場合、arr はメモリ内の参照を指します。関数は値を変更します (ただし参照は同じです)。 arr2 は arr の参照アドレスを取得しますが、値が変更された後です。

質問 4 に戻る

この記事をお読みいただきありがとうございます。楽しんで新しいことを学んでいただければ幸いです。ご質問やご提案がございましたら、コメントを残してください。

以上がPython のトリッキーな質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート