Jadual Kandungan
回复内容:
Rumah pembangunan bahagian belakang Tutorial Python 元组的reference前加个星号是什么意思?

元组的reference前加个星号是什么意思?

Jun 06, 2016 pm 04:24 PM
height screen

<span class="n">rect</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">screen</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">screen</span><span class="o">.</span><span class="n">height</span><span class="p">())</span>  
<span class="n">pixbuf</span> <span class="o">=</span> <span class="n">Gdk</span><span class="o">.</span><span class="n">pixbuf_get_from_window</span><span class="p">(</span><span class="n">rootwin</span><span class="p">,</span> <span class="o">*</span><span class="n">rect</span><span class="p">)</span><span class="c">#其中*rect是什么?</span>
Salin selepas log masuk

回复内容:

我不会用PyGObject, 纯讨论星号参数这个语法.

类似问题(也许对你有帮助):
定义函数def func(**kwargs):print kwargs调用函数的时候 一定要func(a=1,b=2,c=3)这样吗?dict_t={'a':1,'b':2,'c':3}不能直接传字典吗?例如func(dict_t)。有什么好方法吗?

Python 参数知识(变量前加星号的意义)



咱们先搞定星号参数的含义以及2个例子:

在参数名之前使用1个星号,就是让函数接受任意多的位置参数。
2个星号就是接受任意多的关键字参数。


位置参数的举例:
假设你有这么个需求:把某函数接收到的除了第一个参数之外的所有参数输出。
元组的reference前加个星号是什么意思?


关键字参数的举例:
不管你传入多少个关键字参数, 我都能在kw里找到. 元组的reference前加个星号是什么意思?




接着来搞定这个类似于你在问题中的补充资料中的例子:


下面这个例子接受任意多的位置参数, 只输出第一个
元组的reference前加个星号是什么意思?(这里的 s 的类型是元组)


咱们定义一个新元组,待会扔给mean函数。
元组的reference前加个星号是什么意思?

2种用法的区别: 元组的reference前加个星号是什么意思?

元组的reference前加个星号是什么意思?可以看出,用了星号之后,就把元组 a 给解包(unpack)了。拆成一个个参数扔进去了。
上面这个例子等价于: 元组的reference前加个星号是什么意思?




================== 2013-2-26更新 ================

元组的reference前加个星号是什么意思?
s 是元组, 所以值不可修改。
我这里企图把位置参数里的第1个的值修改成5,然后输出。


使用元组看看:
元组的reference前加个星号是什么意思? 元组的reference前加个星号是什么意思?
我们换成列表看看: 元组的reference前加个星号是什么意思?
用字符串看看:
元组的reference前加个星号是什么意思?
我们这里拆了列表,元组,字符串变成位置参数再传进去。
可以看到不论如何。s 都是元组。
存储位置参数的这个 s 变量的类型并不取决于传入的参数的类型。




================= 再随便多写一些例子 =================:
普通函数:
元组的reference前加个星号是什么意思?
文艺函数: 元组的reference前加个星号是什么意思?





mean 遍历输出所有位置参数。s 是元组,别忘了。
咱们拆一下 列表 和 字符串。 元组的reference前加个星号是什么意思?
拆元组: 元组的reference前加个星号是什么意思?


拆字典: 元组的reference前加个星号是什么意思? 元组的reference前加个星号是什么意思?


拆字典它只会把[键]传进去,你是取不到值的。 元组的reference前加个星号是什么意思?



====== 要接受拆字典的值。函数形参用2个星号就行了。=======

这里的意思是: 把所有的关键字参数都扔给s (不包括位置参数)
元组的reference前加个星号是什么意思? 元组的reference前加个星号是什么意思?用函数时,
c前面的2个星号只是代表把 c 拆成关键字参数形式。

用的时候我们把字典拆成了关键字参数。
而函数接收的也是关键字参数。所以这个不会报错。


等价于这么用: 元组的reference前加个星号是什么意思?(没报错吧哈哈。)



如果你用函数的时候只给了1个星号:
元组的reference前加个星号是什么意思?
或是不给星号:
元组的reference前加个星号是什么意思?都是会报错的。


为什么??

放1个星号:
字典前面放个1个星号的确是拆开的意思。
1个星号拆字典会只是传入[键]。之前的一个例子证明过了。

问题是我们的函数mean它只接受关键字参数(回顾一下我们前面对mean的定义): 元组的reference前加个星号是什么意思?s 里面啥也没有啊。 输出啥? 报错!


不放星号:
不放星号就代表你把那个字典直接扔进去了。
问题是函数形参**s只接受关键字参数。
s 里面还是啥也没有, 报错!



(所有的举例所使用到的 函数名 参数名 都是随便取的, 没有什么特殊意义.)
感觉自己举例的还不是很好,如果哪里把你弄迷糊了。
欢迎在评论区讨论. :)



扩展阅读环节:

StackOverflow 上解释星号语法的问题:
syntax - Python: Once and for all. What does the Star operator mean in Python?

引用传值的问题:
Python: How do I pass a variable by reference? 表示把这个参数展开传进去。等价于:
pixbuf = Gdk.pixbuf_get_from_window(rootwin, 0, 0, screen.width(), screen.height())
Salin selepas log masuk
调用(caller)
func(*sequence) Pass all objects in sequence as individual positional arguments
seq = [1,2,3]
func(*seq) -> func(1, 2, 3)

func(**dict) Pass all key/value pairs in dict as individual keyword arguments
dict = {'a' = 1, 'b' = 2}
func(*dict) -> func(a = 1, b = 2)

函数定义的
def func(*name) Matches and collects remaining positional arguments in a tuple
func(1, 2, 3) -> name = [1, 2, 3]

def func(**name) Matches and collects remaining keyword arguments in a dictionary
func(a = 1, b= 2) -> dict = {'a' = 1, 'b' = 2}

可参考 Chapter 18. Arguments python里星号有两种意思
1. 定义函数时
一般情况下,函数的参数接受指定个数的参数,比如
<span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span>
    <span class="k">print</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span>
Salin selepas log masuk
推荐一篇post:Understanding '*', '*args', '**' and '**kwargs' >>> def test(*args, **kwargs):
... print args, kwargs

>>>a={"a":1, "b":2}

>>> test(a)
({'a': 1, 'b': 2},) {}
>>> test(*a) #这里等同于test('a', 'b')
('a', 'b') {}
>>> test(**a) #这里等同于test(a=1, b=2)
() {'a': 1, 'b': 2}

一个星号就是把一个序列拆解传入,如果变量本身是字典,会退化成key的序列。
两个星号就是把key-value拆解传入。
姑且就当是语法糖吧。 搬运工:1.2 解压可迭代对象赋值给多个变量
这个解压非常dedicate,具有很多优雅的技巧。
总结如下:
(1)
完全不需要tem中间变量的交换:
a,b =b,a
(2)
有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况Python并没有提供特殊的语法。 但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。
>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> _, shares, price, _ = data
Salin selepas log masuk
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jangkaan harga Fujifilm X-M5 meningkat apabila paparan swafoto yang bocor menambah kerumitan kepada barisan kamera yang dahulunya mampu dimiliki Jangkaan harga Fujifilm X-M5 meningkat apabila paparan swafoto yang bocor menambah kerumitan kepada barisan kamera yang dahulunya mampu dimiliki Sep 07, 2024 am 09:34 AM

Peminat Fujifilm baru-baru ini sangat teruja dengan prospek X-T50, kerana ia mempersembahkan pelancaran semula Fujifilm X-T30 II berorientasikan bajet yang telah menjadi agak popular dalam kategori sub-$1,000 APS-C. Malangnya, sebagai pelancaran Fujifilm X-T50

Dasung Paperlike Color 12: Monitor dengan skrin sentuh E Ink berwarna padat dan kini tersedia di seluruh dunia Dasung Paperlike Color 12: Monitor dengan skrin sentuh E Ink berwarna padat dan kini tersedia di seluruh dunia Jul 31, 2024 pm 08:35 PM

Dasung Paperlike Color dengan pepenjuru skrin 12 inci kini tersedia. Model itu, yang diumumkan beberapa bulan lalu, menawarkan resolusi yang sangat tinggi iaitu 2,560 x 1,600 dan oleh itu tahap ketajaman yang tinggi, terutamanya memandangkan hubungannya

Cara menggunakan arahan skrin Linux Cara menggunakan arahan skrin Linux May 23, 2023 pm 06:17 PM

1. Pengenalan kepada arahan skrin Skrin ialah pengurus tetingkap skrin penuh yang memultipleks terminal fizikal antara berbilang proses (biasanya cangkerang interaktif). Setiap terminal maya menyediakan kefungsian terminal DECVT100, serta beberapa fungsi kawalan ANSIX3. 64 (ISO6429) dan piawaian ISO2022 (cth. sisipkan/padam baris dan sokongan untuk set aksara berbilang). Setiap terminal maya mempunyai penimbal sejarah skrol balik dan mekanisme salin-tampal yang membolehkan pengguna mengalihkan kawasan teks antara tetingkap. Apabila skrin dipanggil, ia mencipta tetingkap yang mengandungi cangkerang (atau arahan yang ditentukan) dan kemudian menghalang anda supaya anda boleh menggunakan program ini secara normal. Kemudian pada bila-bila masa anda boleh membuat a

Masalah paparan Google Pixel 8: Program pembaikan membolehkan perkhidmatan percuma selama 3 tahun Masalah paparan Google Pixel 8: Program pembaikan membolehkan perkhidmatan percuma selama 3 tahun Jun 15, 2024 pm 06:50 PM

Sejak pelancaran GooglePixel8(lebih kurang.513eurosatAmazon,tawaran masa terhad),telah meningkatkan bilangan laporan daripada pengguna yang mengadu tentang garis menegak pada paparan.Ini boleh menampakkan dirinya dalam cara yang berbeza-warna dan

Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Oct 21, 2023 pm 12:42 PM

Penjelasan terperinci tentang sifat dimensi CSS: tinggi dan lebar Dalam pembangunan bahagian hadapan, CSS ialah bahasa definisi gaya yang berkuasa. Antaranya, ketinggian dan lebar ialah dua atribut dimensi paling asas, digunakan untuk menentukan ketinggian dan lebar elemen. Artikel ini akan menganalisis kedua-dua sifat ini secara terperinci dan memberikan contoh kod khusus. 1. Atribut ketinggian Atribut ketinggian digunakan untuk menentukan ketinggian sesuatu elemen. Anda boleh menggunakan piksel, peratusan atau

Projektor 4K baharu JMGO N1S Pro dilancarkan pada harga yang lebih rendah, dengan fungsi pintar dan perlindungan mata Projektor 4K baharu JMGO N1S Pro dilancarkan pada harga yang lebih rendah, dengan fungsi pintar dan perlindungan mata Sep 10, 2024 am 09:30 AM

N1S Pro ialah satu lagi projektor daripada JMGO, yang juga boleh didapati sekarang. Secara khusus, ia ditawarkan pada harga AS$1999 di Amazon. Projektor 4K dijual terus oleh JMGO, dengan Amazon mengendalikan penghantaran itu sendiri. Model itu ada dalam stok

Langkah-langkah untuk memasang Skrin pada CentOS 6.5 Langkah-langkah untuk memasang Skrin pada CentOS 6.5 Jan 01, 2024 am 11:17 AM

Kami sering menghadapi masalah ini Kami menggunakan SSH untuk log masuk ke pelayan Linux jauh dan menjalankan beberapa tugas jangka panjang Walau bagaimanapun, tugas itu gagal di tengah-tengah kerana ketidakstabilan rangkaian. Bagaimana untuk mengelakkan arahan daripada diganggu dengan menutup tetingkap terminal secara setempat/memutuskan sambungan rangkaian selepas arahan diserahkan? Skrin ialah perisian percuma yang dibangunkan oleh Projek GNU untuk penukaran terminal baris arahan. Pengguna boleh menggunakan perisian ini untuk menyambung ke berbilang sesi baris arahan setempat atau jauh pada masa yang sama dan bertukar antara sesi tersebut secara bebas. Skrin boleh dianggap sebagai versi antara muka baris arahan pengurus tetingkap. Ia menyediakan antara muka bersatu dan fungsi yang sepadan untuk menguruskan berbilang sesi. Kaedah: 1. Semak sama ada terdapat pakej pemasangan skrin pada sumber YUM #yumlistscreen

Bagaimana untuk mengalih keluar atribut ketinggian elemen dalam jQuery? Bagaimana untuk mengalih keluar atribut ketinggian elemen dalam jQuery? Feb 27, 2024 pm 01:24 PM

Bagaimana untuk mengalih keluar atribut ketinggian elemen dalam jQuery? Dalam pembangunan bahagian hadapan, kita selalunya perlu memanipulasi atribut gaya elemen. Antaranya, atribut ketinggian ialah atribut yang biasa digunakan untuk mengawal ketinggian sesuatu elemen. Dalam sesetengah kes, kita mungkin perlu mengalih keluar atribut ketinggian sesuatu elemen untuk memulihkannya kepada keadaan asalnya atau membenarkannya mengembangkan ketinggiannya secara automatik berdasarkan kandungan. Dalam jQuery, anda boleh mengalih keluar atribut ketinggian elemen melalui beberapa kaedah. Kaedah 1: Gunakan kaedah removeAttr().

See all articles