Python 使用 list 作为函数参数时,参数是否会初始化?
看到了这样一段代码:
def foo(a, b=[]): b.append(a) print b
回复内容:
<span class="o">>>></span> <span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">bar</span><span class="o">=</span><span class="p">[]):</span> <span class="o">...</span> <span class="k">return</span> <span class="n">bar</span> <span class="o">>>></span> <span class="n">foo</span><span class="o">.</span><span class="n">func_name</span> <span class="s">'foo'</span> <span class="o">>>></span> <span class="n">foo</span><span class="o">.</span><span class="n">func_defaults</span> <span class="p">([],)</span> <span class="o">>>></span> <span class="n">foo</span><span class="p">()</span> <span class="ow">is</span> <span class="n">foo</span><span class="o">.</span><span class="n">func_defaults</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="bp">True</span>
4. More Control Flow Tools
但是……
>>> def f(a, b=[]): ... b.append(a) ... print b ... >>> f(1) [1] >>> f(1) [1, 1] >>> def f(a, b=None): ... b = b if b is not None else [] ... b.append(a) ... print b ... >>> f(1) [1] >>> f(1) [1] >>> f(1) [1] >>> a = [] >>> b = [] >>> a.append(1) >>> b [] >>>

note, 建议了解一下 def foo(a=[])和 foo(a=[])的区别:前者是参数默认值,后者是keyword arguments. 还有这种def foo(*args, **kargs) 和 这种 foo(*args, **kargs), 都是有细微区别的。 不会的, 默认值之间是共享的, 只会创建一次, 并不会每次创建一个新的对象. 也就是说使用可变对象作为函数的默认值时会导致函数的混乱. 同理使用字典作为默认参数,会得出类似的返回.
<span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">k</span><span class="p">,</span><span class="n">v</span><span class="p">,</span> <span class="n">fdict</span><span class="o">=</span><span class="p">{}):</span> <span class="n">fdict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> <span class="k">print</span> <span class="n">fdict</span> <span class="n">foo</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span> <span class="n">foo</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Utilisez la fonction StringBuilder.append() de Java pour épisser des chaînes. En programmation Java, l'épissage de chaînes est une opération très courante. Afin de raccorder efficacement des chaînes, Java fournit la classe StringBuilder, dont la fonction append() peut rapidement joindre plusieurs chaînes. StringBuilder est une séquence de caractères variable plus efficace à utiliser que la classe String. Lorsque nous devons concaténer un grand nombre de chaînes, utilisez

En Python, append() est une méthode de l'objet liste utilisée pour ajouter un élément à la fin de la liste. Il convient de noter que la méthode append() ne peut être utilisée que pour les objets de liste et ne peut pas être utilisée pour d'autres types d'objets. De plus, la méthode append() modifiera directement la liste d'origine sans renvoyer de nouvelle liste.

Comment utiliser la méthode append() de la classe StringBuilder pour épisser des chaînes en Java L'épissage de chaînes est une opération courante en Java. Pendant le processus d'épissage, si vous utilisez la classe String de base pour ajouter des chaînes, de nouveaux objets String seront créés fréquemment, affectant ainsi les performances. Afin de résoudre ce problème, Java fournit la classe StringBuilder pour effectuer des opérations d'épissage de chaînes. La classe StringBuilder est l'une des classes Java

append est un outil de ligne de commande couramment utilisé pour ajouter le contenu d'un fichier à la fin d'un autre fichier. L'utilisation de la commande append est "append [option] fichier source fichier cible", où le fichier source est le fichier à ajouter et le fichier cible est le fichier à ajouter.

La touche d'impression d'écran se trouve sur les touches fléchées du clavier, avec les mots "prtsc sysrq" dessus, et est située à droite de f12. S'il n'y a pas de bouton avec le mot « prtsc sysrq », vous pouvez trouver « fn » et « insert (prt sc) », cliquez d'abord sur « fn », puis cliquez sur « insert (PRT sc) » pour réaliser la fonction de capture d'écran d'impression. .

Python est un langage de programmation populaire conçu pour rendre la programmation informatique plus simple et plus facile à comprendre. En Python, utiliser la fonction d'impression pour afficher du texte sur la console est une tâche basique. Dans cet article, nous présenterons la fonction d'impression de Python, explorerons ses capacités et ses exemples d'utilisation, et fournirons des exemples de code pour vous aider à mieux comprendre comment utiliser la fonction. La fonction d'impression de Python est une fonction intégrée utilisée pour afficher du texte et la valeur d'une variable. Sa syntaxe est très simple. Il te suffit de

Python est un langage de programmation de haut niveau simple et facile à apprendre, largement utilisé dans l'analyse de données, l'intelligence artificielle, le développement Web et d'autres domaines. En Python, print est une fonction couramment utilisée pour afficher des résultats ou des informations de débogage à l'écran. Cet article présentera en détail l'utilisation de la fonction d'impression et fournira des exemples de code spécifiques pour aider les lecteurs à mieux la maîtriser. Premièrement, la fonction d'impression peut accepter plusieurs paramètres et les imprimer à l'écran. Ces paramètres peuvent être des chaînes, des entiers, des nombres à virgule flottante, etc., ou encore des variables,

Imprimer en VB est une instruction de sortie. Sous l'interface graphique WINDOWS, cette instruction n'est pas nécessaire et dans la version VB.NET, Imprimer en tant que sortie d'impression n'existe plus.
