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>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 StringBuilder.append() 함수를 사용하여 문자열을 연결합니다. Java 프로그래밍에서 문자열 연결은 매우 일반적인 작업입니다. 문자열을 효율적으로 연결하기 위해 Java는 여러 문자열을 신속하게 결합할 수 있는 Append() 함수를 제공하는 StringBuilder 클래스를 제공합니다. StringBuilder는 String 클래스보다 사용하기 더 효율적인 가변 문자 시퀀스입니다. 많은 수의 문자열을 연결해야 할 경우 다음을 사용하십시오.

Python에서 add()는 목록 끝에 요소를 추가하는 데 사용되는 목록 개체의 메서드입니다. Append() 메소드는 목록 객체에만 사용할 수 있으며 다른 유형의 객체에는 사용할 수 없습니다. 또한,append() 메소드는 새 목록을 반환하지 않고 원래 목록을 직접 수정합니다.

추가는 한 파일의 내용을 다른 파일의 끝에 추가하는 데 일반적으로 사용되는 명령줄 도구입니다. 추가 명령의 사용법은 "append [옵션] 소스 파일 대상 파일"입니다. 여기서 소스 파일은 추가할 파일이고 대상 파일은 추가할 파일입니다.

StringBuilder 클래스의 Append() 메서드를 사용하여 Java에서 문자열을 연결하는 방법 문자열 연결은 Java에서 일반적인 작업입니다. 접합 프로세스 중에 문자열 추가를 위해 기본 String 클래스를 사용하는 경우 새 String 개체가 자주 생성되어 성능에 영향을 미칩니다. 이 문제를 해결하기 위해 Java는 문자열 접합 작업을 수행하는 StringBuilder 클래스를 제공합니다. StringBuilder 클래스는 Java 클래스 중 하나입니다.

인쇄 화면 키는 키보드 장치의 화살표 키에 있으며 "prtsc sysrq"라는 단어가 적혀 있으며 f12 오른쪽에 있습니다. "prtsc sysrq"라는 단어가 포함된 버튼이 없는 경우 "fn" 및 "insert(prt sc)"를 찾을 수 있습니다. 먼저 "fn"을 클릭한 다음 "insert(PRT sc)"를 클릭하면 인쇄 화면 스크린샷 기능을 구현할 수 있습니다. .

Python은 컴퓨터 프로그래밍을 더 간단하고 이해하기 쉽게 만들기 위해 설계된 인기 있는 프로그래밍 언어입니다. Python에서는 print 함수를 사용하여 콘솔에 텍스트를 출력하는 것이 기본적인 작업입니다. 이 기사에서는 Python의 인쇄 기능을 소개하고, 그 기능과 사용 예를 살펴보고, 기능 사용 방법을 더 잘 이해하는 데 도움이 되는 코드 예를 제공합니다. Python의 인쇄 기능은 텍스트와 변수 값을 출력하는 데 사용되는 내장 기능입니다. 구문은 매우 간단합니다. 당신은 단지

Python은 데이터 분석, 인공 지능, 웹 개발 및 기타 분야에서 널리 사용되는 간단하고 배우기 쉬운 고급 프로그래밍 언어입니다. Python에서 print는 결과나 디버깅 정보를 화면에 출력하는 데 흔히 사용되는 함수입니다. 이 기사에서는 인쇄 기능의 사용법을 자세히 소개하고 독자가 인쇄 기능을 더 잘 익힐 수 있도록 구체적인 코드 예제를 제공합니다. 첫째, 인쇄 기능은 여러 매개변수를 허용하고 이를 화면에 인쇄할 수 있습니다. 이러한 매개변수는 문자열, 정수, 부동 소수점 숫자 등일 수도 있고 심지어 변수일 수도 있습니다.

VB의 인쇄는 출력 문입니다. WINDOWS 그래픽 인터페이스에서는 이 문이 필요하지 않으며 VB.NET 버전에서는 인쇄 출력으로 인쇄가 더 이상 존재하지 않습니다.
