跟老齐学Python之总结参数的传递
就前面所讲,函数的基本内容已经完毕。但是,函数还有很多值得不断玩味的细节。这里进行阐述。
参数的传递
python中函数的参数通过赋值的方式来传递引用对象。下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。
def foo(p1,p2,p3,...)
这种方式最常见了,列出有限个数的参数,并且彼此之间用逗号隔开。在调用函数的时候,按照顺序以此对参数进行赋值,特备注意的是,参数的名字不重要,重要的是位置。而且,必须数量一致,一一对应。第一个对象(可能是数值、字符串等等)对应第一个参数,第二个对应第二个参数,如此对应,不得偏左也不得偏右。
>>> def foo(p1,p2,p3):
... print "p1==>",p1
... print "p2==>",p2
... print "p3==>",p3
...
>>> foo("python",1,["qiwsir","github","io"]) #一一对应地赋值
p1==> python
p2==> 1
p3==> ['qiwsir', 'github', 'io']
>>> foo("python")
Traceback (most recent call last):
File "
TypeError: foo() takes exactly 3 arguments (1 given) #注意看报错信息
>>> foo("python",1,2,3)
Traceback (most recent call last):
File "
TypeError: foo() takes exactly 3 arguments (4 given) #要求3个参数,实际上放置了4个,报错
def foo(p1=value1,p2=value2,...)
这种方式比前面一种更明确某个参数的赋值,貌似这样就不乱子了,很明确呀。颇有一个萝卜对着一个坑的意味。
还是上面那个函数,用下面的方式赋值,就不用担心顺序问题了。
>>> foo(p3=3,p1=10,p2=222)
p1==> 10
p2==> 222
p3==> 3
也可以采用下面的方式定义参数,给某些参数有默认的值
>>> def foo(p1,p2=22,p3=33): #设置了两个参数p2,p3的默认值
... print "p1==>",p1
... print "p2==>",p2
... print "p3==>",p3
...
>>> foo(11) #p1=11,其它的参数为默认赋值
p1==> 11
p2==> 22
p3==> 33
>>> foo(11,222) #按照顺序,p2=222,p3依旧维持原默认值
p1==> 11
p2==> 222
p3==> 33
>>> foo(11,222,333) #按顺序赋值
p1==> 11
p2==> 222
p3==> 333
>>> foo(11,p2=122)
p1==> 11
p2==> 122
p3==> 33
>>> foo(p2=122) #p1没有默认值,必须要赋值的,否则报错
Traceback (most recent call last):
File "
TypeError: foo() takes at least 1 argument (1 given)
def foo(*args)
这种方式适合于不确定参数个数的时候,在参数args前面加一个*,注意,仅一个哟。
>>> def foo(*args): #接收不确定个数的数据对象
... print args
...
>>> foo("qiwsir.github.io") #以tuple形式接收到,哪怕是一个
('qiwsir.github.io',)
>>> foo("qiwsir.github.io","python")
('qiwsir.github.io', 'python')
上一讲中已经有例子说明,可以和前面的混合使用。此处不赘述。
def foo(**args)
这种方式跟上面的区别在于,必须接收类似arg=val形式的。
>>> def foo(**args): #这种方式接收,以dictionary的形式接收数据对象
... print args
...
>>> foo(1,2,3) #这样就报错了
Traceback (most recent call last):
File "
TypeError: foo() takes exactly 0 arguments (3 given)
>>> foo(a=1,b=2,c=3) #这样就可以了,因为有了键值对
{'a': 1, 'c': 3, 'b': 2}
下面来一个综合的,看看以上四种参数传递方法的执行顺序
>>> def foo(x,y=2,*targs,**dargs):
... print "x==>",x
... print "y==>",y
... print "targs_tuple==>",targs
... print "dargs_dict==>",dargs
...
>>> foo("1x")
x==> 1x
y==> 2
targs_tuple==> ()
dargs_dict==> {}
>>> foo("1x","2y")
x==> 1x
y==> 2y
targs_tuple==> ()
dargs_dict==> {}
>>> foo("1x","2y","3t1","3t2")
x==> 1x
y==> 2y
targs_tuple==> ('3t1', '3t2')
dargs_dict==> {}
>>> foo("1x","2y","3t1","3t2",d1="4d1",d2="4d2")
x==> 1x
y==> 2y
targs_tuple==> ('3t1', '3t2')
dargs_dict==> {'d2': '4d2', 'd1': '4d1'}
通过上面的例子,看官是否看出什么名堂了呢?

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Pengoptimuman Penghantaran ialah ciri yang membantu Kemas Kini Windows dan Gedung Windows berjalan dan menyampaikan kemas kini dengan lebih pantas. Fail cache dalam Pengoptimuman Penghantaran sepatutnya dipadamkan selepas beberapa ketika, tetapi bagi sesetengah pembaca kami, fail tersebut terus menumpuk dan mengambil ruang yang tidak diperlukan. Adakah selamat untuk memadamkan fail pengoptimuman penghantaran? Ya, adalah selamat untuk memadam fail pengoptimuman penghantaran, dan dalam artikel ini, anda akan mengetahui betapa mudahnya untuk melakukannya dalam Windows 11. Walaupun tidak disyorkan untuk memadamkan fail pengoptimuman penghantaran secara manual, anda boleh melakukannya secara automatik. Bagaimana untuk memadam fail pengoptimuman penghantaran pada Windows 11? Klik bar carian, taip Pembersihan Cakera dan buka alat daripada hasil carian. Jika anda mempunyai berbilang pemacu, pilih pemacu dengan sistem anda (biasanya C:

Ciri baharu versi PHP5.4: Cara menggunakan parameter pembayang jenis boleh panggil untuk menerima fungsi atau kaedah boleh panggil Pengenalan: Versi PHP5.4 memperkenalkan ciri baharu yang sangat mudah - anda boleh menggunakan parameter pembayang jenis boleh panggil untuk menerima fungsi atau kaedah boleh panggil . Ciri baharu ini membenarkan fungsi dan kaedah untuk menentukan secara langsung parameter boleh panggil yang sepadan tanpa semakan dan penukaran tambahan. Dalam artikel ini, kami akan memperkenalkan penggunaan pembayang jenis boleh panggil dan memberikan beberapa contoh kod,

Parameter produk merujuk kepada maksud atribut produk. Sebagai contoh, parameter pakaian termasuk jenama, bahan, model, saiz, gaya, fabrik, kumpulan yang berkenaan, warna, dsb. parameter makanan termasuk jenama, berat, bahan, nombor lesen kesihatan, parameter perkakas rumah yang berkenaan; termasuk jenama, saiz, warna, tempat asal, voltan yang berkenaan, isyarat, antara muka dan kuasa, dsb.

Pemeriksaan keselamatan jenis parameter C++ memastikan bahawa fungsi hanya menerima nilai jenis yang dijangkakan melalui semakan masa kompilasi, semakan masa jalan dan penegasan statik, menghalang tingkah laku yang tidak dijangka dan ranap program: Pemeriksaan jenis masa kompilasi: Pengkompil menyemak keserasian jenis. Semakan jenis masa jalan: Gunakan dynamic_cast untuk menyemak keserasian jenis dan buang pengecualian jika tiada padanan. Penegasan statik: Tegaskan keadaan jenis pada masa penyusunan.

Semasa proses pembangunan, kami mungkin menghadapi mesej ralat sedemikian: PHPWarning: in_array()expectsparameter. Mesej ralat ini akan muncul apabila menggunakan fungsi in_array() Ia mungkin disebabkan oleh hantaran parameter fungsi yang salah. Mari kita lihat penyelesaian kepada mesej ralat ini. Pertama, anda perlu menjelaskan peranan fungsi in_array(): semak sama ada nilai wujud dalam tatasusunan. Prototaip fungsi ini ialah: in_a

i9-12900H ialah pemproses 14-teras Seni bina dan teknologi yang digunakan semuanya baharu, dan rangkaiannya juga sangat tinggi. Kerja keseluruhannya sangat baik, dan beberapa parameter telah dipertingkatkan terutamanya dan boleh membawa pengalaman yang sangat baik . Semakan penilaian parameter i9-12900H: 1. i9-12900H ialah pemproses 14 teras, yang mengguna pakai seni bina q1 dan teknologi proses 24576kb, dan telah dinaik taraf kepada 20 utas. 2. Kekerapan CPU maksimum ialah 1.80 ghz, yang bergantung terutamanya pada beban kerja. 3. Berbanding dengan harga, ia sangat sesuai Nisbah harga-prestasi adalah sangat baik, dan ia sangat sesuai untuk sesetengah rakan kongsi yang memerlukan penggunaan biasa. penilaian parameter i9-12900H dan markah larian prestasi

Fungsi hiperbola ditakrifkan menggunakan hiperbola dan bukannya bulatan dan bersamaan dengan fungsi trigonometri biasa. Ia mengembalikan parameter nisbah dalam fungsi sinus hiperbolik dari sudut yang dibekalkan dalam radian. Tetapi lakukan sebaliknya, atau dengan kata lain. Jika kita ingin mengira sudut daripada sinus hiperbolik, kita memerlukan operasi trigonometri hiperbolik songsang seperti operasi sinus songsang hiperbolik. Kursus ini akan menunjukkan cara menggunakan fungsi sinus songsang hiperbolik (asinh) dalam C++ untuk mengira sudut menggunakan nilai sinus hiperbolik dalam radian. Operasi arcsine hiperbolik mengikut formula berikut -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}, Di mana\:In\:is\:logaritma asli\:(log_e\:k)

Walaupun model bahasa berskala besar (LLM) mempunyai prestasi yang kukuh, bilangan parameter boleh mencecah ratusan bilion dengan mudah, dan permintaan untuk peralatan dan memori pengkomputeran adalah sangat besar sehingga syarikat biasa tidak mampu membelinya. Kuantisasi ialah operasi mampatan biasa yang mengorbankan beberapa prestasi model sebagai pertukaran untuk kelajuan inferens yang lebih pantas dan keperluan memori yang kurang dengan mengurangkan ketepatan berat model (seperti 32 bit hingga 8 bit). Tetapi untuk LLM yang mempunyai lebih daripada 100 bilion parameter, kaedah pemampatan sedia ada tidak dapat mengekalkan ketepatan model, dan juga tidak boleh berjalan dengan cekap pada perkakasan. Baru-baru ini, penyelidik dari MIT dan NVIDIA bersama-sama mencadangkan pengkuantitian pasca latihan (GPQ) tujuan umum.
