Soalan Sawa Rumit

PHPz
PHPzasal
2024-07-25 01:00:52857semak imbas

Dalam dua tahun kebelakangan ini, saya telah menggunakan Python sebagai bahasa pengaturcaraan utama saya. Saya fikir mungkin ini sebab yang baik untuk "mendalam" seperti yang saya lakukan dalam Soalan JavaScript Tricky. beberapa soalan seterusnya ialah isu yang perlu saya tangani dalam pekerjaan semasa saya, yang lain diilhamkan oleh web.

Jadi adakah anda bersedia untuk membuat fikiran anda terpesona (daripada soalan Python)?

Tricky Python Questions

Soalan

Notis 1!: Untuk setiap soalan, terdapat jawapan dengan penjelasan (pautan di bawah setiap item).
Notis 2!: Untuk setiap soalan fikirkan apa yang akan menjadi output.

Soalan 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)

Pergi ke jawapan 1

Soalan 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"})

Pergi ke jawapan 2

Soalan 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)

Pergi ke jawapan 3

Soalan 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()

Pergi ke jawapan 4

Jawapan

Jawab Soalan 1

Jika anda berkata:

{"a": "string"}

malangnya, anda salah, jawapannya ialah:

AttributeError: 'dict' object has no attribute 'a'

Jika anda menyukai saya dan datang dari javascript dahulu, kamus akses (objek dalam Javascript) bukan dengan titik seperti dalam Javascript, anda boleh mengakses hanya dengan [], dan di dalam kunci yang anda mahu tetapkan "a".

Kembali kepada soalan 1

Jawab Soalan 2

Jika anda berkata:

{"a": "string"}

Anda salah lagi, jawapannya ialah:

...
NameError: name 'json' is not define

Anda mungkin tahu perbezaan antara skop tempatan dan global dalam Python (jika tidak anda harus membaca ini: Skop Python). __init__ ialah fungsi , import berada di dalam skop tempatan jadi ia tidak tahu apa itu json. Anda boleh membetulkannya dengan mengimportnya secara global seperti ini:

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"})

Atau dengan cara yang lebih maju:

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"})

Anda boleh melihat menggunakan import dalam kelas untuk mendapatkan butiran lanjut.

Kembali ke soalan 2

Jawab Soalan 3

Jika anda berkata:

arg2 == 2

Anda betul! Dalam Python, kita mempunyai 3 cara untuk meluluskan hujah:

  • Dengan hujah itu sendiri:
def myFun(arg1):
   print(arg1)

myFun('arg1')
  • Oleh *args - senarai atau tuple argumen ( membolehkan kami menghantar bilangan pembolehubah argumen bukan kata kunci kepada fungsi Python):
def myFun(*arg1):
   print(*arg1)

my_tuple = ('arg1', 'arg2')
myFun(my_tuple)
  • Oleh kwargs boleh lulus key=value arguments (kwargs membenarkan kami menghantar nombor pembolehubah argumen kata kunci kepada fungsi Python) - seperti dalam soalan. Jika anda ingin membaca lebih lanjut mengenai subjek anda boleh baca di sini: freecodecamp - Cara Menggunakan *args dan **kwargs dalam Python

Kembali kepada soalan 3

Jawab Soalan 4

Jawapannya ialah:

[2, 3, 4]

Bagi sesetengah orang yang mengetahui skop dan tugasan, ia boleh kelihatan seperti soalan yang agak mudah. Bagi mereka yang tidak tahu, python menyimpan memori berubah-ubah sebagai rujukan, jadi dalam kes ini, arr akan menunjuk kepada rujukan dalam memori -> fungsi akan menukar nilai (tetapi masih rujukan yang sama) -> arr2 akan mendapat alamat rujukan arr tetapi selepas nilai diubah suai.

Kembali ke soalan 4

Terima kasih kerana membaca artikel ini. Saya harap anda menikmati dan belajar perkara baru. Jika anda mempunyai sebarang soalan atau cadangan, sila tinggalkan komen.

Atas ialah kandungan terperinci Soalan Sawa Rumit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:tris Pengindeksan & PenghirisanArtikel seterusnya:tris Pengindeksan & Penghirisan