Python에서 흔하지 않은 5가지 암호 사용 요약

1. 소개

저는 5년 동안(2017년부터) 파이썬으로 프로그래밍을 해왔고, 최근까지 파이썬에서 다음과 같은 흔하지 않은 사용법을 몰랐는데, 이는 실로 사람들의 직관적 이해와 다릅니다.

더 이상 고민하지 않고 시작하겠습니다!

2. 클래스의 개인 변수는 진정한 개인 변수가 아닙니다.

다음과 같이 예제로 바로 이동하겠습니다.

class Dog():
    def __init__(self, name):
        self.__name = name
    @property
    def name(self):
        return self.__name

Dog클래스 에서 __name속성에는 getter메서드가 있지만 메서드는 없습니다 setter. 일반적인 이해에 따르면 사용자는 멤버 함수를 통해서만 속성 값을 name()읽을 수 있어야 하며 개체에 대한 새 이름을 직접 설정할 수는 없습니다. 그러나 그 개인 변수는 그렇게 개인적이지 않습니다.__nameDog

dog = Dog("rocky")
print(dog.__dict__)   # {
    
    '_Dog__name': 'rocky'}

위와 같이 __dict__클래스의 속성에는 개체의 모든 속성이 포함됩니다. 속성을 사용하여 __dict__액세스하지 않아야 하는 개인 변수 및 속성을 제어할 수도 있습니다.
샘플은 다음과 같습니다.

dog.__dict__["_Dog__name"] = "fifi"
print(dog.name)
# fifi 

3. Python의 무한 사용

키를 사용하여 inf무한대를 나타내며 코드는 다음과 같습니다.

a = float("inf")
b = float("-inf")
print(a, b)   # inf -inf

우리는 파이썬에서 무한히 큰(그리고 무한히 작은) 값을 만들 수 있습니다. 표시 가능한 각 값은 다음과 같이 inf보다 작고 -inf보다 큽니다.

print(10**100000 > float("inf"))      # False
print(-(10**10000) < float("-inf"))   # False

4. 클래스를 데코레이터로 사용할 수 있습니다.

누군가에게 인사하는 간단한 함수가 있다고 가정해 보겠습니다.

def hello(name):
    return "hello " + name
print(hello("fifi"))    # hello fifi

다음과 같이 데코레이터 클래스를 작성하여 hello 함수를 정의할 때 사용합시다.

class append():
    def __init__(self, char):
        self.char = char
    def __call__(self, function):
        def inner(*args):
            return function(*args) + self.char
        return inner
@append("!")
def hello(name):
    return "hello " + name
print(hello("fifi"))    # hello fifi!

함수에서 데코레이터를 여러 번 사용할 수도 있습니다.

@append("?")
@append("!")
def hello(name):
    return "hello " + name
print(hello("fifi"))    # hello fifi!?

5. 한자를 변수명으로 사용

하하하, 중국어 문자는 Python에서 변수 이름으로 사용할 수도 있습니다. 예를 들면 다음과 같습니다.

= 4= 5
print(+)    # 9

Python 언어에서 이 기능을 사용해 보지는 않았지만 사용한다면 알려주시기 바랍니다. 하지만 그다지 유용한 지식은 아닙니다(동료를 정말로 괴롭히고 싶지 않은 경우).

6. eval()을 사용하여 문자열에서 Python 코드 실행

Python내장 eval()함수를 사용하여 Python 코드를 문자열로 실행할 수 있습니다 . 코드는 다음과 같습니다.

x = 4
y = eval("x + 10")
print(y)    # 14

더 복잡한 예는 다음과 같습니다.

string = "print('hello world')"
eval(string)  # prints hello world
string = "1+2+3"
eval(string)  # returns 6

7. 요약

나는 최근까지 파이썬에서 이러한 흔하지 않은 사용법에 대해 몰랐고(아마도 알고 있어야 했지만 알고 있었을 것입니다) 이 기사가 도움이 되었으면 합니다.

참고

추천

출처blog.csdn.net/sgzqc/article/details/128980638