이 기사에서는 Python에서 문자열 상수를 변수로 변환하는 방법을 설명합니다. (예시 포함) 참고할만한 가치가 있으니 도움이 필요한 친구들이 참고하시면 좋을 것 같습니다.
이 글은 관련된 내용의 요점을 정리하고 이를 더 많은 학습 주제로 확장하는 것이 도움이 되기를 바랍니다.
1. 변수 이름을 동적으로 생성하는 방법은 무엇입니까?
M 학생의 질문은 다음과 같습니다.
죄송합니다. 질문하고 싶습니다. 목록 = ['A', 'B', '로 알려져 있습니다. C', 'D' ], 목록에 있는 요소의 이름을 딴 새 목록 A = [], B = [], C = [], D = []를 어떻게 얻을 수 있나요? 간단히 이해하자면, 이 질문의 의미는 문자열 내용을 다른 객체의 변수 이름으로 사용한다는 것입니다.
목록의 요소는 문자열입니다. 여기서 'A'-'D'는 상수이고 필요한 결과에서 A-D는 변수입니다.
상수를 변수로 직접 사용하도록 강제하면 오류가 보고됩니다.
>>> 'A' = [] ...SyntaxError: can't assign to literal
오류에 나오는
은 컴퓨터에서 일반적인 개념입니다. science, #🎜 🎜# 소스코드에서 고정된 값을 표현하는데 사용됩니다. 예를 들어 정수, 부동 소수점 숫자, 문자열과 같은 기본 유형은 리터럴입니다. literal
指的是字面量
리터럴 수량은 수량 자체를 의미하며, 이는 원자적 실체로 이해될 수 있으며 물론 값을 할당할 수 없습니다.
#🎜🎜 #최근에는 몇 가지가 있습니다. 이런 이유로 광고를 하는 사람들이 스터디 그룹에 몰래 들어왔습니다. 예를 들어 그룹의 질문을 사용하여 평가를 하는 등 검토 임계값을 높이기로 결정했습니다.
생각지도 못했던 첫 번째 학생 Q가 거의 아무 생각 없이 평가를 받게 되었는데, 위의 문제를 해결하기 위한 아이디어가 떠올랐습니다. 그런데 우연이 거의 동시에 그룹의 동급생 J가 또 다른 해결책을 생각해 냈습니다. (그는 그룹에서 토론을 보지 못했지만 Knowledge Planet의 기록을 보고 이 문제에 대해서만 알게 되었습니다.)
즉, 전날 밤에 해결이 불가능하다고 생각했던 문제가 다음날 실제로 두 가지 다른 해결책을 얻었습니다!
그럼 그들의 대답은 무엇일까요?
# J 同学的解答 >>> list1 = ['A', 'B', 'C', 'D'] >>> for i in list1: >>> globals()[i] = [] >>> A []
이 방법은 전역 네임스페이스를 수정하여 새 변수를 교묘하게 "정의"합니다. globals() 메소드는 사전을 꺼내는데, 문자열 'A'는 키 중 하나이며, 이 키는 바로 전역 네임스페이스의 변수로서 상수에서 변수로의 변환을 구현합니다.
데이터 구조 수준에서는 빈 목록 []이 해당 문자열 키 값에 값으로 바인딩되고, 응용 프로그램 수준에서는 변수 내용과 변수 이름이 함께 바인딩되어 사용됩니다.
이 답변을 보고 문득 지난달에
동적 변수 할당에 관한 "Traps of Dynamic Assignment in Python"이라는 글을 다시 게시한 것이 생각났습니다. 질문! 나는 globals()와 locals() 사용법의 차이점에만 초점을 맞춘 것 같지만 원래 용도를 실제로 파악하지는 못했습니다. J 동창이 그 글을 보고 이 방법을 배웠다고 하더군요. 재미있네요. 제가 진심으로 삼켰던 지식을 공유하고, 동급생 J가 이를 흡수하고 마스터했고, 마침내 피드백이 돌아와 문제를 해결했습니다.지식 공유의 매력을 실감합니다: 지식은 흐름 속에서 생명을 얻고 충돌 속에서 빛납니다.
동시에 나는 또한 상호 지원하는 학습 그룹의 이점을 진심으로 이해합니다.다른 사람에게 이익이 되는 사람은 자신에게도 이익이 되고, 서로 돕는 사람은 발전합니다. 함께.
3. 동적으로 코드를 실행하는 방법
Q는 다른 답변을 제공했습니다.# 🎜🎜## Q 同学的解答 >>> list1 = ['A', 'B', 'C', 'D'] >>> for i in list1: >>> exec(f"{i} = []") >>> A []
그의 작성 방법은 Python 3.6에서 도입된 f-strings 기능을 사용합니다. 실제로, exec() 메소드에서 받은 매개변수만 확인하면 됩니다. 변수 i의 문자열을 사용할 수 있습니다. 예를 들어 다음과 같이 작성합니다. # 以下代码可替换上例的第 4 行
exec(i + " = []")
# 或者:
exec("{} = []".format(i))
# 或者:
exec(' '.join([i, '= []']))
이러한 작성 방법의 차이점은 문자열 접합 방법의 차이일 뿐입니다. 서로 다른 방법 사이에 대해서는 "Python에서 문자열을 연결하는 7가지 방법에 대한 자세한 설명"을 참조하세요.
Q 同学这个答案的核心在于 exec() 方法,它是内置的,用途是执行储存在字符串或文件中的代码段。
它的基础用法如下:
>>> exec('x = 1 + 2') >>> x 3 # 执行代码段 >>> s = """ >>> x = 10 >>> y = 20 >>> sum = x + y >>> print(sum) >>> """ >>> exec(s) 30
看完了 exec() 的用法,我们再回来看 Q 同学的答案。for-循环中取出来的 i 是字符串,而拼接后的字符串经过 exec() 的处理,就获得了动态编写代码的效果。
也就是说,因为字符串常量的内容被当做有效代码而执行了,其中的 'A'-'D' 元素,就取得了新的身份,变成了最终的 A-D 变量名。
这个方法看起来很简单啊,可是由于 exec() 方法太生僻了,直到 Q 同学提出,我们才醒悟过来。
注意:在 Python3 中,exec() 是个内置方法;而在 Python2 中,exec 是个语句(statement),另外有个 execfile() 方法,两者相合并,就成了 Python3 中的 exec() 方法。本文使用的是 Python3。
4、总结
抽象一下最初的问题,它实际问的是“如何将字符串内容作为其它对象的变量名”,更进一步地讲是——“如何将常量转化为变量 ”。
使用直接进行赋值的静态方法,行不通。
两位同学提出的方法都是间接的动态方法:一个是动态地进行变量赋值,通过修改命名空间而植入变量;一个是动态地执行代码,可以说是通过“走后门”的方式,安插了变量。
两种方法殊途同归,不管是白猫还是黑猫,它们都抓到了老鼠。
这两种方法已经给我们带来了很有价值的启发,同时,因为它们,群内小伙伴们更是发散地讨论一些相关联的话题,例如:S 同学提出了另一种修改命名空间中变量的写法、L 同学提到了 eval() 的意义、eval() 与 exec() 的区别、我查到了为什么要慎用 eval() 、C 与 H 同学提到了 eval() 的安全用法……
위 내용은 Python에서 문자열 상수를 변수로 변환하는 방법은 무엇입니까? (예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까? HTML 또는 기타 마크 업 언어를 다룰 때는 정규 표현식이 종종 필요합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

WebStorm Mac 버전
유용한 JavaScript 개발 도구

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

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
