Soalan Sawa Rumit

PHPz
Lepaskan: 2024-07-25 01:00:52
asal
846 orang telah melayarinya

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)
Salin selepas log masuk

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"})
Salin selepas log masuk

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)
Salin selepas log masuk

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()
Salin selepas log masuk

Pergi ke jawapan 4

Jawapan

Jawab Soalan 1

Jika anda berkata:

{"a": "string"}
Salin selepas log masuk
Salin selepas log masuk

malangnya, anda salah, jawapannya ialah:

AttributeError: 'dict' object has no attribute 'a'
Salin selepas log masuk

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"}
Salin selepas log masuk
Salin selepas log masuk

Anda salah lagi, jawapannya ialah:

...
NameError: name 'json' is not define
Salin selepas log masuk

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"})
Salin selepas log masuk

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"})
Salin selepas log masuk

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

Kembali ke soalan 2

Jawab Soalan 3

Jika anda berkata:

arg2 == 2
Salin selepas log masuk

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

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

myFun('arg1')
Salin selepas log masuk
  • 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)
Salin selepas log masuk
  • 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]
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan