元组的reference前加个星号是什么意思?
<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>
回复内容:
我不会用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个星号就是接受任意多的关键字参数。
位置参数的举例:
假设你有这么个需求:把某函数接收到的除了第一个参数之外的所有参数输出。

关键字参数的举例:
不管你传入多少个关键字参数, 我都能在kw里找到.

接着来搞定这个类似于你在问题中的补充资料中的例子:
下面这个例子接受任意多的位置参数, 只输出第一个

咱们定义一个新元组,待会扔给mean函数。

2种用法的区别:


上面这个例子等价于:

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

s 是元组, 所以值不可修改。
我这里企图把位置参数里的第1个的值修改成5,然后输出。
使用元组看看:


我们换成列表看看:

用字符串看看:

我们这里拆了列表,元组,字符串变成位置参数再传进去。
可以看到不论如何。s 都是元组。
存储位置参数的这个 s 变量的类型并不取决于传入的参数的类型。
================= 再随便多写一些例子 =================:
普通函数:

文艺函数:

mean 遍历输出所有位置参数。s 是元组,别忘了。
咱们拆一下 列表 和 字符串。

拆元组:

拆字典:


拆字典它只会把[键]传进去,你是取不到值的。

====== 要接受拆字典的值。函数形参用2个星号就行了。=======
这里的意思是: 把所有的关键字参数都扔给s (不包括位置参数)


c前面的2个星号只是代表把 c 拆成关键字参数形式。
用的时候我们把字典拆成了关键字参数。
而函数接收的也是关键字参数。所以这个不会报错。
等价于这么用:

如果你用函数的时候只给了1个星号:

或是不给星号:

为什么??
放1个星号:
字典前面放个1个星号的确是拆开的意思。
1个星号拆字典会只是传入[键]。之前的一个例子证明过了。
问题是我们的函数mean它只接受关键字参数(回顾一下我们前面对mean的定义):

不放星号:
不放星号就代表你把那个字典直接扔进去了。
问题是函数形参**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())
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}
可参考
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>
... 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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Fujifilm-Fans waren kürzlich sehr gespannt auf die Aussicht auf die X-T50, da sie eine Neuauflage der preisgünstigen Fujifilm X-T30 II darstellte, die in der APS-C-Kategorie unter 1.000 US-Dollar recht beliebt geworden war. Leider ist die Fujifilm X-T50 auf den Markt gekommen

Ab sofort ist das Dasung Paperlike Color mit einer Bildschirmdiagonale von 12 Zoll erhältlich. Das vor einigen Monaten angekündigte Modell bietet eine sehr hohe Auflösung von 2.560 x 1.600 und damit insbesondere im Hinblick auf seine relative Schärfe eine hohe Schärfe

1. Einführung in den Bildschirmbefehl Screen ist ein Vollbild-Fenstermanager, der physische Terminals zwischen mehreren Prozessen (normalerweise interaktive Shells) multiplext. Jedes virtuelle Terminal bietet die Funktionalität eines DECVT100-Terminals sowie mehrere Steuerfunktionen von ANSIX3. 64 (ISO6429) und ISO2022-Standards (z. B. Zeilen einfügen/löschen und Unterstützung mehrerer Zeichensätze). Jedes virtuelle Terminal verfügt über einen Scrollback-Verlaufspuffer und einen Mechanismus zum Kopieren und Einfügen, der es dem Benutzer ermöglicht, Textbereiche zwischen Fenstern zu verschieben. Wenn screen aufgerufen wird, erstellt es ein Fenster mit der Shell (oder dem angegebenen Befehl) und macht Ihnen dann den Weg frei, damit Sie das Programm normal verwenden können. Dann können Sie jederzeit eine erstellen

Seit der Einführung des Google Pixel 8 (ca. 513 Euro bei Amazon, zeitlich begrenztes Angebot) gibt es immer mehr Berichte von Nutzern, die sich über vertikale Linien auf dem Display beschweren. Dies kann sich auf unterschiedliche Weise äußern – in der Farbe und

Detaillierte Erläuterung der CSS-Dimensionseigenschaften: Höhe und Breite In der Frontend-Entwicklung ist CSS eine leistungsstarke Stildefinitionssprache. Unter diesen sind Höhe und Breite die beiden grundlegendsten Dimensionsattribute, mit denen die Höhe und Breite des Elements definiert werden. In diesem Artikel werden diese beiden Eigenschaften im Detail analysiert und spezifische Codebeispiele bereitgestellt. 1. Höhenattribut Das Höhenattribut wird verwendet, um die Höhe eines Elements zu definieren. Sie können Pixel, Prozent oder verwenden

Der N1S Pro ist ein weiterer Projektor von JMGO, der ebenfalls ab sofort erhältlich ist. Konkret wird es bei Amazon zu einem Preis von 1999 US-Dollar angeboten. Der 4K-Projektor wird direkt von JMGO verkauft, den Versand übernimmt Amazon selbst. Das Modell ist derzeit auf Lager

Wir stoßen häufig auf dieses Problem. Wir verwenden SSH, um uns bei einem Remote-Linux-Server anzumelden und einige Langzeitaufgaben auszuführen. Aufgrund der Netzwerkinstabilität schlägt die Aufgabe jedoch fehl. Wie kann verhindert werden, dass der Befehl gestört wird, indem das Terminalfenster lokal geschlossen/die Netzwerkverbindung getrennt wird, nachdem der Befehl übermittelt wurde? Screen ist eine vom GNU-Projekt entwickelte kostenlose Software für die Befehlszeilen-Terminalumschaltung. Benutzer können diese Software verwenden, um gleichzeitig eine Verbindung zu mehreren lokalen oder Remote-Befehlszeilensitzungen herzustellen und frei zwischen ihnen zu wechseln. Screen kann als die Befehlszeilenschnittstellenversion eines Fenstermanagers betrachtet werden. Es bietet eine einheitliche Oberfläche und entsprechende Funktionen zur Verwaltung mehrerer Sitzungen. Methode: 1. Überprüfen Sie, ob auf der YUM-Quelle #yumlistscreen ein Bildschirminstallationspaket vorhanden ist

jQuery ist eine in der Webentwicklung weit verbreitete JavaScript-Bibliothek, die Entwicklern viele praktische Methoden zum Bearbeiten und Verarbeiten von Webseitenelementen bietet. In der tatsächlichen Entwicklung müssen wir häufig die Attribute von Webseitenelementen bearbeiten. Eine der häufigsten Anforderungen besteht darin, das Höhenattribut des Elements zu entfernen. In diesem Artikel stellen wir vor, wie Sie mit jQuery schnell das Höhenattribut eines Elements entfernen und stellen spezifische Codebeispiele bereit. Um das Höhenattribut eines Elements zu entfernen, können Sie jQu verwenden
