Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Python - odkazy na prázdné funkce

Ahoj,

hraju si s pythonem a narazil jsem na zvláštní věc. Já si ve svém souboru napíšu:


numbers = [1,5,4]
help(numbers)

a vypíšou se mi různé informace o zadaném argumentu numbers. To je v pořádku. Když ale v Pycharmu podržím CTRL+klik myší na funkci help, zobrazí se mi jen soubor builtins.py a v něm:


def help(): # real signature unknown; restored from __doc__
    """
    Define the builtin 'help'.
    
        This is a wrapper around pydoc.help that provides a helpful message
        when 'help' is typed at the Python interactive prompt.
    
        Calling help() at the Python prompt starts an interactive help session.
        Calling help(thing) prints help for the python object 'thing'.
    """
    pass

Když si ale udělám na tom druhém řádku breakpoint a jdu debugovat řádek po řádku, z toho mého souboru to nejde do toho builtins.py, ale do _sitenuiltins.py a hned to pydoc.py, kde je už ta opravdová funkce (resp. metoda) help() a tady už začíná ten "cirkus", který proběhne asi 100 nějakých metod a složí dohromady help popis pro zadaný objekt. :-D

Vím, u té "falešné" funkce (viz kód výše) je napsáno restored from __doc__, nějak nechápu, jak vlastně funguje to vytváření těchto "prázdných" funkcí, které ve skutečnosti vedou jinam. Dokázal by mi to, prosím, někdo jako začátečníkovi vysvětlit?

---

A ještě mám jednu otázku ohledně konvence psaní konstant. Je pravda, že by se konstanty měly psát velkými písmeny, ale pouze jen hned na začátku třídy a konstanty definované uvnitř metod by měly být malými písmeny?
Toto jsem někde četl nebo slyšel, ale nevím, jestli je to pravda. Nebo se konstanty píšou velkými písmeny vždy bez ohledu na jejich umístění?


class Test:
    NUMBER_ONE = 1

    def __init__(self):
        ...

    def my_def(self):
        INNER_STRING = "string 1"  # ok?
        inner_string = "string 2"  # ok?
        ...

Díky.

Předmět Autor Datum
Nenašly se žádné odpovědi.

Zpět do poradny Odpovědět na původní otázku Nahoru